On Wed, 7 Aug 2019 at 14:54, Eyal Edri <ee...@redhat.com> wrote: > > > On Wed, Aug 7, 2019 at 1:24 PM Doron Fediuck <dfedi...@redhat.com> wrote: > >> >> >> On Tue, 12 Mar 2019 at 10:20, Martin Perina <mper...@redhat.com> wrote: >> >>> >>> >>> On Fri, Mar 8, 2019 at 12:36 PM Marcin Sobczyk <msobc...@redhat.com> >>> wrote: >>> >>>> Greg, >>>> >>>> that's a great finding and a very good starting point. >>>> >>>> If we want to stick with docker images and Firefox/Chrome testing, I >>>> still have some ideas, that would shorten the running time even more: >>>> >>>> - we do something like this: >>>> >>>> log("waiting %s sec for grid to initialize..." % GRID_STARTUP_DELAY) >>>> time.sleep(GRID_STARTUP_DELAY) >>>> >>>> this is very inefficient. We can change that to something like I >>>> wrote here (_wait_for_selenium_hub): >>>> >>>> >>>> https://gerrit.ovirt.org/#/c/98135/2/common/test-scenarios-files/selenium/navigation/selenium_on_engine.py >>>> >>>> This function probably needs some improvement (i.e. urllib3 spits >>>> out warnings on an unsuccessful connection attempt, so they would need to >>>> be silenced), but that's a far better approach than a simple sleep. >>>> >>>> - parallelize running Firefox and Chrome tests - there's no reason >>>> not to run them both at the same time. There's something called >>>> VectorThread in lago.utils. A simple example of usage can be found >>>> in '004_basic_sanity.py:955' (disk_operations function). This would >>>> have a nice side effect of getting rid of the ugly global >>>> ovirt_driver - each thread would have it's own. >>>> >>>> >>>> - maybe not a running-time improvement, but I think >>>> https://gerrit.ovirt.org/#/c/98127/ is still relevant - the way we >>>> call save_screenshot is ugly and much too verbose >>>> >>>> Right now, I have to switch my focus to some important stuff in VDSM - >>>> the OST patches were a continuation of a hackathon effort and something >>>> like a "side-project" ;) Still, I don't want the tread to die. I think >>>> there's a lot of room for improvements. I can rebase/improve some of my >>>> patches if you find them useful. Please keep me posted with your efforts! >>>> >>>> Regards, Marcin >>>> On 3/7/19 11:10 PM, Greg Sheremeta wrote: >>>> >>>> Marcin, >>>> >>>> It just dawned on me that the main reason 008's start_grid takes so >>>> long is that the docker images are fresh pulled every time. Several hundred >>>> MB, every time (ugh, sorry). We can and should cache them. What do you >>>> think about trying this before doing anything else? [it would also be a >>>> good time to update from actinium to the latest, iron.] >>>> >>>> @Barak Korren <bkor...@redhat.com> you once mentioned to me we should >>>> cache these if they are ok to cache (they are). How do we do that? >>>> >>>> >>> Gal/Gallit/Barak, so is there any way how to store those docker >>> containers within image of lago VM which runs OST tests? >>> >>>> >>>> Reviving this now since we have some containerization support for CI. >> Can we push this forward? >> > > Adding Barak, Gal and Daniel, IIRC we do have cache for container images > in STDCI, not sure if/how it works in OST. >
I think this was already discussed somewhere else a long time ago - the Selenium images should already be cached on our system at this point > > >> docker.io/selenium/node-chrome-debug 3.9.1-actinium 327adc897d23 >>>> 13 months ago *904 MB* >>>> docker.io/selenium/node-firefox-debug 3.9.1-actinium >>>> 88649b420bd5 13 months ago *814 MB* >>>> >>>> Greg >>>> >>>> >>>> On Tue, Mar 5, 2019 at 6:15 AM Greg Sheremeta <gsher...@redhat.com> >>>> wrote: >>>> >>>>> >>>>> On Tue, Mar 5, 2019 at 4:55 AM Marcin Sobczyk <msobc...@redhat.com> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> On 3/4/19 7:07 PM, Greg Sheremeta wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> Thanks for trying to improve the tests! >>>>>> >>>>>> I'm reluctant to give up Firefox sanity tests on every commit, >>>>>> though. In fact, I wanted to add Edge and Safari, because those are also >>>>>> supported browsers. Just today a Firefox only issue was reported, so they >>>>>> are valuable. >>>>>> >>>>>> Was the Firefox-only issue detected by basic suite or some other >>>>>> tests? >>>>>> >>>>> It was reported by a developer. Because GWT compiles permutations per >>>>> browser, and each browser therefore loads completely separate JavaScript >>>>> payloads, it's just too easy for it to break in one browser and be fine in >>>>> the other, so I'm really not ok to remove Firefox. >>>>> >>>>> If Admin Portal was React where there is a single JavaScript payload >>>>> that's shared among all browsers, then I'd consider it. >>>>> >>>>>> >>>>>> Did you consider either leaving a grid up permanently or perhaps >>>>>> using a third party like saucelabs? >>>>>> >>>>>> I did consider simply having our own grid for the OST. >>>>>> There's even a thread somewhere on ovirt-devel, where someone found >>>>>> OST trying to connect to one of my VMs in Tel Aviv, where my own grid was >>>>>> running :D >>>>>> I couldn't make a public demo though - OST executors couldn't see my >>>>>> VM in tlv. >>>>>> >>>>>> This approach has 2 big flaws: >>>>>> >>>>>> - it requires quite a lot of resources for the grid to always be >>>>>> there for us >>>>>> >>>>>> What about Saucelabs or another third party free tool? >>>>> >>>>> >>>>>> >>>>>> - it makes OST running times somehow undeterministic - >>>>>> situations, where WebDriver has to wait for Selenium hub/nodes to be >>>>>> free, >>>>>> will probably take place >>>>>> >>>>>> The way I see basic suite's UI sanity tests, is that they're exactly >>>>>> what they're called - sanity tests. >>>>>> We do trivial checks like "can we log in to the webadmin site", "can >>>>>> we go to 'virtual machines' sub-page". >>>>>> I'm not in favor of dropping these completely - I think they make >>>>>> sense, but I also think we can live with a trimmed-down version that >>>>>> saves >>>>>> a lot of time. >>>>>> As I said - AFAIK QE have their own Selenium grid, where they run >>>>>> more complex tests on the UI. >>>>>> >>>>> >>>>> Yes, OST basic_ui_sanity tests aren't "compatibility" tests. We're not >>>>> checking pixels or look. They are super simple "does the app load" tests, >>>>> are very valuable, and we're not dropping them. >>>>> >>>>> Greg >>>>> >>>>> Regards, Marcin >>>>>> >>>>>> >>>>>> >>>>>> Best wishes, >>>>>> Greg >>>>>> >>>>>> On Mon, Mar 4, 2019, 11:39 AM Marcin Sobczyk <msobc...@redhat.com> >>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> *TL; DR* Let's cut the running time of '008_basic_ui_sanity.py' by >>>>>>> more than 3 minutes by sacrificing Firefox and Chrome screenshots in >>>>>>> favor >>>>>>> of Chromium. >>>>>>> During the OST hackathon in Brno this year, I saw an opportunity to >>>>>>> optimize basic UI sanity tests from basic suite. >>>>>>> The way we currently run them, is by setting up a Selenium grid >>>>>>> using 3 docker containers, with a dedicated network... that's insanity! >>>>>>> (pun intended). >>>>>>> Let's a look at the running time of '008_basic_ui_sanity.py' >>>>>>> scenario ( >>>>>>> https://jenkins.ovirt.org/view/oVirt%20system%20tests/job/ovirt-system-tests_manual/4197/): >>>>>>> >>>>>>> >>>>>>> 01:31:50 @ Run test: 008_basic_ui_sanity.py: >>>>>>> 01:31:50 nose.config: INFO: Ignoring files matching ['^\\.', '^_', >>>>>>> '^setup\\.py$'] >>>>>>> 01:31:50 # init: >>>>>>> 01:31:50 # init: Success (in 0:00:00) >>>>>>> 01:31:50 # start_grid: >>>>>>> 01:34:05 # start_grid: Success (in 0:02:15) >>>>>>> 01:34:05 # initialize_chrome: >>>>>>> 01:34:18 # initialize_chrome: Success (in 0:00:13) >>>>>>> 01:34:18 # login: >>>>>>> 01:34:27 # login: Success (in 0:00:08) >>>>>>> 01:34:27 # left_nav: >>>>>>> 01:34:45 # left_nav: Success (in 0:00:18) >>>>>>> 01:34:45 # close_driver: >>>>>>> 01:34:46 # close_driver: Success (in 0:00:00) >>>>>>> 01:34:46 # initialize_firefox: >>>>>>> 01:35:02 # initialize_firefox: Success (in 0:00:16) >>>>>>> 01:35:02 # login: >>>>>>> 01:35:11 # login: Success (in 0:00:08) >>>>>>> 01:35:11 # left_nav: >>>>>>> 01:35:29 # left_nav: Success (in 0:00:18) >>>>>>> 01:35:29 # cleanup: >>>>>>> 01:35:36 # cleanup: Success (in 0:00:06) >>>>>>> 01:35:36 # Results located at >>>>>>> /dev/shm/ost/deployment-basic-suite-master/008_basic_ui_sanity.py.junit.xml >>>>>>> 01:35:36 @ Run test: 008_basic_ui_sanity.py: Success (in 0:03:45) >>>>>>> >>>>>>> Starting the Selenium grid takes 2:15 out of 3:35 of total running >>>>>>> time! >>>>>>> >>>>>>> I've investigated a lot of approaches and came up with something >>>>>>> like this: >>>>>>> >>>>>>> - install 'chromium-headless' package on engine VM >>>>>>> - download 'chromedriver' and 'selenium hub' jar and deploy them >>>>>>> in '/var/opt/' on engine's VM >>>>>>> - run 'selenium.jar' on engine VM from '008_basic_ui_sanity.py' >>>>>>> by using Lago's ssh >>>>>>> - connect to the Selenium instance running on the engine in >>>>>>> '008_basic_ui_sanity.py' >>>>>>> - make screenshots >>>>>>> >>>>>>> This series of patches represent the changes: >>>>>>> https://gerrit.ovirt.org/#/q/topic:selenium-on-engine+(status:open+OR+status:merged) >>>>>>> . >>>>>>> This is the new running time (https://jenkins.ovirt.org/view/oVirt >>>>>>> system tests/job/ovirt-system-tests_manual/4195/): >>>>>>> >>>>>>> 20:13:26 @ Run test: 008_basic_ui_sanity.py: >>>>>>> 20:13:26 nose.config: INFO: Ignoring files matching ['^\\.', '^_', >>>>>>> '^setup\\.py$'] >>>>>>> 20:13:26 # init: >>>>>>> 20:13:26 # init: Success (in 0:00:00) >>>>>>> 20:13:26 # make_screenshots: >>>>>>> 20:13:27 * Retrying (Retry(total=2, connect=None, read=None, >>>>>>> redirect=None, status=None)) after connection broken by >>>>>>> 'NewConnectionError('<urllib3.connection.HTTPConnection object at >>>>>>> 0x7fdb6004f8d0>: Failed to establish a new connection: [Errno 111] >>>>>>> Connection refused',)': /wd/hub >>>>>>> 20:13:27 * Retrying (Retry(total=1, connect=None, read=None, >>>>>>> redirect=None, status=None)) after connection broken by >>>>>>> 'NewConnectionError('<urllib3.connection.HTTPConnection object at >>>>>>> 0x7fdb6004fa10>: Failed to establish a new connection: [Errno 111] >>>>>>> Connection refused',)': /wd/hub >>>>>>> 20:13:27 * Retrying (Retry(total=0, connect=None, read=None, >>>>>>> redirect=None, status=None)) after connection broken by >>>>>>> 'NewConnectionError('<urllib3.connection.HTTPConnection object at >>>>>>> 0x7fdb6004fb50>: Failed to establish a new connection: [Errno 111] >>>>>>> Connection refused',)': /wd/hub >>>>>>> 20:13:28 * Redirecting http://192.168.201.4:4444/wd/hub -> >>>>>>> http://192.168.201.4:4444/wd/hub/static/resource/hub.html >>>>>>> 20:14:02 # make_screenshots: Success (in 0:00:35) >>>>>>> 20:14:02 # Results located at >>>>>>> /dev/shm/ost/deployment-basic-suite-master/008_basic_ui_sanity.py.junit.xml >>>>>>> 20:14:02 @ Run test: 008_basic_ui_sanity.py: Success (in 0:00:35) >>>>>>> (The 'NewConnectionErrors' is waiting for Selenium hub to be up and >>>>>>> running, I can silence these later). >>>>>>> And the screenshots are here: >>>>>>> https://jenkins.ovirt.org/view/oVirt%20system%20tests/job/ovirt-system-tests_manual/4195/artifact/exported-artifacts/screenshots/ >>>>>>> >>>>>>> *The pros:* >>>>>>> >>>>>>> - we cut the running time by more than 3 minutes >>>>>>> >>>>>>> *The cons:* >>>>>>> >>>>>>> - we don't get Firefox or Chrome screenshots - we get Chromium >>>>>>> screenshots (although AFAIK, QE has much more Selenium tests which >>>>>>> cover >>>>>>> both Firefox and Chrome) >>>>>>> - we polute the engine VM with 'chromium-headless' package and >>>>>>> deps (in total: 'chromium-headless', 'chromium-common', 'flac-libs' >>>>>>> and >>>>>>> 'minizip'), although we can remove these after the tests >>>>>>> >>>>>>> *Some design choices explained:* >>>>>>> >>>>>>> Q: Why engine VM? >>>>>>> >>>>>>> A: Because the engine VM already has 'X11' libs. We could install >>>>>>> 'chromium-headless' (and even other browsers) on our Jenkins executors, >>>>>>> but >>>>>>> that would mess them up a lot. >>>>>>> >>>>>>> Q: Why Chromium? >>>>>>> >>>>>>> A: Because it has a separate 'headless' package. >>>>>>> >>>>>>> Q: Why not use 'chromedriver' RPM in favor of >>>>>>> https://chromedriver.storage.googleapis.com Chromedriver builds? >>>>>>> >>>>>>> A: Because the RPM version pulls a lot of extra dependencies even on >>>>>>> the engine VM ('gtk3', 'cairo' etc.). Builds from the URL are the >>>>>>> offical >>>>>>> Google Chromedriver builds, they contain a single binary, and they work >>>>>>> for >>>>>>> us. >>>>>>> >>>>>>> *What still needs to be polished with the patches:* >>>>>>> >>>>>>> - Currently 'setup_engine_selenium.sh' script downloads each >>>>>>> time 'selenium.jar' and 'chromedriver.zip' (even with these >>>>>>> downloads we >>>>>>> get much faster set-up times) - we should bake these into the engine >>>>>>> VM >>>>>>> image template. >>>>>>> - 'selenium_hub_running' function in 'selenium_on_engine.py' is >>>>>>> hackish - an ability to run an ssh command with a context manager >>>>>>> (and >>>>>>> auto-terminate on it exits) should be part of Lago. Can be >>>>>>> refactored. >>>>>>> >>>>>>> Questions, comments, reviews are welcome. >>>>>>> >>>>>>> Regards, Marcin >>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Devel mailing list -- devel@ovirt.org >>>>>>> To unsubscribe send an email to devel-le...@ovirt.org >>>>>>> Privacy Statement: https://www.ovirt.org/site/privacy-policy/ >>>>>>> oVirt Code of Conduct: >>>>>>> https://www.ovirt.org/community/about/community-guidelines/ >>>>>>> List Archives: >>>>>>> https://lists.ovirt.org/archives/list/devel@ovirt.org/message/RLB2KSNJS4YKVMCDUUHOZJWBQDGJCXGZ/ >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> >>>>> GREG SHEREMETA >>>>> >>>>> SENIOR SOFTWARE ENGINEER - TEAM LEAD - RHV UX >>>>> >>>>> Red Hat NA >>>>> >>>>> <https://www.redhat.com/> >>>>> >>>>> gsher...@redhat.com IRC: gshereme >>>>> <https://red.ht/sig> >>>>> >>>> >>>> >>>> -- >>>> >>>> GREG SHEREMETA >>>> >>>> SENIOR SOFTWARE ENGINEER - TEAM LEAD - RHV UX >>>> >>>> Red Hat NA >>>> >>>> <https://www.redhat.com/> >>>> >>>> gsher...@redhat.com IRC: gshereme >>>> <https://red.ht/sig> >>>> >>>> _______________________________________________ >>>> Devel mailing list -- devel@ovirt.org >>>> To unsubscribe send an email to devel-le...@ovirt.org >>>> Privacy Statement: https://www.ovirt.org/site/privacy-policy/ >>>> oVirt Code of Conduct: >>>> https://www.ovirt.org/community/about/community-guidelines/ >>>> List Archives: >>>> https://lists.ovirt.org/archives/list/devel@ovirt.org/message/VH52GVG6V5SO34L56D7KETFX2HGIEPYR/ >>>> >>> >>> >>> -- >>> Martin Perina >>> Associate Manager, Software Engineering >>> Red Hat Czech s.r.o. >>> _______________________________________________ >>> Devel mailing list -- devel@ovirt.org >>> To unsubscribe send an email to devel-le...@ovirt.org >>> Privacy Statement: https://www.ovirt.org/site/privacy-policy/ >>> oVirt Code of Conduct: >>> https://www.ovirt.org/community/about/community-guidelines/ >>> List Archives: >>> https://lists.ovirt.org/archives/list/devel@ovirt.org/message/TP3EGSE65SNZXGASMWOEHHZES4R2RQEY/ >>> >> _______________________________________________ >> Devel mailing list -- devel@ovirt.org >> To unsubscribe send an email to devel-le...@ovirt.org >> Privacy Statement: https://www.ovirt.org/site/privacy-policy/ >> oVirt Code of Conduct: >> https://www.ovirt.org/community/about/community-guidelines/ >> List Archives: >> https://lists.ovirt.org/archives/list/devel@ovirt.org/message/KNKSMINVCBW4XI4KWOCPSBOVIWQQZ53R/ >> > > > -- > > Eyal edri > > He / Him / His > > > MANAGER > > CONTINUOUS PRODUCTIZATION > > SYSTEM ENGINEERING > > Red Hat <https://www.redhat.com/> > <https://red.ht/sig> > phone: +972-9-7692018 > irc: eedri (on #tlv #rhev-dev #rhev-integ #cp-devel) > -- Barak Korren RHV DevOps team , RHCE, RHCi Red Hat EMEA redhat.com | TRIED. TESTED. TRUSTED. | redhat.com/trusted
_______________________________________________ Devel mailing list -- devel@ovirt.org To unsubscribe send an email to devel-le...@ovirt.org Privacy Statement: https://www.ovirt.org/site/privacy-policy/ oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/devel@ovirt.org/message/U4BIJTUDUBNTBOI2F7Z7XW4FYCCH3RLQ/