Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cWsio-0003al-KR for pgadmin-hackers@arkaria.postgresql.org; Thu, 26 Jan 2017 22:40:50 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cWsio-0008Cy-2g for pgadmin-hackers@arkaria.postgresql.org; Thu, 26 Jan 2017 22:40:50 +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.84_2) (envelope-from ) id 1cWsiY-0007wv-1T for pgadmin-hackers@postgresql.org; Thu, 26 Jan 2017 22:40:34 +0000 Received: from mail-yb0-x22d.google.com ([2607:f8b0:4002:c09::22d]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1cWsiT-0002xU-Ui for pgadmin-hackers@postgresql.org; Thu, 26 Jan 2017 22:40:32 +0000 Received: by mail-yb0-x22d.google.com with SMTP id j82so59602669ybg.1 for ; Thu, 26 Jan 2017 14:40:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=bRhz1+78hwWz/vRl5lvO+uQ9dHuTrNXJqsaS6SAhSoM=; b=hOdBOR9vcAUclNTXokuerqp1fWCPLsHPGAkaSuCQghW4XIgJ9/6Zq9V+/E95TDZhAm xq4s2NTTHuSBR/CHbqFXbvCNW0kE/pvib0IDtErx1bJ1XAXEfvA/iwhTcbgO8KxnWdfA h1VyZkkLY/pgBsN5TsQO0dbCjFFLeOGHdQN9+touVF40UxmoeHox0KOUy1ynXZOesr7h iXgfZ9LjhQT/aOhj4nelgUzrzQLKc0Od57xwO21jN+oEDQoX005slcyJKRwHapI3jBUm bBFf5zpdlqzR+V3PIlYC/whmyUMO5FVkjnAFNH7Aj2zFitJ0H4lfnSk+99hpcZgyeLvb y25A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=bRhz1+78hwWz/vRl5lvO+uQ9dHuTrNXJqsaS6SAhSoM=; b=hiuTeANqEpee6Y/OPQNBndnh4o/OkFRcZ/0+oBgFxiw29yQsKwAVEKC15zQX7JrBFi l2AxRpNBE1SICLJ+wWgqr4tt+6guH1wrL0aoPt7p2Jiyr4NDvESd2ZuK0kkii4v9pVNu +jHW9TtMXmNVV17eD0RFUrYoE7VwjX51WHUf9Upb7VGqvUwL8CBggQbweODSV0tmjBPj IjUfISCVeeVO0VMCXKUOFC/opFmXGlmKC/GO1UOv9vZHlHQaCJmsvIxUW7Hcfk79dhP8 NvdkDFdUBXKz5NyVFfb+a6B0ll+6myEQrL2pyQewC6etAdX2GXJbXmECSikiuc88iGrY K01w== X-Gm-Message-State: AIkVDXKp0vCNxxj7GnKG5WpmYjP1Lk5UPC7BX4dxC59mKgHo2S9exHHzX3Y9vQ6ePkwjf2HjpWhQEHLAg33Huu/v X-Received: by 10.37.165.101 with SMTP id h92mr383407ybi.83.1485470427514; Thu, 26 Jan 2017 14:40:27 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.170.171 with HTTP; Thu, 26 Jan 2017 14:40:26 -0800 (PST) In-Reply-To: References: From: George Gelashvili Date: Thu, 26 Jan 2017 17:40:26 -0500 Message-ID: Subject: Re: Acceptance Tests against a browser (WIP) To: Dave Page Cc: Atira Odhner , pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c19f92628657b0547070943 X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --94eb2c19f92628657b0547070943 Content-Type: multipart/alternative; boundary=94eb2c19f9262865770547070941 --94eb2c19f9262865770547070941 Content-Type: text/plain; charset=UTF-8 instead of that patch, please use this no-zombies version that kills the started process group instead of pid-only. On Wed, Jan 25, 2017 at 6:31 PM, George Gelashvili wrote: > ah > That diff was generated before the python 3 patch was applied. This should > work against master > > Cheers, > George > > On Tue, Jan 24, 2017 at 4:43 AM, Dave Page wrote: > >> On Fri, Jan 20, 2017 at 5:33 PM, George Gelashvili >> wrote: >> > Thanks for bringing that to our attention! Here's the latest patch >> >> piranha:pgadmin4 dpage$ git apply >> ~/Downloads/acceptance-tests-with-server-start-and-polling.diff >> error: patch failed: web/regression/test_utils.py:69 >> error: web/regression/test_utils.py: patch does not apply >> >> :-( >> >> > On Fri, Jan 20, 2017 at 10:38 AM, Dave Page wrote: >> >> >> >> On Thu, Jan 19, 2017 at 10:07 PM, George Gelashvili >> >> wrote: >> >> > >> >> > Here is an updated patch which starts the server up when the test >> starts >> >> > and >> >> > uses the values from config.py for server name etc. It still requires >> >> > installing chromedriver before running. Should we add something to >> the >> >> > readme about that? >> >> >> >> Yes, we definitely should (including download site URL) >> >> >> >> > On Tue, Jan 17, 2017 at 11:09 AM, Atira Odhner >> >> > wrote: >> >> >> >> >> >> Thanks for your feedback, Dave! >> >> >> >> >> >> We can put the tests under the regression directory. I think that >> makes >> >> >> sense. >> >> >> I'm not picturing these tests being module specific, but we may >> want to >> >> >> enable running it as a separate suite of tests. >> >> >> >> >> >> Thanks for the callout about the port and title. We'll make sure >> those >> >> >> are >> >> >> pulled from config or that the pgAdmin server is spun up by the test >> >> >> with >> >> >> specific values. >> >> >> >> >> >> I have a couple ideas about why the test might not have been running >> >> >> for >> >> >> you. I think the patch we attached didn't spin up its own pgAdmin >> yet >> >> >> and it >> >> >> definitely doesn't fill in username/password if your app is running >> >> >> that >> >> >> way. That's part of the WIP-ness :-P >> >> >> >> >> >> -Tira >> >> >> >> >> >> Hi >> >> >> >> >> >> On Thu, Jan 12, 2017 at 10:41 PM, George Gelashvili >> >> >> wrote: >> >> >> > here's the patch we forgot to attach. Also, you can see work on >> our >> >> >> > branch >> >> >> > at: >> >> >> > >> >> >> > >> >> >> > https://github.com/pivotalsoftware/pgadmin4/tree/pivotal/ >> acceptance-tests >> >> >> > >> >> >> > On Thu, Jan 12, 2017 at 5:26 PM, George Gelashvili >> >> >> > >> >> >> > wrote: >> >> >> >> >> >> >> >> Hi there, >> >> >> >> >> >> >> >> We are working on browser-automation-based acceptance tests that >> >> >> >> exercise >> >> >> >> pgAdmin4 the way a user might. >> >> >> >> >> >> Nice! >> >> >> >> >> >> >> The first "connect to database" test works, but at the moment >> >> >> >> depends >> >> >> >> on >> >> >> >> Chrome and chromedriver. We would appreciate feedback on any >> >> >> >> possible >> >> >> >> license or code style issues at this point, as well as any >> thoughts >> >> >> >> on >> >> >> >> adding this sort of test to the codebase. >> >> >> >> >> >> A few thoughts: >> >> >> >> >> >> - If these tests are to run as part of the regression suite, the >> >> >> framework for them should live under that directory. >> >> >> >> >> >> - Are any of the tests likely to be module-specific? If so, they >> >> >> should really be part of the relevant module as the regression tests >> >> >> are. If they're more general/less tightly coupled, then I don't see >> a >> >> >> problem with them residing where they are. >> >> >> >> >> >> - Please take care not to include changes to .gitgnore files that >> >> >> aren't relevant to the rest of us. >> >> >> >> >> >> - The port number is hard-coded in the test. >> >> >> >> >> >> - You've hard-coded the string "pgAdmin 4". We've tried to keep that >> >> >> title as a config option in config.py, so you should pull the string >> >> >> from there rather than hard-coding it. >> >> >> >> >> >> - The connect test fails for me (Mac, Python 2.7). I have a >> suspicion >> >> >> that this may be because when the test starts chromedriver, OS X >> >> >> prompts the user about whether a listening port should be opened, >> but >> >> >> the tests don't wait (though, I tested with 3 servers configured and >> >> >> it failed with the same error on the second and third as well, long >> >> >> after I clicked OK on the prompt): >> >> >> >> >> >> Traceback (most recent call last): >> >> >> File >> >> >> >> >> >> "/Users/dpage/git/pgadmin4/web/acceptance/test_connects_to_ >> database.py", >> >> >> line 32, in runTest >> >> >> self.assertEqual("pgAdmin 4", self.driver.title) >> >> >> AssertionError: 'pgAdmin 4' != u'localhost' >> >> >> >> >> >> - Please keep tests in the pgadmin. namespace >> (pgadmin.acceptance.??). >> >> >> >> >> >> - It looks like running a single test won't work yet (because of >> >> >> TestsGeneratorRegistry.load_generators('pgadmin.%s.tests' % >> >> >> arguments['pkg'])) >> >> >> >> >> >> Thanks! >> >> >> >> >> >> -- >> >> >> Dave Page >> >> >> Blog: http://pgsnake.blogspot.com >> >> >> Twitter: @pgsnake >> >> >> >> >> >> EnterpriseDB UK: http://www.enterprisedb.com >> >> >> The Enterprise PostgreSQL Company >> >> >> >> >> >> >> >> > >> >> > >> >> > >> >> > -- >> >> > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.or >> g) >> >> > To make changes to your subscription: >> >> > http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > >> >> >> >> >> >> >> >> -- >> >> Dave Page >> >> Blog: http://pgsnake.blogspot.com >> >> Twitter: @pgsnake >> >> >> >> EnterpriseDB UK: http://www.enterprisedb.com >> >> The Enterprise PostgreSQL Company >> > >> > >> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --94eb2c19f9262865770547070941 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
instead of that patch, please use this no-zombies version = that kills the started process group instead of pid-only.

On Wed, Jan 25, 2017 at 6:3= 1 PM, George Gelashvili <ggelashvili@pivotal.io> wrote:=
ah
That diff was gen= erated before the python 3 patch was applied. This should work against mast= er

Cheers,
George

On Tue, Jan 24, 2017 at 4:43 AM, Dave Page <dpage@pgadmin.org>= ; wrote:
On Fri, Jan 20, 201= 7 at 5:33 PM, George Gelashvili
<ggelashvili= @pivotal.io> wrote:
> Thanks for bringing that to our attention! Here's the latest patch=

piranha:pgadmin4 dpage$ git apply
~/Downloads/acceptance-tests-with-server-start-and-polling.diff error: patch failed: web/regression/test_utils.py:69
error: web/regression/test_utils.py: patch does not apply

:-(

> On Fri, Jan 20, 2017 at 10:38 AM, Dave Page <dpage@pgadmin.org> wrote:
>>
>> On Thu, Jan 19, 2017 at 10:07 PM, George Gelashvili
>> <gg= elashvili@pivotal.io> wrote:
>> >
>> > Here is an updated patch which starts the server up when the = test starts
>> > and
>> > uses the values from config.py for server name etc. It still = requires
>> > installing chromedriver before running. Should we add somethi= ng to the
>> > readme about that?
>>
>> Yes, we definitely should (including download site URL)
>>
>> > On Tue, Jan 17, 2017 at 11:09 AM, Atira Odhner <aodhner@pivotal.io>
>> > wrote:
>> >>
>> >> Thanks for your feedback, Dave!
>> >>
>> >> We can put the tests under the regression directory. I th= ink that makes
>> >> sense.
>> >> I'm not picturing these tests being module specific, = but we may want to
>> >> enable running it as a separate suite of tests.
>> >>
>> >> Thanks for the callout about the port and title. We'l= l make sure those
>> >> are
>> >> pulled from config or that the pgAdmin server is spun up = by the test
>> >> with
>> >> specific values.
>> >>
>> >> I have a couple ideas about why the test might not have b= een running
>> >> for
>> >> you. I think the patch we attached didn't spin up its= own pgAdmin yet
>> >> and it
>> >> definitely doesn't fill in username/password if your = app is running
>> >> that
>> >> way. That's part of the WIP-ness :-P
>> >>
>> >> -Tira
>> >>
>> >> Hi
>> >>
>> >> On Thu, Jan 12, 2017 at 10:41 PM, George Gelashvili
>> >> <ggelashvili(at)pivotal(dot)io> wrote:
>> >> > here's the patch we forgot to attach. Also, you = can see work on our
>> >> > branch
>> >> > at:
>> >> >
>> >> >
>> >> > http= s://github.com/pivotalsoftware/pgadmin4/tree/pivotal/acceptance-t= ests
>> >> >
>> >> > On Thu, Jan 12, 2017 at 5:26 PM, George Gelashvili >> >> > <ggelashvili(at)pivotal(dot)io>
>> >> > wrote:
>> >> >>
>> >> >> Hi there,
>> >> >>
>> >> >> We are working on browser-automation-based accep= tance tests that
>> >> >> exercise
>> >> >> pgAdmin4 the way a user might.
>> >>
>> >> Nice!
>> >>
>> >> >> The first "connect to database" test w= orks, but at the moment
>> >> >> depends
>> >> >> on
>> >> >> Chrome and chromedriver. We would appreciate fee= dback on any
>> >> >> possible
>> >> >> license or code style issues at this point, as w= ell as any thoughts
>> >> >> on
>> >> >> adding this sort of test to the codebase.
>> >>
>> >> A few thoughts:
>> >>
>> >> - If these tests are to run as part of the regression sui= te, the
>> >> framework for them should live under that directory.
>> >>
>> >> - Are any of the tests likely to be module-specific? If s= o, they
>> >> should really be part of the relevant module as the regre= ssion tests
>> >> are. If they're more general/less tightly coupled, th= en I don't see a
>> >> problem with them residing where they are.
>> >>
>> >> - Please take care not to include changes to .gitgnore fi= les that
>> >> aren't relevant to the rest of us.
>> >>
>> >> - The port number is hard-coded in the test.
>> >>
>> >> - You've hard-coded the string "pgAdmin 4".= We've tried to keep that
>> >> title as a config option in config.py, so you should pull= the string
>> >> from there rather than hard-coding it.
>> >>
>> >> - The connect test fails for me (Mac, Python 2.7). I have= a suspicion
>> >> that this may be because when the test starts chromedrive= r, OS X
>> >> prompts the user about whether a listening port should be= opened, but
>> >> the tests don't wait (though, I tested with 3 servers= configured and
>> >> it failed with the same error on the second and third as = well, long
>> >> after I clicked OK on the prompt):
>> >>
>> >> Traceback (most recent call last):
>> >>=C2=A0 =C2=A0File
>> >>
>> >> "/Users/dpage/git/pgadmin4/web/acceptance/test_= connects_to_database.py",
>> >> line 32, in runTest
>> >>=C2=A0 =C2=A0 =C2=A0self.assertEqual("pgAdmin 4"= , self.driver.title)
>> >> AssertionError: 'pgAdmin 4' !=3D u'localhost&= #39;
>> >>
>> >> - Please keep tests in the pgadmin. namespace (pgadmin.ac= ceptance.??).
>> >>
>> >> - It looks like running a single test won't work yet = (because of
>> >> TestsGeneratorRegistry.load_generators('pgadmin.= %s.tests' %
>> >> arguments['pkg']))
>> >>
>> >> Thanks!
>> >>
>> >> --
>> >> Dave Page
>> >> Blog: http://pgsnake.blogspot.com
>> >> Twitter: @pgsnake
>> >>
>> >> EnterpriseDB UK: http://www.enterprisedb.com
>> >> The Enterprise PostgreSQL Company
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.or= g)
>> > To make changes to your subscription:
>> > http://www.postgresql.org/mailp= ref/pgadmin-hackers
>> >
>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>
>



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


