Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWy1G-0005oM-7u for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 08:06:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jWy1F-0008FL-5D for pgadmin-hackers@arkaria.postgresql.org; Fri, 08 May 2020 08:06:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jWy1E-00084B-Mp for pgadmin-hackers@lists.postgresql.org; Fri, 08 May 2020 08:06:04 +0000 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jWy1A-0000QK-Jt for pgadmin-hackers@postgresql.org; Fri, 08 May 2020 08:06:03 +0000 Received: by mail-oi1-x230.google.com with SMTP id r66so7774628oie.5 for ; Fri, 08 May 2020 01:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LJq/ptxaS3jzEjNtgJaj5CsJhKj++e7S0XHx5epJxvw=; b=vlIoiLVsXnHo80PMwpD+6epRJLHdVbBEZa1zw/rW5dI4ZNJIDItjCEPYb7gKvhhNxa 34V6bDqOllcQlQcNKk3uTVGpo4QAOE7BPCRfMGDccBG7lRu73y8ooUpsCtu3BnxdUQpz EEXlvd22TBGPil6LV/Z3xJV3dLpLk4V0+QTCo5M5xJl2feswL9lapnAYkbLdIsj2dl6c h/4bfi0Lj7OumY/Qn9Wq76rXwAQKlRHd9Xll/8Nwh8Pw9QsTvzS6gDq/UOdFce1v57Za 6n/cLnkES08Bwy+BenB1J9uYLrw/tUjSwto4UowKeodlBL6RPVRZdHGFDYrUrwEie/cL 5Z7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LJq/ptxaS3jzEjNtgJaj5CsJhKj++e7S0XHx5epJxvw=; b=rTcBqrbaDli+eill/DLSKlgg4brGG2H09ExeR7jvmpUv4ds978+DjMFGlOne/XMowZ k7mee6kBS1IK+6QhSM3Qe8NZOm93TN3e0oER50lWzXats/IZLQ4SRcUAR0c1l6nmFGqr tdMK2x+P7LE6+jK7Azt0Cs4BHtxsEZyZ5AGPnR3PR4j9jm+lrpxBBXm59bGeCRJ9wW8J 1BLwLeBTtZ4+xeFod4ccOkAXdJTRW7p8AdHawe/mgdbsNsemxRRIfANKYvYglLbJ0yVr 0vP2Ga7H4iOcY33Su6GHgcr2i6cz96ODqx01VYFahtmA7+A58gKyaKWVcm/z796rWj0k vHfg== X-Gm-Message-State: AGi0Pub7d0ozdIxwoyZYbUywUioM+sQelEbtCrI7/sBC3mElhGyBY6cp EupV2FQY4P5FjZauoT3hK1oV8Rny4Py9/DldeolzvoltYYH2gb1zAWzB9NOWlTzyCJbBP3Q60v1 Z6pPJWxctA/yWwKytIBgoso9qY8ui3Mitae857MKLZpOafchm9CTEzrfLQabJw93mfxFrXWhmYY mJ08j+fj4AqOxeEO1NcPqG8nuDNA09bVNZVFOqr40212Ii0lDwR3ZVzDDjEA== X-Google-Smtp-Source: APiQypJ/ANMoOoaL/S5OfBsy0xRNkRFQFOO+Xxiwpju4ITSuKVB+o8s1jXEMu76IyhpjP2entRE7gkH21Z3/EmplcdA= X-Received: by 2002:aca:d9d7:: with SMTP id q206mr9208514oig.134.1588925159242; Fri, 08 May 2020 01:05:59 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yogesh Mahajan Date: Fri, 8 May 2020 13:35:23 +0530 Message-ID: Subject: Re: [pgAdmin 4 - Housekeeping #5255] Implement Selenium Grid using multi-threading & solenoid using current test framework To: Akshay Joshi , pgadmin-hackers Cc: Shubham Agarwal , navnath gadakh Content-Type: multipart/alternative; boundary="000000000000b1176805a51e771b" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000b1176805a51e771b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Please find the updates patch with above review comments. Patch adds below functionality to existing framework - 1.Ability to run features in parallel using solenoid(selenium + docker). a.Selenoid setup steps are included in /regression/README b.'python runtests.py --pkg feature_tests --parallel' will trigger parallel feature tests. 2.Removes dependency for pyperclip python module. 3.New script in ../tools/update_selenoid_browsers.py updates browser images at local selneoid server setup. Thanks, Yogesh Mahajan QA - Team EnterpriseDB Corporation Phone: +91-9741705709 On Tue, May 5, 2020 at 3:58 PM Akshay Joshi wrote: > Hi Yogesh > > Following are the review comments: > > - *pyjq* package is not required as we used it only in one place. A > result is a normal dictionary that can be easily looped through. > - Remove "*if (SUPPORT_SSH_TUNNEL is True and ...*" logic from > config.py, we have already removed that. > - Remove yarn.lock file. > - Remove *pyperclip *from the regression/requirements.txt as we are > not using it. > - Please mentioned the value of *pgAdmin_default_server *should not be > '*127.0.0.1*' in the README file even though everything runs on the > same machine. > - Please mentioned that if we set the value of the browser version is > *null* then selenoid will take the latest available browser version. > - Got the below error if selenoid_url is not provided: > - list index out of range > Unable to find Selenoid Status > > *test_config.json.in *: > > - "selenoid_info" should be renamed to "selenoid_config". Proper > alignment is required. > - "cross_Browsers" should be renamed to "cross_browsers" or > "run_on_browsers" or "run_tests_on_browsers". Provide entries for supp= orted > browsers with version set to null so that it will run on the latest br= owser > version. > - "selenoid_url": "Selenoid Url" should be changed to "selenoid_url": > "http://:4444/wd/hub". > > If you change the names in test_config.json.in then please update the > same in README as well. > > > On Mon, May 4, 2020 at 4:27 PM Yogesh Mahajan < > yogesh.mahajan@enterprisedb.com> wrote: > >> Hi Akshay, >> >> Please find the updated patch. >> >> Thanks, >> Yogesh Mahajan >> QA - Team >> EnterpriseDB Corporation >> >> Phone: +91-9741705709 >> >> >> On Mon, May 4, 2020 at 2:51 PM Akshay Joshi < >> akshay.joshi@enterprisedb.com> wrote: >> >>> Hi Yogesh >>> >>> The patch is not applied to the master branch. Can you please rebase an= d >>> send the patch again. >>> >>> On Fri, May 1, 2020 at 12:28 PM Yogesh Mahajan < >>> yogesh.mahajan@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find updated patch modified according to review comments - >>>> Patch implements below things - >>>> 1.Enable the current framework to provide option to execute Feature >>>> tests in parallel on selenium grid set up. >>>> - Addition of new switch to start parallel features tests. >>>> - New parameters with respect to selenoid in test_config.json.in >>>> - Addition of new script to check solenoid updates. >>>> >>>> >>>> >>>> Thanks, >>>> Yogesh Mahajan >>>> QA - Team >>>> EnterpriseDB Corporation >>>> >>>> Phone: +91-9741705709 >>>> >>>> >>>> On Tue, Apr 21, 2020 at 1:18 PM Shubham Agarwal < >>>> shubham.agarwal@enterprisedb.com> wrote: >>>> >>>>> Hi Yogesh, >>>>> Below are the review comments- >>>>> >>>>> 1. runtests.py >>>>> a. The exception traceback logic at line number 653 in >>>>> runtests.py is not correct since it is particular to the thread >>>>> but there is much more code in that block which can throw some >>>>> exception. >>>>> b. line number 447 -> The drop_database function will only try to >>>>> drop the database with the name which is newly created >>>>> at 431 line number, its probability is 1% instead of this you can >>>>> write a logic so that it will drop all the database which starts with= name >>>>> =E2=80=98acceptance_test_db'. >>>>> c. line 584 - Why we are including resql test case execution in GUI >>>>> execution logic. >>>>> d. Change the function name run_test as script name is also >>>>> runtests.py >>>>> >>>>> 2. test_utils.py >>>>> a. Remove the headless chrome code from get_remote_webdriver() in >>>>> test_utils.py since we are using solenoid and it is not required >>>>> anymore. >>>>> b. Create separate functions to instantiate the firefox driver >>>>> and chrome driver logic since the same code is used in multiple files= . >>>>> c. launch_url_in_browser() -> you can simplify the definition of the >>>>> function like: >>>>> retry =3D 60 >>>>> =EF=BB=BF *while *retry > 0: >>>>> try: >>>>> driver.get(url) >>>>> except WebDriverException: >>>>> retry -=3D 1 >>>>> 3. Execution logs are not printing as per the logic some time, I ran >>>>> the suite for two servers and attached are the execution logs. >>>>> 4. Readme - >>>>> Please provide the Valid selenoid URL to be provided in the >>>>> test_config.json, with all the steps mentioned in the readme it is no= t >>>>> clear. >>>>> Revisit the readme and write the missing steps. >>>>> 5. copy_selected_query_results_feature_tests.py- >>>>> Create the function to avoid duplicate code. The code for pasting the >>>>> values is repeating 8 times in the test code. >>>>> 6. Provide the valid docstring in newly introduced functions and also >>>>> valid comments while calling it. for ex.- _update_preference() functi= on is >>>>> introduced in pg_utilities_backup_restrore_test.py but from the >>>>> function name, it is not clear what preferences are going to update i= n it. >>>>> 7. test_index_constraint_add test case is failing due to the latest >>>>> change, please merge and update this test case >>>>> >>>>> On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh < >>>>> navnath.gadakh@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> I think I am not the right person to review this patch now as I >>>>>> already reviewed this code offline in the last week. I know the appr= oached >>>>>> Yogesh has followed, also given some review comments on it. >>>>>> Someone else please review it. >>>>>> >>>>>> Thanks! >>>>>> >>>>>> On Mon, Apr 13, 2020 at 2:49 PM Akshay Joshi < >>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Navnath >>>>>>> >>>>>>> Can you please review it? >>>>>>> >>>>>>> On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan < >>>>>>> yogesh.mahajan@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> Please find the attached patch for running *features tests* using >>>>>>>> solenoid(selenium grid + docker). >>>>>>>> KIndly review. >>>>>>>> To sun feature tests in parallel, required prerequisites can be >>>>>>>> checked in '~/web/regression/README' file. >>>>>>>> Also detailed instructions are added in the same file. >>>>>>>> After applying the patch, any existing process for execution of >>>>>>>> API/Features tests remains the same. >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Yogesh Mahajan >>>>>>>> QA - Team >>>>>>>> EnterpriseDB Corporation >>>>>>>> >>>>>>>> Phone: +91-9741705709 >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Thanks & Regards* >>>>>>> *Akshay Joshi* >>>>>>> >>>>>>> *Sr. Software Architect* >>>>>>> *EnterpriseDB Software India Private Limited* >>>>>>> *Mobile: +91 976-788-8246* >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Regards, >>>>>> Navnath Gadakh >>>>>> >>>>> >>>>> >>>>> -- >>>>> Thanks & Regards, >>>>> Shubham Agarwal >>>>> EnterpriseDB Corporation >>>>> >>>>> The Postgres Database Company >>>>> >>>> >>> >>> -- >>> *Thanks & Regards* >>> *Akshay Joshi* >>> >>> *Sr. Software Architect* >>> *EnterpriseDB Software India Private Limited* >>> *Mobile: +91 976-788-8246* >>> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > --000000000000b1176805a51e771b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the up= dates patch with above review comments.
Patch adds below function= ality to existing framework -=C2=A0
1.Ability to run features in = parallel using solenoid(selenium + docker).
=C2=A0 =C2=A0 =C2=A0a= .Selenoid=C2=A0setup steps are included in /regression/README
=C2= =A0 =C2=A0 =C2=A0b.'python runtests.py =C2=A0--pkg feature_tests --para= llel' will trigger parallel feature tests.
2.Removes dependen= cy for pyperclip python=C2=A0module.
3.New script in ../tools/upd= ate_selenoid_browsers.py updates=C2=A0browser images=C2=A0at local selneoid= server setup.


Thanks,
Yogesh Mahajan<= /div>
QA - Team
EnterpriseDB Corporation

Phone: += 91-9741705709


On Tue, May 5, 2= 020 at 3:58 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

Following are the revi= ew comments:
  • pyjq package is not required as = we used it only in one place. A result is a normal dictionary that can be e= asily looped=C2=A0through.
  • Remove "if (SUPPORT_SSH_TUNNEL i= s True and ..." logic from config.py, we have already removed that= .
  • Remove yarn.lock file.
  • Remove=C2=A0pyperclip from = the regression/requirements.txt as we are not using it.
  • Please ment= ioned the value of=C2=A0pgAdmin_default_server should not be '127.0.0.1' in the README file even though everything runs on the s= ame machine.
  • Please mentioned that if we set the value of the brows= er version is null then selenoid=C2=A0will take the latest available= browser version.
  • Got the below error if selenoid_url is not provid= ed:
    • list index out of range
      Unable to find Selenoid Status
  • "selenoid_info= " should be renamed to "selenoid_config". Proper alignment i= s required.
  • "cross_Browsers" should be renamed to "c= ross_browsers" or "run_on_browsers" or "run_tests_on_br= owsers". Provide entries for supported browsers with version set to nu= ll so that it will run on the latest browser version.
  • "selenoi= d_url": "Selenoid Url" should be changed to=C2=A0"selen= oid_url": "http://<IP address of Selenoid Installed machine>= ;:4444/wd/hub".
If you change the names in test_config.json.in then p= lease update the same in README as well.

=
On Mon, Ma= y 4, 2020 at 4:27 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com> w= rote:
Hi Akshay,

<= div>Please find the updated patch.

Thanks,
Yogesh Mahajan
QA - Team
=
EnterpriseDB Corporation

Phone: +91-9741705709


On Mon, May 4, 2020 at 2:51 PM Akshay Joshi &= lt;aksha= y.joshi@enterprisedb.com> wrote:
Hi=C2=A0Yogesh

The patch is not applied to the = master branch. Can you please rebase and send the patch again.
<= br>
On Fri,= May 1, 2020 at 12:28 PM Yogesh Mahajan <yogesh.mahajan@enterprisedb.com&g= t; wrote:
Hi,

Please find updated patch modified according to review comments=C2=A0-=C2= =A0
Patch implements below things=C2=A0-=C2=A0
1.Enable= the current framework to provide option to execute Feature tests in parall= el =C2=A0on selenium grid set up.
=C2=A0 =C2=A0- Addition of new = switch to start parallel features tests.
=C2=A0 =C2=A0- New param= eters with respect to selenoid in test_config.json.in
=C2=A0 =C2=A0- Addition o= f new script to check solenoid=C2=A0updates.


<= /div>

Thanks,<= div>Yogesh Mahajan
QA - Team
EnterpriseDB Corporat= ion

Phone: +91-9741705709


On = Tue, Apr 21, 2020 at 1:18 PM Shubham Agarwal <shubham.agarwal@enterprisedb.co= m> wrote:
Hi Yogesh,
Below are the review comments-

1. runtests.py
=C2=A0 = =C2=A0 a. The excepti= on traceback logic at line number 653 in runtests.py is not correct since i= t is particular to the thread
= but there is much more code in that block which can throw some exception.
b. line number 447 -> The drop_database functio= n will only try to drop the database with the name which is newly created <= /span>
at 431 line number, its probabi= lity is 1% instead of this you can write a logic so that it will drop all t= he database which starts with name =E2=80=98acceptance_test_db'.=
= =C2=A0 c. line 584 -= =C2=A0Why we are including resql test case execution in GUI execution logic= .
=C2=A0 =C2=A0 d.=C2=A0<= span style=3D"color:rgb(0,0,0);font-size:9pt">Change the function name run_= test as script name is also runtests.py

2. test_utils.py
=C2= =A0 =C2=A0 a.=C2=A0Remove the headless c= hrome code from get_remote_webdriver() in test_utils.py since we are using = solenoid and it is not required anymore.
=C2=A0 =C2=A0 b. Create separate functions to instantiate the firefox driver and c= hrome driver logic since the same code is used in multiple files.
c. launch_url_in_browser() -> you can simplify the definition = of the function like:
=C2=A0 =C2=A0=C2=A0retry =3D 60
=EF=BB=BF=C2=A0 =C2=A0 =C2=A0 =C2=A0 while=C2=A0retry > 0:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 try:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 driver.get(url)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 except WebDriverException:
=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retry -=3D 1
3. Execution logs are not printing as per the logic some time, I = ran the suite for two servers and attached are the execution logs.
4. Readme -
<= div> Please provide the Valid selenoid URL to = be provided in the test_config.json, with all the steps mentioned in the re= adme it is not clear.
= Revisit the readme and write the missing steps.
5. copy_selected_query_results_feature_tests.py-
Create the function to= avoid duplicate code. The code for pasting the values is repeating 8 times= in the test code.
6. Pr= ovide the valid docstring in newly introduced functions and also valid comm= ents while calling it. for ex.- _update_preference() function is
introduced in pg_utilities_back= up_restrore_test.py but from the function name, it is not clear what prefer= ences are going to update in it.
7. test_in= dex_constraint_add test case is failing due to the latest change, please me= rge and update this test case

<= /font>
On Thu, Apr 16, 2020 at 2:41 PM navnath gadakh= <n= avnath.gadakh@enterprisedb.com> wrote:
Hi,
=
I think I am not the right person to = review this patch now as I already reviewed this code offline in the last w= eek. I know the=C2=A0approached Yogesh has followed, also given some review= comments on it.
Someone = else please review it.=C2=A0

Thanks!

akshay.joshi@enterprisedb.com> wrote:
Hi Navnath

Can you please re= view it?

On Mon, Apr 13, 2020 at 2:40 PM Yogesh Mahajan <yogesh.maha= jan@enterprisedb.com> wrote:
Hi,
Please find the attached=C2=A0patch for running features t= ests using solenoid(selenium=C2=A0grid + docker).
KIndly review.
To sun feature tests in parallel, required prerequisites= can be checked in '~/web/regression/README' file.
Also detailed=C2=A0instructions are added= in the same=C2=A0file.
A= fter applying the patch, any existing process for execution of API/Features= =C2=A0tests remains the same.


Thanks,
Yogesh Mah= ajan
QA - Team
EnterpriseDB Corporation
Phone: +91-9741705709


--
Thanks & Regards=
A= kshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
Mobile: +91 976-788-8246


--
Regards,
Navnath = Gadakh


--
Thanks & Regards,
Shubham Agarwal
EnterpriseDB Corporation

The Postgres Database Company


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=
--000000000000b1176805a51e771b--