Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cULvI-0001U9-VJ for pgadmin-hackers@arkaria.postgresql.org; Thu, 19 Jan 2017 23:15:17 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cULvH-0002BQ-9b for pgadmin-hackers@arkaria.postgresql.org; Thu, 19 Jan 2017 23:15:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cULvG-00029t-5v for pgadmin-hackers@postgresql.org; Thu, 19 Jan 2017 23:15:14 +0000 Received: from mail-yb0-x229.google.com ([2607:f8b0:4002:c09::229]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1cULv9-00086O-TQ for pgadmin-hackers@postgresql.org; Thu, 19 Jan 2017 23:15:13 +0000 Received: by mail-yb0-x229.google.com with SMTP id 123so39777930ybe.3 for ; Thu, 19 Jan 2017 15:15:06 -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=UYGWG4MdrIWo6gRjF2s7u/ncDTEbyMEEfnPSqqLyxFY=; b=Ekx06FUuPdWl7EyF747RtbQvqi8gqVtf5cgoxLdhc4CmlXcHmDvLYVnt3FwyHwbNsr xii73sVrzQigBvKb2qL8+xu2ozRCTQAH4l5s2oJy8SgwNWH4yMJVIwkS0BtYZreR/Wqk 1zlis/SA7MvLRZYlbjLvlMfG163hi4mpw6gJEr3jC+zWGmLpCv0hrxjbZ2tCNlT0jZSr /JA5rnrjFxf4ziibHetjaYvw8ePuv83cT+pZ31pCL44LD4IlVZ/OScm1T15bdPkrEDYE nunE2W8oeeb7y/Z91zOJMGFqDa4RADxqUEOCml11ns4Wk6k2yLSe+SDQx4DafOubJTT7 nCWQ== 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=UYGWG4MdrIWo6gRjF2s7u/ncDTEbyMEEfnPSqqLyxFY=; b=K9S6H7hUfIW+HGdatlQ/VWq7y21hFgubg9kRHjb/JIith5PF7Gq/pdpGhBZ3Sryu87 cIsMqUdAvD0IxI1lDB8j2UCJPTN+MXAAffLWeYB3pQ/Ag444RCEJcIVrM9K8tfm87y4r Zzfv7ZFYIDF0yZ+4fEpvR7R49zJbny/bqQGtoqndZCGJip5sCerQqj0MI/xv4gWuWcca TTUsfPLUjzN5qcdrhI2hCCRYMxsTvwCMQbDxg0i0frI7MVq/4JqYiViI+KEnT2MF91uK SkeJUfvGokQyr5krmxsQ9QmT7j3adI5lej2Kj067d6zEaWa8yicpkT9H4qY1s/DoEPdL Iztg== X-Gm-Message-State: AIkVDXLhkL82CxjhWyMZgAsjJMXkMZL3qrjWoYkpKTlu0F6NkL18GyTFyLBr62XK3CYv3VY3CILkDUHqdm50uPZV X-Received: by 10.37.24.4 with SMTP id 4mr8948009yby.0.1484867704971; Thu, 19 Jan 2017 15:15:04 -0800 (PST) MIME-Version: 1.0 Received: by 10.37.170.171 with HTTP; Thu, 19 Jan 2017 15:15:04 -0800 (PST) In-Reply-To: References: From: George Gelashvili Date: Thu, 19 Jan 2017 18:15:04 -0500 Message-ID: Subject: Re: Acceptance Tests against a browser (WIP) To: Atira Odhner Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a113fcc54185ec205467ab45a 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 --001a113fcc54185ec205467ab45a Content-Type: multipart/alternative; boundary=001a113fcc54185ebc05467ab458 --001a113fcc54185ebc05467ab458 Content-Type: text/plain; charset=UTF-8 Here's an updated patch which polls to wait for the app to start instead of sleeping for 10 seconds. On Thu, Jan 19, 2017 at 5: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? > > 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 >> >> >> > --001a113fcc54185ebc05467ab458 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Here's an updated patch which polls to wait for the ap= p to start instead of sleeping for 10 seconds.

On Thu, Jan 19, 2017 at 5:07 PM, George = Gelashvili <ggelashvili@pivotal.io> wrote:

Here is an updated patch wh= ich starts the server up when the test starts and uses the values from conf= ig.py for server name etc. It still requires installing chromedriver before= running. Should we add something to the readme about that?

On Tue, Jan 17, 2017 at 11:09 AM, Atira Odhner <aodhne= r@pivotal.io> wrote:
Thanks for your feedback, Dave!

We= can put the tests under the regression directory. I think that makes sense= .=C2=A0
I'm not picturing these tests being module specific, = but we may want to enable running it as a separate suite of tests.=C2=A0

Thanks for the callout about the port and title. We&= #39;ll make sure those are pulled from config or that the pgAdmin server is= spun up by the test with specific values.=C2=A0

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

-Tir= a

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 ou=
r branch
> at:
> https://github.com/pivotalsoftware/pgadmin4/tree/pivotal/ac=
ceptance-tests
>
> 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 acceptance tests that e=
xercise
>> pgAdmin4 the way a user might.

Nice!

>> The first "connect to database" test works, but at the m=
oment depends on
>> Chrome and chromedriver. We would appreciate feedback on any possi=
ble
>> license or code style issues at this point, as well as any thought=
s 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 t=
o 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' !=3D 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!

--=20
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com= The Enterprise PostgreSQL Company



--001a113fcc54185ebc05467ab458-- --001a113fcc54185ec205467ab45a Content-Type: text/plain; charset=US-ASCII; name="acceptance-tests-with-server-start-and-polling.diff" Content-Disposition: attachment; filename="acceptance-tests-with-server-start-and-polling.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iy4zpouh1 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50c19weTIudHh0IGIvcmVxdWlyZW1l bnRzX3B5Mi50eHQKaW5kZXggNTExNzBhNDUuLmRlMTY3MTIxIDEwMDY0NAot LS0gYS9yZXF1aXJlbWVudHNfcHkyLnR4dAorKysgYi9yZXF1aXJlbWVudHNf cHkyLnR4dApAQCAtMzYsNiArMzYsNyBAQCB0ZXN0c2NlbmFyaW9zPT0wLjUu MAogdGVzdHRvb2xzPT0yLjAuMAogdHJhY2ViYWNrMj09MS40LjAKIHVuaXR0 ZXN0Mj09MS4xLjAKK3NlbGVuaXVtPT0zLjAuMgogV2Vya3pldWc9PTAuOS42 CiBXVEZvcm1zPT0yLjAuMgogc3FscGFyc2U9PTAuMS4xOQpkaWZmIC0tZ2l0 IGEvcmVxdWlyZW1lbnRzX3B5My50eHQgYi9yZXF1aXJlbWVudHNfcHkzLnR4 dAppbmRleCBmNjhkYjdhOC4uOTU2NWE2ZTQgMTAwNjQ0Ci0tLSBhL3JlcXVp cmVtZW50c19weTMudHh0CisrKyBiL3JlcXVpcmVtZW50c19weTMudHh0CkBA IC0zNSw2ICszNSw3IEBAIHRlc3RzY2VuYXJpb3M9PTAuNS4wCiB0ZXN0dG9v bHM9PTIuMC4wCiB0cmFjZWJhY2syPT0xLjQuMAogdW5pdHRlc3QyPT0xLjEu MAorc2VsZW5pdW09PTMuMC4yCiBXZXJremV1Zz09MC45LjYKIFdURm9ybXM9 PTIuMC4yCiBzcWxwYXJzZT09MC4xLjE5CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9hY2NlcHRhbmNlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYWNj ZXB0YW5jZS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uZTY5ZGUyOWIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2FjY2VwdGFuY2UvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9h Y2NlcHRhbmNlL3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwLi5lNjlkZTI5YgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy90ZXN0X2Nvbm5lY3RzX3RvX2Rh dGFiYXNlLnB5IGIvd2ViL3BnYWRtaW4vYWNjZXB0YW5jZS90ZXN0cy90ZXN0 X2Nvbm5lY3RzX3RvX2RhdGFiYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi4yYzRmODVjNAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2FjY2VwdGFuY2UvdGVzdHMvdGVzdF9jb25uZWN0c190 b19kYXRhYmFzZS5weQpAQCAtMCwwICsxLDEyMyBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQgdGltZQorCitmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJk cml2ZXIKK2Zyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0 IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24KK2Zyb20gc2VsZW5pdW0ud2ViZHJp dmVyIGltcG9ydCBBY3Rpb25DaGFpbnMKKworZnJvbSBwZ2FkbWluLnV0aWxz LnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpbXBvcnQgc3Vi cHJvY2VzcworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgY29u ZmlnCisKKworY2xhc3MgQ29ubmVjdHNUb0RhdGFiYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKKyAgICAiIiIKKyAgICBUZXN0cyB0aGF0IGEgZGF0YWJhc2Ug Y29ubmVjdGlvbiBjYW4gYmUgY3JlYXRlZCBmcm9tIHRoZSBVSQorICAgICIi IgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiAoY29uZmln LlNFUlZFUl9NT0RFKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkN1 cnJlbnRseSwgY29uZmlnIGlzIHNldCB0byBzdGFydCBwZ2FkbWluIGluIHNl cnZlciBtb2RlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlz IHRlc3QgZG9lc24ndCBrbm93IHVzZXJuYW1lIGFuZCBwYXNzd29yZCBzbyBk b2Vzbid0IHdvcmsgaW4gc2VydmVyIG1vZGUiKQorCisgICAgICAgIHNlbGYu cGdhZG1pbl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbInB5dGhvbiIs ICJwZ0FkbWluNC5weSJdLCBzaGVsbD1GYWxzZSwgcHJlZXhlY19mbj1vcy5z ZXRzaWQsIHN0ZGVycj1vcGVuKG9zLmRldm51bGwsICd3JykpCisKKyAgICAg ICAgc2VsZi5kcml2ZXIgPSB3ZWJkcml2ZXIuQ2hyb21lKCkKKyAgICAgICAg c2VsZi5zZXJ2ZXJfY29uZmlnID0gc2VsZi5zZXJ2ZXIKKworICAgICAgICBw cmludCgib3BlbmluZyBicm93c2VyIikKKyAgICAgICAgc2VsZi5kcml2ZXIu Z2V0KCJodHRwOi8vIiArIGNvbmZpZy5ERUZBVUxUX1NFUlZFUiArICI6IiAr IHN0cihjb25maWcuREVGQVVMVF9TRVJWRVJfUE9SVCkpCisgICAgICAgIHNl bGYuX3dhaXRfZm9yX2FwcCgpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToK KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcuQVBQX05BTUUsIHNl bGYuZHJpdmVyLnRpdGxlKQorICAgICAgICBzZWxmLl93YWl0X2Zvcl9zcGlu bmVyX3RvX2Rpc2FwcGVhcigpCisKKyAgICAgICAgc2VsZi5fZmluZF9ieV94 cGF0aCgiLy8qW0BjbGFzcz0nYWNpVHJlZVRleHQnIGFuZCAuPSdTZXJ2ZXJz J10iKS5jbGljaygpCisgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVu dF9ieV9saW5rX3RleHQoIk9iamVjdCIpLmNsaWNrKCkKKyAgICAgICAgQWN0 aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKSBcCisgICAgICAgICAgICAubW92ZV90 b19lbGVtZW50KHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3Rl eHQoIkNyZWF0ZSIpKSBcCisgICAgICAgICAgICAucGVyZm9ybSgpCisgICAg ICAgIHNlbGYuX2ZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIlNlcnZlci4u LiIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLl9maWxsX2lucHV0X2J5X3hw YXRoKCJuYW1lIiwgc2VsZi5zZXJ2ZXJfY29uZmlnWyduYW1lJ10pCisgICAg ICAgIHNlbGYuX2ZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIkNvbm5lY3Rp b24iKS5jbGljaygpCisgICAgICAgIHNlbGYuX2ZpbGxfaW5wdXRfYnlfeHBh dGgoImhvc3QiLCBzZWxmLnNlcnZlcl9jb25maWdbJ2hvc3QnXSkKKyAgICAg ICAgc2VsZi5fZmlsbF9pbnB1dF9ieV94cGF0aCgicG9ydCIsIHNlbGYuc2Vy dmVyX2NvbmZpZ1sncG9ydCddKQorICAgICAgICBzZWxmLl9maWxsX2lucHV0 X2J5X3hwYXRoKCJ1c2VybmFtZSIsIHNlbGYuc2VydmVyX2NvbmZpZ1sndXNl cm5hbWUnXSkKKyAgICAgICAgc2VsZi5fZmlsbF9pbnB1dF9ieV94cGF0aCgi cGFzc3dvcmQiLCBzZWxmLnNlcnZlcl9jb25maWdbJ2RiX3Bhc3N3b3JkJ10p CisgICAgICAgIHNlbGYuX2ZpbmRfYnlfeHBhdGgoIi8vYnV0dG9uW2NvbnRh aW5zKC4sJ1NhdmUnKV0iKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5fZmlu ZF9ieV94cGF0aCgiLy8qW0BpZD0ndHJlZSddLy8qWy49JyIgKyBzZWxmLnNl cnZlcl9jb25maWdbJ25hbWUnXSArICInXSIpCisKKyAgICBkZWYgdGVhckRv d24oc2VsZik6CisgICAgICAgIHNlbGYuZHJpdmVyLmNsb3NlKCkKKyAgICAg ICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5wZ2FkbWluX3Byb2Nlc3Mu cGlkKSwgc2lnbmFsLlNJR1RFUk0pCisKKyAgICBkZWYgZmFpbHVyZUV4Y2Vw dGlvbihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmRy aXZlci5zYXZlX3NjcmVlbnNob3QoJy90bXAvcGdhZG1pbl90ZXN0X3NjcmVl bnNob3QucG5nJykKKyAgICAgICAgcmV0dXJuIEFzc2VydGlvbkVycm9yKCph cmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfZmluZF9ieV94cGF0aChzZWxm LCB4cGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLl93YWl0X2Zvcl9lbGVt ZW50KGxhbWJkYTogc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRo KHhwYXRoKSkKKworICAgIGRlZiBfZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4 dChzZWxmLCBsaW5rX3RleHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fd2Fp dF9mb3JfZWxlbWVudChsYW1iZGE6IHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVu dF9ieV9wYXJ0aWFsX2xpbmtfdGV4dChsaW5rX3RleHQpKQorCisgICAgZGVm IF9maWxsX2lucHV0X2J5X3hwYXRoKHNlbGYsIGZpZWxkX25hbWUsIGZpZWxk X2NvbnRlbnQpOgorICAgICAgICBzZWxmLl9maW5kX2J5X3hwYXRoKCIvL2lu cHV0W0BuYW1lPSciICsgZmllbGRfbmFtZSArICInXSIpLmNsZWFyKCkKKyAg ICAgICAgc2VsZi5fZmluZF9ieV94cGF0aCgiLy9pbnB1dFtAbmFtZT0nIiAr IGZpZWxkX25hbWUgKyAiJ10iKS5zZW5kX2tleXMoCisgICAgICAgICAgICBm aWVsZF9jb250ZW50KQorCisgICAgZGVmIF93YWl0X2Zvcl9lbGVtZW50KHNl bGYsIGZpbmRfbWV0aG9kX3dpdGhfYXJncyk6CisgICAgICAgIGRlZiBlbGVt ZW50X2lmX2l0X2V4aXN0cygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAg ICAgICAgICAgIGVsZW1lbnQgPSBmaW5kX21ldGhvZF93aXRoX2FyZ3MoKQor ICAgICAgICAgICAgICAgIGlmIGVsZW1lbnQuaXNfZGlzcGxheWVkKCkgJiBl bGVtZW50LmlzX2VuYWJsZWQoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGVsZW1lbnQKKyAgICAgICAgICAgIGV4Y2VwdCBOb1N1Y2hFbGVtZW50 RXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg ICAgICAgIHJldHVybiBzZWxmLl9fd2FpdF9mb3IoImVsZW1lbnQgdG8gZXhp c3QiLCBlbGVtZW50X2lmX2l0X2V4aXN0cykKKworICAgIGRlZiBfd2FpdF9m b3Jfc3Bpbm5lcl90b19kaXNhcHBlYXIoc2VsZik6CisgICAgICAgIGRlZiBz cGlubmVyX2hhc19kaXNhcHBlYXJlZCgpOgorICAgICAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9p ZCgicGctc3Bpbm5lciIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl CisgICAgICAgICAgICBleGNlcHQgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjoK KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHNlbGYu X193YWl0X2Zvcigic3Bpbm5lciB0byBkaXNhcHBlYXIiLCBzcGlubmVyX2hh c19kaXNhcHBlYXJlZCkKKworICAgIGRlZiBfd2FpdF9mb3JfYXBwKHNlbGYp OgorICAgICAgICBkZWYgcGFnZV9zaG93c19hcHAoKToKKyAgICAgICAgICAg IHNlbGYuZHJpdmVyLnJlZnJlc2goKQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZHJpdmVyLnRpdGxlID09IGNvbmZpZy5BUFBfTkFNRQorCisgICAgICAg IHNlbGYuX193YWl0X2ZvcigiYXBwIHRvIHN0YXJ0IiwgcGFnZV9zaG93c19h cHApCisKKyAgICBkZWYgX193YWl0X2ZvcihzZWxmLCB3YWl0aW5nX2Zvcl9t ZXNzYWdlLCBjb25kaXRpb25fbWV0X2Z1bmN0aW9uKToKKyAgICAgICAgdGlt ZW91dCA9IDUKKyAgICAgICAgdGltZV93YWl0ZWQgPSAwCisgICAgICAgIHNs ZWVwX3RpbWUgPSAwLjAxCisKKyAgICAgICAgd2hpbGUgdGltZV93YWl0ZWQg PCB0aW1lb3V0OgorICAgICAgICAgICAgcmVzdWx0ID0gY29uZGl0aW9uX21l dF9mdW5jdGlvbigpCisgICAgICAgICAgICBpZihyZXN1bHQpOgorICAgICAg ICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgICAgIHRpbWVfd2Fp dGVkICs9IHNsZWVwX3RpbWUKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xl ZXBfdGltZSkKKworICAgICAgICBzZWxmLmZhaWwoIlRpbWVkIG91dCB3YWl0 aW5nIGZvciAiICsgd2FpdGluZ19mb3JfbWVzc2FnZSkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5IGIvd2ViL3BnYWRtaW4vdXRp bHMvcm91dGUucHkKaW5kZXggZjE4ZDJjMTguLmZlZDI2YTBmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5weQorKysgYi93ZWIvcGdh ZG1pbi91dGlscy9yb3V0ZS5weQpAQCAtNTQsMjAgKzU0LDI1IEBAIGNsYXNz IFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkoQUJDTWV0YSk6CiAgICAgICAgIEFC Q01ldGEuX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgZCkKIAogICAgIEBj bGFzc21ldGhvZAotICAgIGRlZiBsb2FkX2dlbmVyYXRvcnMoY2xzLCBwa2cp OgorICAgIGRlZiBsb2FkX2dlbmVyYXRvcnMoY2xzLCAqcGtncyk6CiAKICAg ICAgICAgY2xzLnJlZ2lzdHJ5ID0gZGljdCgpCiAKKyAgICAgICAgYWxsX21v ZHVsZXMgPSBbXQorCisgICAgICAgIGZvciBwa2cgaW4gcGtnczoKKyAgICAg ICAgICAgIGFsbF9tb2R1bGVzICs9IGZpbmRfbW9kdWxlcyhwa2csIEZhbHNl LCBUcnVlKQorCisKICAgICAgICAgIyBDaGVjayBmb3IgU0VSVkVSIG1vZGUK LSAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFOgotICAgICAgICAgICAg Zm9yIG1vZHVsZV9uYW1lIGluIGZpbmRfbW9kdWxlcyhwa2csIEZhbHNlLCBU cnVlKToKKyAgICAgICAgZm9yIG1vZHVsZV9uYW1lIGluIGFsbF9tb2R1bGVz OgorICAgICAgICAgICAgaWYgY29uZmlnLlNFUlZFUl9NT0RFOgogICAgICAg ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgaWYgInRlc3Rz LiIgaW4gc3RyKG1vZHVsZV9uYW1lKToKICAgICAgICAgICAgICAgICAgICAg ICAgIGltcG9ydF9tb2R1bGUobW9kdWxlX25hbWUpCiAgICAgICAgICAgICAg ICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgICB0 cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAg ZWxzZToKLSAgICAgICAgICAgIGZvciBtb2R1bGVfbmFtZSBpbiBmaW5kX21v ZHVsZXMocGtnLCBGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBlbHNlOgog ICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBF eGNsdWRlIHRoZSB0ZXN0IGNhc2VzIGluIGJyb3dzZXIgbm9kZSBpZiBTRVJW RVJfTU9ERQogICAgICAgICAgICAgICAgICAgICAjIGlzIEZhbHNlCmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi8uZ2l0aWdub3JlIGIvd2ViL3JlZ3Jl c3Npb24vLmdpdGlnbm9yZQppbmRleCAwNTgxODEwYi4uNzIzZmNlN2UgMTAw NjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uLy5naXRpZ25vcmUKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vLmdpdGlnbm9yZQpAQCAtMSw0ICsxLDUgQEAKIHBhcmVu dF9pZC5wa2wKIHJlZ3Jlc3Npb24ubG9nCit0ZXN0X2dyZWVucGx1bV9jb25m aWcuanNvbgogdGVzdF9hZHZhbmNlZF9jb25maWcuanNvbgogdGVzdF9jb25m aWcuanNvbgo= --001a113fcc54185ec205467ab45a 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 --001a113fcc54185ec205467ab45a--