--94eb2c19f9262865770547070941-- --94eb2c19f92628657b0547070943 Content-Type: text/plain; charset=US-ASCII; name="acceptance-test-no-zombies.diff" Content-Disposition: attachment; filename="acceptance-test-no-zombies.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyeyqeqt1 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50c19weTIudHh0IGIvcmVxdWlyZW1l bnRzX3B5Mi50eHQKaW5kZXggNTExNzBhNDUuLmRlMTY3MTIxIDEwMDY0NAot LS0gYS9yZXF1aXJlbWVudHNfcHkyLnR4dAorKysgYi9yZXF1aXJlbWVudHNf cHkyLnR4dApAQCAtMzYsNiArMzYsNyBAQCB0ZXN0c2NlbmFyaW9zPT0wLjUu MAogdGVzdHRvb2xzPT0yLjAuMAogdHJhY2ViYWNrMj09MS40LjAKIHVuaXR0 ZXN0Mj09MS4xLjAKK3NlbGVuaXVtPT0zLjAuMgogV2Vya3pldWc9PTAuOS42 CiBXVEZvcm1zPT0yLjAuMgogc3FscGFyc2U9PTAuMS4xOQpkaWZmIC0tZ2l0 IGEvcmVxdWlyZW1lbnRzX3B5My50eHQgYi9yZXF1aXJlbWVudHNfcHkzLnR4 dAppbmRleCBmNjhkYjdhOC4uOTU2NWE2ZTQgMTAwNjQ0Ci0tLSBhL3JlcXVp cmVtZW50c19weTMudHh0CisrKyBiL3JlcXVpcmVtZW50c19weTMudHh0CkBA IC0zNSw2ICszNSw3IEBAIHRlc3RzY2VuYXJpb3M9PTAuNS4wCiB0ZXN0dG9v bHM9PTIuMC4wCiB0cmFjZWJhY2syPT0xLjQuMAogdW5pdHRlc3QyPT0xLjEu MAorc2VsZW5pdW09PTMuMC4yCiBXZXJremV1Zz09MC45LjYKIFdURm9ybXM9 PTIuMC4yCiBzcWxwYXJzZT09MC4xLjE5CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9hY2NlcHRhbmNlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYWNj ZXB0YW5jZS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uZTY5ZGUyOWIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2FjY2VwdGFuY2UvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9h Y2NlcHRhbmNlL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwLi5lNjlkZTI5YgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy9jb25uZWN0X3RvX2RhdGFiYXNl X2ZlYXR1cmVfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2FjY2VwdGFuY2UvdGVz dHMvY29ubmVjdF90b19kYXRhYmFzZV9mZWF0dXJlX3Rlc3QucHkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmEzYmFhNDVjCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy9j b25uZWN0X3RvX2RhdGFiYXNlX2ZlYXR1cmVfdGVzdC5weQpAQCAtMCwwICsx LDc4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx NywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK KyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCB0aW1lCisKK2Zyb20g c2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgorZnJvbSBzZWxlbml1bS5jb21t b24uZXhjZXB0aW9ucyBpbXBvcnQgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbgor ZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIgaW1wb3J0IEFjdGlvbkNoYWlucwor Citmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2Vu ZXJhdG9yCisKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgb3MKK2ltcG9y dCBzaWduYWwKK2ltcG9ydCBjb25maWcgYXMgYXBwX2NvbmZpZworZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24u dXRpbHMuYXBwX3N0YXJ0ZXIgaW1wb3J0IEFwcFN0YXJ0ZXIKK2Zyb20gcmVn cmVzc2lvbi51dGlscy5wZ2FkbWluX3BhZ2UgaW1wb3J0IFBnYWRtaW5QYWdl CisKKworY2xhc3MgQ29ubmVjdHNUb0RhdGFiYXNlRmVhdHVyZVRlc3QoQmFz ZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIgorICAgIFRlc3RzIHRoYXQgYSBk YXRhYmFzZSBjb25uZWN0aW9uIGNhbiBiZSBjcmVhdGVkIGZyb20gdGhlIFVJ CisgICAgIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlm IGFwcF9jb25maWcuU0VSVkVSX01PREU6CisgICAgICAgICAgICBzZWxmLnNr aXBUZXN0KCJDdXJyZW50bHksIGNvbmZpZyBpcyBzZXQgdG8gc3RhcnQgcGdh ZG1pbiBpbiBzZXJ2ZXIgbW9kZS4gIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAiVGhpcyB0ZXN0IGRvZXNuJ3Qga25vdyB1c2VybmFtZSBhbmQgcGFz c3dvcmQgc28gZG9lc24ndCB3b3JrIGluIHNlcnZlciBtb2RlIikKKworICAg ICAgICBzZWxmLnBnYWRtaW5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4o WyJweXRob24iLCAicGdBZG1pbjQucHkiXSwgc2hlbGw9RmFsc2UsIHByZWV4 ZWNfZm49b3Muc2V0c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPW9wZW4ob3MuZGV2bnVsbCwg J3cnKSkKKworICAgICAgICBkcml2ZXIgPSB3ZWJkcml2ZXIuQ2hyb21lKCkK KyAgICAgICAgc2VsZi5hcHBfc3RhcnRlciA9IEFwcFN0YXJ0ZXIoZHJpdmVy LCBhcHBfY29uZmlnKQorICAgICAgICBzZWxmLnBhZ2UgPSBQZ2FkbWluUGFn ZShkcml2ZXIsIGFwcF9jb25maWcpCisKKyAgICAgICAgdGVzdF91dGlscy5j cmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsICJhY2NlcHRhbmNlX3Rlc3Rf ZGIiKQorCisgICAgICAgIHNlbGYuYXBwX3N0YXJ0ZXIuc3RhcnRfYXBwKCkK KyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX2FwcCgpCisKKworICAgIGRl ZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFw cF9jb25maWcuQVBQX05BTUUsIHNlbGYucGFnZS5kcml2ZXIudGl0bGUpCisg ICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9zcGlubmVyX3RvX2Rpc2FwcGVh cigpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vKltA Y2xhc3M9J2FjaVRyZWVUZXh0JyBhbmQgLj0nU2VydmVycyddIikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9s aW5rX3RleHQoIk9iamVjdCIpLmNsaWNrKCkKKyAgICAgICAgQWN0aW9uQ2hh aW5zKHNlbGYucGFnZS5kcml2ZXIpIFwKKyAgICAgICAgICAgIC5tb3ZlX3Rv X2VsZW1lbnQoc2VsZi5wYWdlLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlu a190ZXh0KCJDcmVhdGUiKSkgXAorICAgICAgICAgICAgLnBlcmZvcm0oKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgi U2VydmVyLi4uIikuY2xpY2soKQorCisgICAgICAgIHNlcnZlcl9jb25maWcg PSBzZWxmLnNlcnZlcgorICAgICAgICBzZWxmLnBhZ2UuZmlsbF9pbnB1dF9i eV9maWVsZF9uYW1lKCJuYW1lIiwgc2VydmVyX2NvbmZpZ1snbmFtZSddKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgi Q29ubmVjdGlvbiIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxf aW5wdXRfYnlfZmllbGRfbmFtZSgiaG9zdCIsIHNlcnZlcl9jb25maWdbJ2hv c3QnXSkKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRf bmFtZSgicG9ydCIsIHNlcnZlcl9jb25maWdbJ3BvcnQnXSkKKyAgICAgICAg c2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgidXNlcm5hbWUi LCBzZXJ2ZXJfY29uZmlnWyd1c2VybmFtZSddKQorICAgICAgICBzZWxmLnBh Z2UuZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1lKCJwYXNzd29yZCIsIHNlcnZl cl9jb25maWdbJ2RiX3Bhc3N3b3JkJ10pCisgICAgICAgIHNlbGYucGFnZS5m aW5kX2J5X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyguLCdTYXZlJyldIiku Y2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIv LypbQGlkPSd0cmVlJ10vLypbLj0nIiArIHNlcnZlcl9jb25maWdbJ25hbWUn XSArICInXSIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAg IHNlbGYucGFnZS5kcml2ZXIuY2xvc2UoKQorICAgICAgICBvcy5raWxscGco b3MuZ2V0cGdpZChzZWxmLnBnYWRtaW5fcHJvY2Vzcy5waWQpLCBzaWduYWwu U0lHVEVSTSkKKworICAgIGRlZiBmYWlsdXJlRXhjZXB0aW9uKHNlbGYsICph cmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuc2F2 ZV9zY3JlZW5zaG90KCcvdG1wL3BnYWRtaW5fdGVzdF9zY3JlZW5zaG90LnBu ZycpCisgICAgICAgIHJldHVybiBBc3NlcnRpb25FcnJvcigqYXJncywgKipr d2FyZ3MpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5w eSBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CmluZGV4IGYxOGQyYzE4 Li5mZWQyNmEwZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvcm91 dGUucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKQEAgLTU0 LDIwICs1NCwyNSBAQCBjbGFzcyBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5KEFC Q01ldGEpOgogICAgICAgICBBQkNNZXRhLl9faW5pdF9fKGNscywgbmFtZSwg YmFzZXMsIGQpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbG9hZF9n ZW5lcmF0b3JzKGNscywgcGtnKToKKyAgICBkZWYgbG9hZF9nZW5lcmF0b3Jz KGNscywgKnBrZ3MpOgogCiAgICAgICAgIGNscy5yZWdpc3RyeSA9IGRpY3Qo KQogCisgICAgICAgIGFsbF9tb2R1bGVzID0gW10KKworICAgICAgICBmb3Ig cGtnIGluIHBrZ3M6CisgICAgICAgICAgICBhbGxfbW9kdWxlcyArPSBmaW5k X21vZHVsZXMocGtnLCBGYWxzZSwgVHJ1ZSkKKworCiAgICAgICAgICMgQ2hl Y2sgZm9yIFNFUlZFUiBtb2RlCi0gICAgICAgIGlmIGNvbmZpZy5TRVJWRVJf TU9ERToKLSAgICAgICAgICAgIGZvciBtb2R1bGVfbmFtZSBpbiBmaW5kX21v ZHVsZXMocGtnLCBGYWxzZSwgVHJ1ZSk6CisgICAgICAgIGZvciBtb2R1bGVf bmFtZSBpbiBhbGxfbW9kdWxlczoKKyAgICAgICAgICAgIGlmIGNvbmZpZy5T RVJWRVJfTU9ERToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAg ICAgICAgICAgIGlmICJ0ZXN0cy4iIGluIHN0cihtb2R1bGVfbmFtZSk6CiAg ICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfbW9kdWxlKG1vZHVsZV9u YW1lKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAg ICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5 cy5zdGRlcnIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbW9k dWxlX25hbWUgaW4gZmluZF9tb2R1bGVzKHBrZywgRmFsc2UsIFRydWUpOgor ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAg ICAgICAgICAgICAgICAgICMgRXhjbHVkZSB0aGUgdGVzdCBjYXNlcyBpbiBi cm93c2VyIG5vZGUgaWYgU0VSVkVSX01PREUKICAgICAgICAgICAgICAgICAg ICAgIyBpcyBGYWxzZQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vLmdp dGlnbm9yZSBiL3dlYi9yZWdyZXNzaW9uLy5naXRpZ25vcmUKaW5kZXggMDU4 MTgxMGIuLjcyM2ZjZTdlIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi8u Z2l0aWdub3JlCisrKyBiL3dlYi9yZWdyZXNzaW9uLy5naXRpZ25vcmUKQEAg LTEsNCArMSw1IEBACiBwYXJlbnRfaWQucGtsCiByZWdyZXNzaW9uLmxvZwor dGVzdF9ncmVlbnBsdW1fY29uZmlnLmpzb24KIHRlc3RfYWR2YW5jZWRfY29u ZmlnLmpzb24KIHRlc3RfY29uZmlnLmpzb24KZGlmZiAtLWdpdCBhL3dlYi9y ZWdyZXNzaW9uL1JFQURNRSBiL3dlYi9yZWdyZXNzaW9uL1JFQURNRQppbmRl eCA4Y2MyOTk4Ny4uYWU1ZDI2OGQgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL1JFQURNRQorKysgYi93ZWIvcmVncmVzc2lvbi9SRUFETUUKQEAgLTEw Myw2ICsxMDMsMTAgQEAgVGVzdCBEYXRhIERldGFpbHMKIEV4ZWN1dGlvbjoK IC0tLS0tLS0tLS0tCiAKKy0gRm9yIGFjY2VwdGFuY2UgdGVzdHMgdG8gcnVu IGFzIHBhcnQgb2YgdGhlIGVudGlyZSB0ZXN0IHN1aXRlLCBDaHJvbWUgYW5k IGNocm9tZWRyaXZlciBuZWVkIHRvIGJlIGluc3RhbGxlZDoKKyAgZ2V0IGNo cm9tZWRyaXZlciBmcm9tIGh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2No cm9taXVtLm9yZy9jaHJvbWVkcml2ZXIvZG93bmxvYWRzIG9yIGEgcGFja2Fn ZSBtYW5hZ2VyCisgIGFuZCBtYWtlIHN1cmUgaXQgaXMgb24gdGhlIFBBVEgK KwogLSBUaGUgdGVzdCBmcmFtZXdvcmsgaXMgbW9kdWxhciBhbmQgcGx1Z2dh YmxlIGFuZCBkeW5hbWljYWxseSBsb2NhdGVzIHRlc3RzCiAgIGZvciBtb2R1 bGVzIHdoaWNoIGFyZSBkaXNjb3ZlcmVkIGF0IHJ1bnRpbWUuIEFsbCB0ZXN0 IGNhc2VzIGFyZSBmb3VuZAogICBhbmQgcmVnaXN0ZXJlZCBhdXRvbWF0aWNh bGx5IGJ5IGl0cyBtb2R1bGUgbmFtZSBpbgpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vdGVzdF91dGlscy5weSBiL3dlYi9yZWdyZXNzaW9uL3Rlc3Rf dXRpbHMucHkKaW5kZXggMWY5ZjA1MjIuLjY4ZjM2Y2JjIDEwMDY0NAotLS0g YS93ZWIvcmVncmVzc2lvbi90ZXN0X3V0aWxzLnB5CisrKyBiL3dlYi9yZWdy ZXNzaW9uL3Rlc3RfdXRpbHMucHkKQEAgLTEzNCw2ICsxMzQsMjQgQEAgZGVm IGNyZWF0ZV9kYXRhYmFzZShzZXJ2ZXIsIGRiX25hbWUpOgogICAgICAgICB0 cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKIAogCitkZWYg Y3JlYXRlX3RhYmxlKHNlcnZlciwgZGJfbmFtZSwgdGFibGVfbmFtZSk6Cisg ICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gZ2V0X2RiX2Nvbm5lY3Rp b24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZl clsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyWydwb3J0J10pCisgICAgICAgIG9sZF9pc29sYXRpb25f bGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9sZXZlbAorICAgICAgICBj b25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkKKyAgICAgICAgcGdf Y3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBwZ19jdXJz b3IuZXhlY3V0ZSgnJydDUkVBVEUgVEFCTEUgIiVzIiAobmFtZSBWQVJDSEFS LCB2YWx1ZSBOVU1FUklDKScnJyAlIHRhYmxlX25hbWUpCisgICAgICAgIHBn X2N1cnNvci5leGVjdXRlKCcnJ0lOU0VSVCBJTlRPICIlcyIgVkFMVUVTICgn U29tZS1OYW1lJywgNiknJycgJSB0YWJsZV9uYW1lKQorICAgICAgICBjb25u ZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwob2xkX2lzb2xhdGlvbl9sZXZl bCkKKyAgICAgICAgY29ubmVjdGlvbi5jb21taXQoKQorCisgICAgZXhjZXB0 IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxl PXN5cy5zdGRlcnIpCisKIGRlZiBkcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24s IGRhdGFiYXNlX25hbWUpOgogICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlZCB0 byBkcm9wIHRoZSBkYXRhYmFzZSIiIgogICAgIGlmIGRhdGFiYXNlX25hbWUg bm90IGluIFsicG9zdGdyZXMiLCAidGVtcGxhdGUxIiwgInRlbXBsYXRlMCJd OgpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vdXRpbHMvX19pbml0X18u cHkgYi93ZWIvcmVncmVzc2lvbi91dGlscy9fX2luaXRfXy5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZTY5ZGUyOWIKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL3V0aWxzL2FwcF9zdGFydGVyLnB5IGIv d2ViL3JlZ3Jlc3Npb24vdXRpbHMvYXBwX3N0YXJ0ZXIucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmMwOTNmMDQ2Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vdXRpbHMvYXBwX3N0YXJ0ZXIu cHkKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3VicHJv Y2VzcworCitpbXBvcnQgc2lnbmFsCisKKworY2xhc3MgQXBwU3RhcnRlcjoK KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkcml2ZXIsIGFwcF9jb25maWcp OgorICAgICAgICBzZWxmLmRyaXZlciA9IGRyaXZlcgorICAgICAgICBzZWxm LmFwcF9jb25maWcgPSBhcHBfY29uZmlnCisKKyAgICBkZWYgc3RhcnRfYXBw KHNlbGYpOgorICAgICAgICBzZWxmLnBnYWRtaW5fcHJvY2VzcyA9IHN1YnBy b2Nlc3MuUG9wZW4oWyJweXRob24iLCAicGdBZG1pbjQucHkiXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo ZWxsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJlZXhlY19mbj1vcy5zZXRzaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl cnI9b3Blbihvcy5kZXZudWxsLCAndycpKQorCisgICAgICAgIHByaW50KCJv cGVuaW5nIGJyb3dzZXIiKQorICAgICAgICBzZWxmLmRyaXZlci5nZXQoImh0 dHA6Ly8iICsgc2VsZi5hcHBfY29uZmlnLkRFRkFVTFRfU0VSVkVSICsgIjoi ICsgc3RyKHNlbGYuYXBwX2NvbmZpZy5ERUZBVUxUX1NFUlZFUl9QT1JUKSkK KworICAgIGRlZiBzdG9wX2FwcChzZWxmKToKKyAgICAgICAgc2VsZi5kcml2 ZXIuY2xvc2UoKQorICAgICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxm LnBnYWRtaW5fcHJvY2Vzcy5waWQpLCBzaWduYWwuU0lHVEVSTSkKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL3V0aWxzL3BnYWRtaW5fcGFnZS5weSBi L3dlYi9yZWdyZXNzaW9uL3V0aWxzL3BnYWRtaW5fcGFnZS5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMWM4ODU3ZjIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi91dGlscy9wZ2FkbWluX3Bh Z2UucHkKQEAgLTAsMCArMSwxMDMgQEAKK2ltcG9ydCB0aW1lCitmcm9tIHNl bGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCBOb1N1Y2hFbGVtZW50 RXhjZXB0aW9uCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlciBpbXBvcnQgQWN0 aW9uQ2hhaW5zCisKKworY2xhc3MgUGdhZG1pblBhZ2U6CisgICAgZGVmIF9f aW5pdF9fKHNlbGYsIGRyaXZlciwgYXBwX2NvbmZpZyk6CisgICAgICAgIHNl bGYuZHJpdmVyID0gZHJpdmVyCisgICAgICAgIHNlbGYuYXBwX2NvbmZpZyA9 IGFwcF9jb25maWcKKworICAgIGRlZiBhZGRfc2VydmVyKHNlbGYsIHNlcnZl cl9jb25maWcpOgorICAgICAgICBzZWxmLndhaXRfZm9yX3NwaW5uZXJfdG9f ZGlzYXBwZWFyKCkKKworICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8v KltAY2xhc3M9J2FjaVRyZWVUZXh0JyBhbmQgLj0nU2VydmVycyddIikuY2xp Y2soKQorICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlu a190ZXh0KCJPYmplY3QiKS5jbGljaygpCisgICAgICAgIEFjdGlvbkNoYWlu cyhzZWxmLmRyaXZlcikgXAorICAgICAgICAgICAgLm1vdmVfdG9fZWxlbWVu dChzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJDcmVh dGUiKSkgXAorICAgICAgICAgICAgLnBlcmZvcm0oKQorICAgICAgICBzZWxm LmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIlNlcnZlci4uLiIpLmNsaWNr KCkKKworICAgICAgICBzZWxmLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgi bmFtZSIsIHNlcnZlcl9jb25maWdbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5m aW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJDb25uZWN0aW9uIikuY2xpY2so KQorICAgICAgICBzZWxmLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiaG9z dCIsIHNlcnZlcl9jb25maWdbJ2hvc3QnXSkKKyAgICAgICAgc2VsZi5maWxs X2lucHV0X2J5X2ZpZWxkX25hbWUoInBvcnQiLCBzZXJ2ZXJfY29uZmlnWydw b3J0J10pCisgICAgICAgIHNlbGYuZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1l KCJ1c2VybmFtZSIsIHNlcnZlcl9jb25maWdbJ3VzZXJuYW1lJ10pCisgICAg ICAgIHNlbGYuZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1lKCJwYXNzd29yZCIs IHNlcnZlcl9jb25maWdbJ2RiX3Bhc3N3b3JkJ10pCisgICAgICAgIHNlbGYu ZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoLiwnU2F2ZScpXSIp LmNsaWNrKCkKKworICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vKltA aWQ9J3RyZWUnXS8vKlsuPSciICsgc2VydmVyX2NvbmZpZ1snbmFtZSddICsg IiddIikKKworICAgIGRlZiByZW1vdmVfc2VydmVyKHNlbGYsIHNlcnZlcl9j b25maWcpOgorICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vKltAaWQ9 J3RyZWUnXS8vKlsuPSciICsgc2VydmVyX2NvbmZpZ1snbmFtZSddICsgIidd IikuY2xpY2soKQorICAgICAgICBzZWxmLmZpbmRfYnlfcGFydGlhbF9saW5r X3RleHQoIk9iamVjdCIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5maW5kX2J5 X3BhcnRpYWxfbGlua190ZXh0KCJEZWxldGUvRHJvcCIpLmNsaWNrKCkKKyAg ICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgIHNlbGYuZmluZF9ieV94 cGF0aCgiLy9idXR0b25bY29udGFpbnMoLiwnT0snKV0iKS5jbGljaygpCisK KyAgICBkZWYgdG9nZ2xlX29wZW5fdHJlZV9pdGVtKHNlbGYsIHRyZWVfaXRl bV90ZXh0KToKKyAgICAgICAgc2VsZi5maW5kX2J5X3hwYXRoKCIvLypbQGlk PSd0cmVlJ10vLypbLj0nIiArIHRyZWVfaXRlbV90ZXh0ICsgIiddLy4uLypb QGNsYXNzPSdhY2lUcmVlQnV0dG9uJ10iKS5jbGljaygpCisKKyAgICBkZWYg ZmluZF9ieV94cGF0aChzZWxmLCB4cGF0aCk6CisgICAgICAgIHJldHVybiBz ZWxmLndhaXRfZm9yX2VsZW1lbnQobGFtYmRhOiBzZWxmLmRyaXZlci5maW5k X2VsZW1lbnRfYnlfeHBhdGgoeHBhdGgpKQorCisgICAgZGVmIGZpbmRfYnlf aWQoc2VsZiwgZWxlbWVudF9pZCk6CisgICAgICAgIHJldHVybiBzZWxmLndh aXRfZm9yX2VsZW1lbnQobGFtYmRhOiBzZWxmLmRyaXZlci5maW5kX2VsZW1l bnRfYnlfaWQoZWxlbWVudF9pZCkpCisKKyAgICBkZWYgZmluZF9ieV9wYXJ0 aWFsX2xpbmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgorICAgICAgICByZXR1 cm4gc2VsZi53YWl0X2Zvcl9lbGVtZW50KGxhbWJkYTogc2VsZi5kcml2ZXIu ZmluZF9lbGVtZW50X2J5X3BhcnRpYWxfbGlua190ZXh0KGxpbmtfdGV4dCkp CisKKyAgICBkZWYgZmlsbF9pbnB1dF9ieV9maWVsZF9uYW1lKHNlbGYsIGZp ZWxkX25hbWUsIGZpZWxkX2NvbnRlbnQpOgorICAgICAgICBzZWxmLmZpbmRf YnlfeHBhdGgoIi8vaW5wdXRbQG5hbWU9JyIgKyBmaWVsZF9uYW1lICsgIidd IikuY2xlYXIoKQorICAgICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vaW5w dXRbQG5hbWU9JyIgKyBmaWVsZF9uYW1lICsgIiddIikuc2VuZF9rZXlzKAor ICAgICAgICAgICAgZmllbGRfY29udGVudCkKKworICAgIGRlZiBmaWxsX2Nv ZGVtaXJyb3JfYXJlYV93aXRoKHNlbGYsIGZpZWxkX2NvbnRlbnQpOgorICAg ICAgICBzZWxmLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICAiLy9wcmVb Y29udGFpbnMoQGNsYXNzLCdDb2RlTWlycm9yLWxpbmUnKV0vLi4vLi4vLi4v Kltjb250YWlucyhAY2xhc3MsJ0NvZGVNaXJyb3ItY29kZScpXSIpLmNsaWNr KCkKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKS5zZW5kX2tl eXMoZmllbGRfY29udGVudCkucGVyZm9ybSgpCisKKyAgICBkZWYgd2FpdF9m b3JfZWxlbWVudChzZWxmLCBmaW5kX21ldGhvZF93aXRoX2FyZ3MpOgorICAg ICAgICBkZWYgZWxlbWVudF9pZl9pdF9leGlzdHMoKToKKyAgICAgICAgICAg IHRyeToKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZmluZF9tZXRob2Rf d2l0aF9hcmdzKCkKKyAgICAgICAgICAgICAgICBpZiBlbGVtZW50LmlzX2Rp c3BsYXllZCgpICYgZWxlbWVudC5pc19lbmFibGVkKCk6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBlbGVtZW50CisgICAgICAgICAgICBleGNlcHQg Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1 cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fd2FpdF9mb3IoImVs ZW1lbnQgdG8gZXhpc3QiLCBlbGVtZW50X2lmX2l0X2V4aXN0cykKKworICAg IGRlZiB3YWl0X2Zvcl9zcGlubmVyX3RvX2Rpc2FwcGVhcihzZWxmKToKKyAg ICAgICAgZGVmIHNwaW5uZXJfaGFzX2Rpc2FwcGVhcmVkKCk6CisgICAgICAg ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9l bGVtZW50X2J5X2lkKCJwZy1zcGlubmVyIikKKyAgICAgICAgICAgICAgICBy ZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBOb1N1Y2hFbGVtZW50 RXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAg ICAgICAgc2VsZi5fd2FpdF9mb3IoInNwaW5uZXIgdG8gZGlzYXBwZWFyIiwg c3Bpbm5lcl9oYXNfZGlzYXBwZWFyZWQpCisKKyAgICBkZWYgd2FpdF9mb3Jf YXBwKHNlbGYpOgorICAgICAgICBkZWYgcGFnZV9zaG93c19hcHAoKToKKyAg ICAgICAgICAgIGlmIHNlbGYuZHJpdmVyLnRpdGxlID09IHNlbGYuYXBwX2Nv bmZpZy5BUFBfTkFNRToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmRyaXZl ci5yZWZyZXNoKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwor ICAgICAgICBzZWxmLl93YWl0X2ZvcigiYXBwIHRvIHN0YXJ0IiwgcGFnZV9z aG93c19hcHApCisKKyAgICBkZWYgX3dhaXRfZm9yKHNlbGYsIHdhaXRpbmdf Zm9yX21lc3NhZ2UsIGNvbmRpdGlvbl9tZXRfZnVuY3Rpb24pOgorICAgICAg ICB0aW1lb3V0ID0gNQorICAgICAgICB0aW1lX3dhaXRlZCA9IDAKKyAgICAg ICAgc2xlZXBfdGltZSA9IDAuMDEKKworICAgICAgICB3aGlsZSB0aW1lX3dh aXRlZCA8IHRpbWVvdXQ6CisgICAgICAgICAgICByZXN1bHQgPSBjb25kaXRp b25fbWV0X2Z1bmN0aW9uKCkKKyAgICAgICAgICAgIGlmIHJlc3VsdDoKKyAg ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgICAgICB0aW1l X3dhaXRlZCArPSBzbGVlcF90aW1lCisgICAgICAgICAgICB0aW1lLnNsZWVw KHNsZWVwX3RpbWUpCisKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0 aW1lZCBvdXQgd2FpdGluZyBmb3IgIiArIHdhaXRpbmdfZm9yX21lc3NhZ2Up Cg== --94eb2c19f92628657b0547070943 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --94eb2c19f92628657b0547070943--