Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etwRl-0000X6-9t for pgadmin-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 14:23:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1etwRj-00055c-Gi for pgadmin-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 14:23:03 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etwRi-00055S-V7 for pgadmin-hackers@lists.postgresql.org; Thu, 08 Mar 2018 14:23:03 +0000 Received: from mail-io0-x244.google.com ([2607:f8b0:4001:c06::244]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1etwRe-0007JG-Gi for pgadmin-hackers@postgresql.org; Thu, 08 Mar 2018 14:23:01 +0000 Received: by mail-io0-x244.google.com with SMTP id e7so7231781ioj.1 for ; Thu, 08 Mar 2018 06:22:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3PGwYTx4FsT6cfLWL8kOAUMem2tpHIgzqZ4/514Rwns=; b=gjVtMCih+bx2g3xFKJGab0rICB6p6SeTo537sog2H9T0lGoLmmdypzzP6RF9nUjfFA E4zUoHl9EO15sJ9u1jEKRjJbn/rX2dxIm/sD3rSyX5nIQY2WjpFwz7ZLyiCYkysWY1bz bMzQGYnqHOH2kN8uVEsQsgRKnjf1tT+dvh4k9NIjl5EW7v3po9/FY1Vxjna/cOysnXyI 2bWM9tnpH3xe+ba48H8eKu8c1WRnhibgwFfMT6q3yUe+sbz83+00t2oReLSZv6hzyJz+ czPcC7MD1bZ2APLv0eI/UlRnkSRKmiJzcu3qsnbf7DAf1JkOmIXamDk2beG3nxyA6a5O f28A== 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=3PGwYTx4FsT6cfLWL8kOAUMem2tpHIgzqZ4/514Rwns=; b=UBD4X2FYpewAcXgnHkm/9Wg6GnDMWfYMEpPbJ+rMAGZI5ONaov/344Q8LCCG4h0lsw beANb+81XdkGqaciN+mGvg1uFd7Usvu/Ocn3QAW/YopPtU2BL6xX/9671gZ90mIdlRKf fmNrfMmxs5vpfQe86LJ/ie37Qpw9EEgakW768i3muEWgGSizqxlT8IZpemvuQlkhcJ0E bmoDqEBgk4mROu7anW9cY9grB+2pVXPPQ2vM4buUUaJHqYAiHgou5qHIb8POQYwbWL2y atfdcZ7mIBCH29hFiFkbUvczehJ+WEyOkUpECUoHAdGGeL3/NKX5gtP9FCdjNmpW8C0y LiaQ== X-Gm-Message-State: AElRT7HSRCoaAfHk6172zcZMMXV3AEoeoflQMaSTlJuI3B3hHGjkxapt sk+5/KJR0TfMfzoOX6h0vT7MBDtUk3uoncinBXnr8w== X-Google-Smtp-Source: AG47ELsEG3jYMSZSerbpfNq9joknCNzp4pLwL1P0hYR01BxlhPXhImWQNMvaDY6YK1BPPWgnyYgqpTzc8DAGpxOq0zw= X-Received: by 10.107.200.69 with SMTP id y66mr30705234iof.116.1520518976568; Thu, 08 Mar 2018 06:22:56 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Thu, 08 Mar 2018 14:22:45 +0000 Message-ID: Subject: Re: pgAdmin 4 commit: Support EXPLAIN on Greenplum. Fixes #3097 To: Khushboo Vashi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="94eb2c0b9ace79d56a0566e769ba" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --94eb2c0b9ace79d56a0566e769ba Content-Type: multipart/alternative; boundary="94eb2c0b9ace79d5660566e769b8" --94eb2c0b9ace79d5660566e769b8 Content-Type: text/plain; charset="UTF-8" Hello Khushboo, Completely forgot about this python "feature"....... Attached is the fix. Just as a side question, does anyone else feel the pain of wanting to run a single test using a IDE or the command line and not being able to? We an HandRolled the loader, and that as some implications. Did anyone try to use a different launcher like pytest or nose instead of the current runner? I understand that testscenarios is one of the problems we have if we want to move away from this way of running tests. Any suggestion? Thanks Joao On Wed, Mar 7, 2018 at 11:41 PM Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi Joao, > > In the test_start_running_query.py, 2 static methods (is_begin_required_for_sql_query > and is_rollback_statement_required) > of StartRunningQuery class were used directly without @patch. Due to > this, in all the cases, the original value of them doesn't restore. > > To fix this, I have sent the patch in another thread, to restore its > original state, but I wonder if we can use these methods with @patch. > > Thanks, > Khushboo > > > On Fri, Feb 9, 2018 at 5:24 PM, Dave Page wrote: > >> Support EXPLAIN on Greenplum. Fixes #3097 >> >> - Extract SQLEditor.execute and SQLEditor._poll into their own files and >> add test around them >> - Extract SQLEditor backend functions that start executing query to >> their own files and add tests around it >> - Move the Explain SQL from the front-end and now pass the Explain plan >> parameters as a JSON object in the start query call. >> - Extract the compile_template_name into a function that can be used by >> the different places that try to select the version of the template and the >> server type >> >> Branch >> ------ >> master >> >> Details >> ------- >> >> https://git.postgresql.org/gitweb?p=pgadmin4.git;a=commitdiff;h=e16a95275336529a734bf0066889e39cc8ef0662 >> Author: Joao Pedro De Almeida Pereira >> >> Modified Files >> -------------- >> .../databases/schemas/tables/tests/test_utils.py | 0 >> web/pgadmin/static/js/sqleditor/execute_query.js | 287 ++++ >> .../js/sqleditor/is_new_transaction_required.js | 14 + >> .../static/js/sqleditor/query_tool_actions.js | 33 +- >> web/pgadmin/tools/sqleditor/__init__.py | 396 +---- >> web/pgadmin/tools/sqleditor/static/js/sqleditor.js | 227 +-- >> .../sqleditor/sql/10_plus/explain_plan.sql | 23 + >> .../sqleditor/sql/9.2_plus/explain_plan.sql | 20 + >> .../sqleditor/sql/default/explain_plan.sql | 17 + >> .../sqleditor/sql/gpdb_5.0_plus/explain_plan.sql | 5 + >> web/pgadmin/tools/sqleditor/tests/__init__.py | 8 + >> .../sqleditor/tests/test_explain_plan_templates.py | 152 ++ >> .../test_extract_sql_from_network_parameters.py | 59 + >> .../tools/sqleditor/tests/test_start_query_tool.py | 38 + >> web/pgadmin/tools/sqleditor/utils/__init__.py | 14 + >> .../sqleditor/utils/apply_explain_plan_wrapper.py | 24 + >> .../tools/sqleditor/utils/constant_definition.py | 32 + >> .../tools/sqleditor/utils/is_begin_required.py | 169 ++ >> .../tools/sqleditor/utils/start_running_query.py | 172 ++ >> .../tools/sqleditor/utils/tests/__init__.py | 8 + >> .../utils/tests/test_apply_explain_plan_wrapper.py | 121 ++ >> .../utils/tests/test_start_running_query.py | 445 +++++ >> .../utils/update_session_grid_transaction.py | 18 + >> web/pgadmin/utils/compile_template_name.py | 17 + >> .../utils/tests/test_compile_template_name.py | 34 + >> web/pgadmin/utils/versioned_template_loader.py | 2 +- >> web/regression/javascript/fake_endpoints.js | 6 +- >> .../javascript/sqleditor/execute_query_spec.js | 1702 >> ++++++++++++++++++++ >> .../sqleditor/is_new_transaction_required_spec.js | 65 + >> .../sqleditor/query_tool_actions_spec.js | 141 +- >> 30 files changed, 3670 insertions(+), 579 deletions(-) >> >> > --94eb2c0b9ace79d5660566e769b8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Khushboo,
Completely forgot about this python &q= uot;feature".......
Attached is the fix.

Just as a side question, does anyone else feel the pain of wanting to= run a single test using a IDE or the command line and not being able to?
We an HandRolled the loader, and that as some implications. Did an= yone try to use a different launcher like pytest or nose instead of the cur= rent runner?=C2=A0
I understand that testscenarios is one of the = problems we have if we want to move away from this way of running tests.
Any suggestion?

Thanks
Joao
On Wed, Mar 7, 2018 at 11:= 41 PM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Joao,

In the=C2=A0test_start_running_query.py, 2 static methods (is_begin_required_for_sql_query and is_rollba= ck_statement_required)
of StartRunningQuery class were used directly without @patch. Due to this, in all the cases, the original value of them doe= sn't restore.

To fix this, I have sent the patch in another thread, to rest= ore its original state, but I wonder if we can use these methods with @patc= h.

T= hanks,
Khushboo


On Fri, Fe= b 9, 2018 at 5:24 PM, Dave Page <dpage@pgadmin.org> wrote:
Support EXPLAIN on Greenplum. Fixes #3097<= br>
=C2=A0- Extract SQLEditor.execute and SQLEditor._poll into their own files = and add test around them
=C2=A0- Extract SQLEditor backend functions that start executing query to t= heir own files and add tests around it
=C2=A0- Move the Explain SQL from the front-end and now pass the Explain pl= an parameters as a JSON object in the start query call.
=C2=A0- Extract the compile_template_name into a function that can be used = by the different places that try to select the version of the template and = the server type

Branch
------
master

Details
-------
https://git.postgresql.org/gitweb?p=3Dpgadmin4.git;a=3Dcommitdi= ff;h=3De16a95275336529a734bf0066889e39cc8ef0662
Author: Joao Pedro De Almeida Pereira <jdealmeidapereira@pivotal.io>

Modified Files
--------------
.../databases/schemas/tables/tests/test_utils.py=C2=A0 =C2=A0|=C2=A0 =C2=A0= 0
web/pgadmin/static/js/sqleditor/execute_query.js=C2=A0 =C2=A0|=C2=A0 287 ++= ++
.../js/sqleditor/is_new_transaction_required.js=C2=A0 =C2=A0 |=C2=A0 =C2=A0= 14 +
.../static/js/sqleditor/query_tool_actions.js=C2=A0 =C2=A0 =C2=A0 |=C2=A0 = =C2=A033 +-
web/pgadmin/tools/sqleditor/__init__.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 |=C2=A0 396 +----
web/pgadmin/tools/sqleditor/static/js/sqleditor.js |=C2=A0 227 +--
.../sqleditor/sql/10_plus/explain_plan.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0|=C2=A0 =C2=A023 +
.../sqleditor/sql/9.2_plus/explain_plan.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2= =A0 =C2=A020 +
.../sqleditor/sql/default/explain_plan.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0|=C2=A0 =C2=A017 +
.../sqleditor/sql/gpdb_5.0_plus/explain_plan.sql=C2=A0 =C2=A0|=C2=A0 =C2=A0= 5 +
web/pgadmin/tools/sqleditor/tests/__init__.py=C2=A0 =C2=A0 =C2=A0 |=C2=A0 = =C2=A0 8 +
.../sqleditor/tests/test_explain_plan_templates.py |=C2=A0 152 ++
.../test_extract_sql_from_network_parameters.py=C2=A0 =C2=A0 |=C2=A0 =C2=A0= 59 +
.../tools/sqleditor/tests/test_start_query_tool.py |=C2=A0 =C2=A038 +
web/pgadmin/tools/sqleditor/utils/__init__.py=C2=A0 =C2=A0 =C2=A0 |=C2=A0 = =C2=A014 +
.../sqleditor/utils/apply_explain_plan_wrapper.py=C2=A0 |=C2=A0 =C2=A024 +<= br> .../tools/sqleditor/utils/constant_definition.py=C2=A0 =C2=A0|=C2=A0 =C2=A0= 32 +
.../tools/sqleditor/utils/is_begin_required.py=C2=A0 =C2=A0 =C2=A0|=C2=A0 1= 69 ++
.../tools/sqleditor/utils/start_running_query.py=C2=A0 =C2=A0|=C2=A0 172 ++=
.../tools/sqleditor/utils/tests/__init__.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2= =A0 =C2=A0 8 +
.../utils/tests/test_apply_explain_plan_wrapper.py |=C2=A0 121 ++
.../utils/tests/test_start_running_query.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2= =A0 445 +++++
.../utils/update_session_grid_transaction.py=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2= =A0 =C2=A018 +
web/pgadmin/utils/compile_template_name.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0|=C2=A0 =C2=A017 +
.../utils/tests/test_compile_template_name.py=C2=A0 =C2=A0 =C2=A0 |=C2=A0 = =C2=A034 +
web/pgadmin/utils/versioned_template_loader.py=C2=A0 =C2=A0 =C2=A0|=C2=A0 = =C2=A0 2 +-
web/regression/javascript/fake_endpoints.js=C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2= =A0 =C2=A0 6 +-
.../javascript/sqleditor/execute_query_spec.js=C2=A0 =C2=A0 =C2=A0| 1702 ++= ++++++++++++++++++
.../sqleditor/is_new_transaction_required_spec.js=C2=A0 |=C2=A0 =C2=A065 +<= br> .../sqleditor/query_tool_actions_spec.js=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0|=C2=A0 141 +-
30 files changed, 3670 insertions(+), 579 deletions(-)


--94eb2c0b9ace79d5660566e769b8-- --94eb2c0b9ace79d56a0566e769ba Content-Type: application/octet-stream; name="use_patch_instead_of_replace_method.diff" Content-Disposition: attachment; filename="use_patch_instead_of_replace_method.diff" Content-Transfer-Encoding: base64 Content-ID: <16205fe2a84103d7dab1> X-Attachment-Id: 16205fe2a84103d7dab1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0 X3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRp bHMvdGVzdHMvdGVzdF9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CmluZGV4IDIzYTVjN2ZjLi5iNzc0 NTQ2MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rlc3Rz L3Rlc3Rfc3RhcnRfcnVubmluZ19xdWVyeS5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3IvdXRpbHMvdGVzdHMvdGVzdF9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CkBAIC04LDggKzgs OCBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGltcG9ydCBzeXMKIAotZnJvbSBmbGFzayBpbXBvcnQg UmVzcG9uc2UKIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IFJl c3BvbnNlCiAKIGZyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuc3RhcnRfcnVubmlu Z19xdWVyeSBpbXBvcnQgU3RhcnRSdW5uaW5nUXVlcnkKIGZyb20gcGdhZG1pbi51dGlscy5leGNl cHRpb24gaW1wb3J0IENvbm5lY3Rpb25Mb3N0CkBAIC0zODUsOCArMzg1LDE0IEBAIGNsYXNzIFN0 YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICcuaW50 ZXJuYWxfc2VydmVyX2Vycm9yJykKICAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuc3FsZWRpdG9y LnV0aWxzLnN0YXJ0X3J1bm5pbmdfcXVlcnknCiAgICAgICAgICAgICcudXBkYXRlX3Nlc3Npb25f Z3JpZF90cmFuc2FjdGlvbicpCi0gICAgZGVmIHJ1blRlc3Qoc2VsZiwgdXBkYXRlX3Nlc3Npb25f Z3JpZF90cmFuc2FjdGlvbl9tb2NrLAotICAgICAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9l cnJvcl9tb2NrLCBnZXRfZHJpdmVyX21vY2ssIHBpY2tsZV9tb2NrLAorICAgIEBwYXRjaCgncGdh ZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuc3RhcnRfcnVubmluZ19xdWVyeScKKyAgICAgICAg ICAgJy5TdGFydFJ1bm5pbmdRdWVyeS5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5JykK KyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLnN0YXJ0X3J1bm5pbmdf cXVlcnknCisgICAgICAgICAgICcuU3RhcnRSdW5uaW5nUXVlcnkuaXNfcm9sbGJhY2tfc3RhdGVt ZW50X3JlcXVpcmVkJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBpc19yb2xsYmFja19zdGF0ZW1l bnRfcmVxdWlyZWRfc3R1YiwKKyAgICAgICAgICAgICAgICBpc19iZWdpbl9yZXF1aXJlZF9mb3Jf c3FsX3F1ZXJ5X3N0dWIsCisgICAgICAgICAgICAgICAgdXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFu c2FjdGlvbl9zdHViLAorICAgICAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcl9tb2Nr LCBnZXRfZHJpdmVyX3N0dWIsIHBpY2tsZV9zdHViLAogICAgICAgICAgICAgICAgIG1ha2VfanNv bl9yZXNwb25zZV9tb2NrLAogICAgICAgICAgICAgICAgIGFwcGx5X2V4cGxhaW5fcGxhbl93cmFw cGVyX2lmX25lZWRlZF9tb2NrKToKICAgICAgICAgIiIiQ2hlY2sgY29ycmVjdCBmdW5jdGlvbiBp cyBjYWxsZWQgdG8gaGFuZGxlIHRvIHJ1biBxdWVyeS4iIiIKQEAgLTM5OCw0MSArNDA0LDI3IEBA IGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg IG1ha2VfanNvbl9yZXNwb25zZV9tb2NrLnJldHVybl92YWx1ZSA9IGV4cGVjdGVkX3Jlc3BvbnNl CiAgICAgICAgIGlmIHNlbGYuZXhwZWN0X2ludGVybmFsX3NlcnZlcl9lcnJvcl9jYWxsZWRfd2l0 aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcl9tb2NrLnJl dHVybl92YWx1ZSA9IGV4cGVjdGVkX3Jlc3BvbnNlCi0gICAgICAgIHBpY2tsZV9tb2NrLmxvYWRz LnJldHVybl92YWx1ZSA9IHNlbGYucGlja2xlX2xvYWRfcmV0dXJuCisgICAgICAgIHBpY2tsZV9z dHViLmxvYWRzLnJldHVybl92YWx1ZSA9IHNlbGYucGlja2xlX2xvYWRfcmV0dXJuCiAgICAgICAg IGJsdWVwcmludF9tb2NrID0gTWFnaWNNb2NrKAogICAgICAgICAgICAgaW5mb19ub3RpZmllcl90 aW1lb3V0PU1hZ2ljTW9jayhnZXQ9bGFtYmRhOiA1KSkKIAotICAgICAgICAjIFNhdmUgdmFsdWUg Zm9yIHRoZSBsYXRlciB1c2UKLSAgICAgICAgc2VsZi5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3Fs X3F1ZXJ5ID0gXAotICAgICAgICAgICAgU3RhcnRSdW5uaW5nUXVlcnkuaXNfYmVnaW5fcmVxdWly ZWRfZm9yX3NxbF9xdWVyeQotICAgICAgICBzZWxmLmlzX3JvbGxiYWNrX3N0YXRlbWVudF9yZXF1 aXJlZCA9IFwKLSAgICAgICAgICAgIFN0YXJ0UnVubmluZ1F1ZXJ5LmlzX3JvbGxiYWNrX3N0YXRl bWVudF9yZXF1aXJlZAotCiAgICAgICAgIGlmIHNlbGYuaXNfYmVnaW5fcmVxdWlyZWQ6Ci0gICAg ICAgICAgICBTdGFydFJ1bm5pbmdRdWVyeS5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5 ID0gTWFnaWNNb2NrKAotICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCi0gICAgICAg ICAgICApCisgICAgICAgICAgICBpc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5X3N0dWIu cmV0dXJuX3ZhbHVlID0gVHJ1ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgU3RhcnRSdW5u aW5nUXVlcnkuaXNfYmVnaW5fcmVxdWlyZWRfZm9yX3NxbF9xdWVyeSA9IE1hZ2ljTW9jaygKLSAg ICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9RmFsc2UKLSAgICAgICAgICAgICkKKyAgICAgICAg ICAgIGlzX2JlZ2luX3JlcXVpcmVkX2Zvcl9zcWxfcXVlcnlfc3R1Yi5yZXR1cm5fdmFsdWUgPSBG YWxzZQogICAgICAgICBpZiBzZWxmLmlzX3JvbGxiYWNrX3JlcXVpcmVkOgotICAgICAgICAgICAg U3RhcnRSdW5uaW5nUXVlcnkuaXNfcm9sbGJhY2tfc3RhdGVtZW50X3JlcXVpcmVkID0gTWFnaWNN b2NrKAotICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCi0gICAgICAgICAgICApCisg ICAgICAgICAgICBpc19yb2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWRfc3R1Yi5yZXR1cm5fdmFs dWUgPSBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBTdGFydFJ1bm5pbmdRdWVyeS5p c19yb2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWQgPSBNYWdpY01vY2soCi0gICAgICAgICAgICAg ICAgcmV0dXJuX3ZhbHVlPUZhbHNlCi0gICAgICAgICAgICApCisgICAgICAgICAgICBpc19yb2xs YmFja19zdGF0ZW1lbnRfcmVxdWlyZWRfc3R1Yi5yZXR1cm5fdmFsdWUgPSBGYWxzZQogCiAgICAg ICAgIGFwcGx5X2V4cGxhaW5fcGxhbl93cmFwcGVyX2lmX25lZWRlZF9tb2NrLnJldHVybl92YWx1 ZSA9IFwKICAgICAgICAgICAgIHNlbGYuYXBwbHlfZXhwbGFpbl9wbGFuX3dyYXBwZXJfaWZfbmVl ZGVkX3JldHVybl92YWx1ZQogCiAgICAgICAgIG1hbmFnZXIgPSBzZWxmLl9fY3JlYXRlX21hbmFn ZXIoKQogICAgICAgICBpZiBzZWxmLmdldF9kcml2ZXJfZXhjZXB0aW9uOgotICAgICAgICAgICAg Z2V0X2RyaXZlcl9tb2NrLnNpZGVfZWZmZWN0ID0gZ2V0X2RyaXZlcl9leGNlcHRpb24KKyAgICAg ICAgICAgIGdldF9kcml2ZXJfc3R1Yi5zaWRlX2VmZmVjdCA9IGdldF9kcml2ZXJfZXhjZXB0aW9u CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBnZXRfZHJpdmVyX21vY2sucmV0dXJuX3ZhbHVl ID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgZ2V0X2RyaXZlcl9zdHViLnJldHVybl92YWx1ZSA9 IE1hZ2ljTW9jaygKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX21hbmFnZXI9bGFtYmRhIHNl c3Npb25faWQ6IG1hbmFnZXIpCiAKICAgICAgICAgdHJ5OgpAQCAtNTI1LDEwICs1MTcsMyBAQCBj bGFzcyBTdGFydFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAg ICAgc2VsZi5jb25uZWN0aW9uLmV4ZWN1dGVfdm9pZC5hc3NlcnRfY2FsbGVkX3dpdGgoJ1JPTExC QUNLOycpCiAgICAgICAgIGVsaWYgbm90IHNlbGYuaXNfYmVnaW5fcmVxdWlyZWQ6CiAgICAgICAg ICAgICBzZWxmLmNvbm5lY3Rpb24uZXhlY3V0ZV92b2lkLmFzc2VydF9ub3RfY2FsbGVkKCkKLQot ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIyAgUmVzZXQgbWV0aG9kcyB0byB0aGUg b3JpZ2luYWwgc3RhdGUKLSAgICAgICAgU3RhcnRSdW5uaW5nUXVlcnkuaXNfcm9sbGJhY2tfc3Rh dGVtZW50X3JlcXVpcmVkID0gXAotICAgICAgICAgICAgc3RhdGljbWV0aG9kKHNlbGYuaXNfcm9s bGJhY2tfc3RhdGVtZW50X3JlcXVpcmVkKQotICAgICAgICBTdGFydFJ1bm5pbmdRdWVyeS5pc19y b2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWQgPSBcCi0gICAgICAgICAgICBzdGF0aWNtZXRob2Qo c2VsZi5pc19yb2xsYmFja19zdGF0ZW1lbnRfcmVxdWlyZWQpCg== --94eb2c0b9ace79d56a0566e769ba--