grid router – scalable and fault tolerant solution for selenium grid
TRANSCRIPT
Grid Router – scalable and fault tolerant solution for grid
Mikhail Levin, Yandexhttps://github.com/seleniumkit/gridrouterhttps://github.com/seleniumkit/selenograph
Requirements for large Selenium grid
3
Selenium HubSelenium Node
Selenium Node
Selenium Node
4
Selenium HubSelenium Node
Selenium Node
Selenium Node
〉Reliability
〉Sacalability
〉Standart components
〉Access and resources management
Balance It!
Client side balancing
Selenium Hub
Selenium Hub
Selenium Hub
Selenium Hub
@test + browsers.xml
Selenium Hub
Selenium Hub
Selenium Hub
Selenium Hub
@test Runtime
browsers.xml
Client side balancing
Selenium Hub
Selenium Hub
Selenium Hub
Selenium Hub
@test Runtime
browsers.xml
Not standart
Client side balancing
PyTestJs+WebdriverIO
JunitJS+wd
KarmaJenkins
TeamCityAQuA
etc
Distributed selenium grid
Standart user API
!
Reliability and scalability
!
Access and resources management
Tests
Distrubuted selenium hub
Node
Node
Node
Hub
Hub
Hub
Router/Balancer
Standart API
〉Any number of heads
〉Any amount of browsers
〉No single point of failure
Fix size
Reliability and scalability
Selenium Hub
Selenium Hub
Selenium Hub
Selenium Hub
@test Runtime
browsers.xml
Standrart API + scalability
Grid-Router
Hub
Hub
HubTests Grid-Router
Grid-Router
Hub
Hub
Hub
SLB
Standrart API + scalability
SessionID magic5277a32df29c468653b5a6a7106eb91346e51aeb-c800-401e-1de6-3c9e52bb0831
46e51aeb-c800-401e-1de6-3c9e52bb0831
Hub location
Grid-Router
SLB
Grid-Router Grid-Router
Hub
Selenium sessionID
Hub configuration
Openstack VM - 2 core, 4Gbubuntu
Hub
xvfbNode + 1
xvfbNode + 1
… 5
newSessionWaitTimeout : 10000
Grid-Router
Hub
Hub
HubTests Grid-Router
Grid-RouterHub
Hub
Hub
SLB
Standrart API + scalability
Access and resources management
Quota_х.xml !
Basic http auth http://login:[email protected]:4444/wd/hub !
RouteServlet !
ProxyServlet
MyQuota.xml
Grid Router
Simple !
Join several hubs in one entry point !
Powerful !
With access management !
Scalable and reliable
Further development
Further development
Speed of search for available node !
Quoting by treads !
Reducing operational coasts !
User interface
Further development
Grid Router
Selenograph
+ hub status + browser availability + sessions amount + web front
+
Selenograph
Further development
Grid Router
Selenograph
+ sessions amount + web front
+
+
Grid Router Selenograph
«Difficult» browsers
Hardware + x86 + -gpu mesa
Main troubles 〉Appium stability 〉adb capacity 〉Broken emulators
Mac Mini
Hub - ?
vm
Appium + Xcode + 1 emulator
Appium + Xcode + 1 emulator
vm
Main troubles 〉Appium stability 〉Instruments stabilty 〉Speed 〉Costs
https://github.com/kybu/headless-selenium-for-win
Openstack VM - 2 cores, 4Gbwindows7
Hub
virtual desktop
Node + 1
… 4
desktop
virtual desktop
Node + 1
windows7
Hub
virtual desktop
Node + 1
… 4
desktop
virtual desktop
Node + 1
〉Do NOT use capability requireWindowFocus=true 〉switch off drug&drop 〉switch off spellchecker 〉switch off ClearType
Grid Router Selenograph
Mikhail Levin, Yandex
https://github.com/seleniumkit/gridrouterGrid router:
https://github.com/seleniumkit/selenographSelenograph:
https://github.com/seleniumkit
https://github.com/kybu/headless-selenium-for-winWin solution:
Thanks!