Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fQ6zU-0001LA-2C for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Jun 2018 08:06:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fQ6zS-0001Tg-Dj for pgadmin-hackers@arkaria.postgresql.org; Tue, 05 Jun 2018 08:06: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.89) (envelope-from ) id 1fQ6zR-0001TU-KM for pgadmin-hackers@lists.postgresql.org; Tue, 05 Jun 2018 08:06:50 +0000 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fQ6zM-00070Z-K4 for pgadmin-hackers@postgresql.org; Tue, 05 Jun 2018 08:06:48 +0000 Received: by mail-wr0-x243.google.com with SMTP id 94-v6so1317888wrf.5 for ; Tue, 05 Jun 2018 01:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgadmin-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=KvKr1AI0lUQHFaj3PkPvJ6fot46xL+h2ZbPqKlR/pt4=; b=PaPO+P2zklQUWgoY5pVhZKUcfpePbcDRdxvZnXNJ32sNP0e5M0iQ7FoFe4jeWJP6sI 3LIt32ykeA8r0GAltYxZCSVdSyAq9HGtkkymN1PVA7VsXF5VQ7K/7Gce5dQUVOqAR8F6 tF0NWhoya5kazFxamRStmS4JUkrs1EwOw+nLpXWjx0KrJF1P7JGtvqven/p1Qg5lM3c+ qvYYJ8s9zvMQY9h2zg+jbihc/vZuypdEQ4V4rRLCIOF0Yb5JXYr7qFmbuVqyHMFl42AN nCR9jpsqOoBQELlBNLNZBKzgp+hMn0NLW2ng6KkjASIzJf9Ri9gfbqtFTLq1SPh2VGqV /Bmg== 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=KvKr1AI0lUQHFaj3PkPvJ6fot46xL+h2ZbPqKlR/pt4=; b=OjQhc83g3loyu20zCooffb3eM8uJTvzLKLmBLVM2A8n+4ogsjXA1sh262k88oCQuxp JxM5UZBy27RCkAcyW1Xy1vFu/9re7PIfCKVvl4PogG1YL729C/WSsWqhKl+VTF4yGFcx qMn8JrLmgIMlpY8AQF00qwCVudQp/eVwfSRHRrCTRVfkoLjX1bfwj9w9N+agZ6oXouxP QwjbWq3bm57xnUG1hFygE/NCrJS1RCP6NdOAAnCwXKbElLNZaI82HIniAtlQdtT+NXO1 rhcPUiHZgYMHAD+z468m7Usw6XuGzxJpGGQQ8lB2bLV4CKijT0Db/U5EqTJm3uR8z/Ly uMRA== X-Gm-Message-State: ALKqPwfAhxlObumaigqsUYCo1ccb06881ZtJ2MlQj6widTS5a8z/hH/f TSn4aSA85v3HDhVpYTg1c6XX1nm8HOM1yV5s934AbtF9SKc= X-Google-Smtp-Source: ADUXVKIQ6bYk1O8t6zrTIgqp1cJkae6Y7ERUfS1c3KOFwuJWJNqbQYbftLDUuZr+GvLjyaFWTmnwrq9ZLmh0Dm1zrtw= X-Received: by 2002:adf:9950:: with SMTP id x74-v6mr17570455wrb.135.1528186002945; Tue, 05 Jun 2018 01:06:42 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a1c:2907:0:0:0:0:0 with HTTP; Tue, 5 Jun 2018 01:06:42 -0700 (PDT) In-Reply-To: References: From: Dave Page Date: Tue, 5 Jun 2018 09:06:42 +0100 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Khushboo Vashi Cc: Joao De Almeida Pereira , Victoria Henry , pgadmin-hackers Content-Type: multipart/alternative; boundary="000000000000db441e056de08716" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000db441e056de08716 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi On Tue, Jun 5, 2018 at 4:39 AM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > > > On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida Pereira < > jdealmeidapereira@pivotal.io> wrote: > >> Hi Khushboo, >> >> Some tests are failing in greenplum: >> https://gpdb-dev.bosh.pivotalci.info/teams/pgadmin/pipelines >> /pgadmin-patch/jobs/run-tests/builds/108 >> The piece of code responsible for the error is: >> >> if server['default_binary_paths'] is not None: >> test_utils.set_preference(server['default_binary_paths']) >> >> config.DEFAULT_BINARY_PATHS =3D { >> "pg": str(server['default_binary_paths']['pg']), >> "ppas": str(server['default_binary_paths']['ppas']), >> "gpdb": "" >> } >> >> >> Can you send me the test_config.json file? The above code sets the path= s > to the SQLite database and through the logs couldn't figure out the exact > failure. > It seems clear from the code shown that it's not setting the binary paths for gpdb database servers. Shouldn't it be something like: config.DEFAULT_BINARY_PATHS =3D { "pg": str(server['default_binary_paths']['pg']), "ppas": str(server['default_binary_paths']['ppas']), "gpdb": str(server['default_binary_paths']['gpdb']) } > test_backup_utils.py file name is misleading, these are not tests, are >> helpers. >> =E2=80=8B >> >> >> Thanks >> Victoria & Joao >> >> On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> >>> >>> On Sat, Jun 2, 2018 at 3:01 AM, Dave Page wrote: >>> >>>> Hi >>>> >>>> This looks good, except that it's leaving the test_restore_database >>>> behind. Can we clean that up please? >>>> >>>> PFA updated patch. >>> >>>> Thanks. >>>> >>>> On Fri, Jun 1, 2018 at 7:06 AM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi Victoria, >>>>> >>>>> Thanks for reviewing the patch. >>>>> The tests were failing due to the latest commit >>>>> #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f - Ensure >>>>> backup/restore/maintenance work via SSH tunnels. Fixes #3355 >>>>> >>>>> I have fixed the issues and attached the updated patch. >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>>> On Thu, May 31, 2018 at 10:00 PM, Victoria Henry >>>>> wrote: >>>>> >>>>>> Hi there, >>>>>> >>>>>> We've been noticing some issues with the tests on both our CI and >>>>>> local Mac workstations. >>>>>> >>>>>> 1. When the following code blocks are invoked - we get plenty of >>>>>> app.context() issues. It must not be valid when running tests. >>>>>> >>>>>> =E2=80=8B >>>>>> >>>>>> from pgadmin.utils.driver import get_driver >>>>>> driver =3D get_driver(PG_DEFAULT_DRIVER) >>>>>> manager =3D driver.connection_manager(self.sid) >>>>>> >>>>>> host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.ho= st >>>>>> port =3D manager.local_bind_port if manager.use_ssh_tunnel else s.po= rt >>>>>> >>>>>> 2. When we finally enable >>>>>> >>>>>> "default_binary_paths": { >>>>>> >>>>>> in our test_config, we get more failing tests that look like: >>>>>> >>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>> FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_u= nit_test.RestoreCreateJobTest) >>>>>> When restore object with option - Miscellaneous >>>>>> --------------------------------------------------------------------= -- >>>>>> Traceback (most recent call last): >>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/unittest/= mock.py", line 1179, in patched >>>>>> return func(*args, **keywargs) >>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/restore/= tests/test_restore_create_job_unit_test.py", line 295, in runTest >>>>>> self.assertEquals(response.status_code, 200) >>>>>> AssertionError: 410 !=3D 200 >>>>>> >>>>>> And >>>>>> >>>>>> When restore object with the sections options ... 2018-05-31 12:24:4= 2,988: ERROR pgadmin: illegal environment variable name >>>>>> Traceback (most recent call last): >>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/restore/= __init__.py", line 352, in create_restore_job >>>>>> manager.export_password_env(p.id) >>>>>> File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/driver/p= sycopg2/server_manager.py", line 365, in export_password_env >>>>>> os.environ[str(env)] =3D password >>>>>> File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.py", l= ine 675, in __setitem__ >>>>>> self.putenv(key, value) >>>>>> ValueError: illegal environment variable name >>>>>> FAIL >>>>>> >>>>>> =E2=80=8B >>>>>> >>>>>> Sincerely, >>>>>> >>>>>> Victoria && Anthony >>>>>> >>>>>> On Thu, May 31, 2018 at 1:16 AM Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Please find the attached updated patch with the fixes. >>>>>>> The test cases were only failing on MAC not on Linux. >>>>>>> >>>>>>> Thanks, >>>>>>> Khushboo >>>>>>> >>>>>>> On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi < >>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, May 30, 2018 at 1:05 AM, Dave Page >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi < >>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> please find the attached updated patch for the test cases of >>>>>>>>>> Backup, Restore and Maintenance modules which includes: >>>>>>>>>> >>>>>>>>>> 1. Unit test cases >>>>>>>>>> 2. End to end regression test cases >>>>>>>>>> 3. Feature test cases >>>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks. I've yet to be able to run the feature tests successfully= . >>>>>>>>> Here's what I've found so far: >>>>>>>>> >>>>>>>>> 1) DEFAULT_BINARY_PATHS should be default_binary_paths in the JSO= N >>>>>>>>> config file. >>>>>>>>> >>>>>>>>> Will do. >>>>>>>> >>>>>>>>> 2) I've hit screensize related issues: >>>>>>>>> >>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>> >>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >>>>>>>>> >>>>>>>>> Test for PG maintenance: database >>>>>>>>> >>>>>>>>> ------------------------------------------------------------ >>>>>>>>> ---------- >>>>>>>>> >>>>>>>>> Traceback (most recent call last): >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py", line >>>>>>>>> 56, in runTest >>>>>>>>> >>>>>>>>> self._open_maintenance_dialogue() >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /pgadmin/feature_tests/pg_utilities_maintenance_test.py", line >>>>>>>>> 75, in _open_maintenance_dialogue >>>>>>>>> >>>>>>>>> "*[.=3D'" + self.table_name + "']/../*[@class=3D'aciTreeItem'= " >>>>>>>>> >>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webel= ement.py", >>>>>>>>> line 80, in click >>>>>>>>> >>>>>>>>> self._execute(Command.CLICK_ELEMENT) >>>>>>>>> >>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webel= ement.py", >>>>>>>>> line 628, in _execute >>>>>>>>> >>>>>>>>> return self._parent.execute(command, params) >>>>>>>>> >>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdr= iver.py", >>>>>>>>> line 312, in execute >>>>>>>>> >>>>>>>>> self.error_handler.check_response(response) >>>>>>>>> >>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/error= handler.py", >>>>>>>>> line 242, in check_response >>>>>>>>> >>>>>>>>> raise exception_class(message, screen, stacktrace) >>>>>>>>> >>>>>>>>> WebDriverException: Message: unknown error: Element >>>>>>>> class=3D"aciTreeItem">... is not clickable at point (223, = 604). Other >>>>>>>>> element would receive the click:
>>>>>>>> wcPanelBackground wcScrollableX wcScrollableY" style=3D"left: 0px= ; right: >>>>>>>>> 0px; bottom: 0px;">...
>>>>>>>>> >>>>>>>>> (Session info: chrome=3D66.0.3359.181) >>>>>>>>> >>>>>>>>> (Driver info: chromedriver=3D2.38.552518 >>>>>>>>> (183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X >>>>>>>>> 10.12.6 x86_64) >>>>>>>>> >>>>>>>>> 3) One time the test did start, but then I saw this failure: >>>>>>>>> >>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>> >>>>>>>>> ERROR: runTest (pgadmin.feature_tests.pg_util >>>>>>>>> ities_backup_restore_test.PGUtilitiesBackupFeatureTest) >>>>>>>>> >>>>>>>>> Test for PG utilities - Backup and Restore >>>>>>>>> >>>>>>>>> ------------------------------------------------------------ >>>>>>>>> ---------- >>>>>>>>> >>>>>>>>> Traceback (most recent call last): >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /pgadmin/feature_tests/pg_utilities_backup_restore_test.py", line >>>>>>>>> 93, in runTest >>>>>>>>> >>>>>>>>> self.page.fill_input_by_field_name("file", "test_backup_file"= ) >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 211, in >>>>>>>>> fill_input_by_field_name >>>>>>>>> >>>>>>>>> self.wait_for_input_field_content(field_name, field_content) >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 251, in >>>>>>>>> wait_for_input_field_content >>>>>>>>> >>>>>>>>> "field to contain '" + str(content) + "'", >>>>>>>>> input_field_has_content >>>>>>>>> >>>>>>>>> File "/Users/dpage/git/pgadmin4/web >>>>>>>>> /regression/feature_utils/pgadmin_page.py", line 337, in _wait_fo= r >>>>>>>>> >>>>>>>>> "Timed out waiting for " + waiting_for_message >>>>>>>>> >>>>>>>>> File "/Users/dpage/.virtualenvs/pga >>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/support/wait= .py", >>>>>>>>> line 80, in until >>>>>>>>> >>>>>>>>> raise TimeoutException(message, screen, stacktrace) >>>>>>>>> >>>>>>>>> TimeoutException: Message: Timed out waiting for field to contain >>>>>>>>> 'test_backup_file' >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> (with screenshot attached) >>>>>>>>> >>>>>>>>> Thanks. >>>>>>>>> >>>>>>>>> I have ran the feature tests with multiple servers many times but >>>>>>>> didn't get a single failure. >>>>>>>> I have asked Akshay to run on his machine, let see what he gets. >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Khushboo >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira < >>>>>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Khushboo, >>>>>>>>>>> >>>>>>>>>>> We reviewed the patch and it is very nice to see some more >>>>>>>>>>> coverage in this area. Good job :D >>>>>>>>>>> >>>>>>>>>>> We passed the tests through our CI the feature tests are not >>>>>>>>>>> passing, but the linter fails: >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:37: [E501] = line too long (91 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] = line too long (104 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] = line too long (85 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] = line too long (96 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] = line too long (91 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] = line too long (118 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:37: [E121] = continuation line under-indented for hanging indent >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:48: [E122] = continuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] = unexpected spaces around keyword / parameter equals >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] = unexpected spaces around keyword / parameter equals >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:51: [E501] = line too long (91 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:52: [E501] = line too long (94 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:53: [E501] = line too long (108 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:81: [E501] = line too long (113 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:82: [E501] = line too long (94 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:83: [E501] = line too long (108 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:111: [E501]= line too long (100 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:113: [E501]= line too long (94 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:114: [E501]= line too long (108 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:147: [E501]= line too long (93 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121] c= ontinuation line under-indented for hanging indent >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122] c= ontinuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:135: [E501] = line too long (80 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:137: [E501] = line too long (83 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:138: [E122] = continuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:139: [E122] = continuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:140: [E122] = continuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:191: [E501] = line too long (81 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:203: [E501] = line too long (80 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E128] = continuation line under-indented for visual indent >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E501] = line too long (94 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E128] = continuation line under-indented for visual indent >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E501] = line too long (94 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:216: [W391] = blank line at end of file >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:296: [E5= 01] line too long (97 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:317: [E3= 03] too many blank lines (2) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:336: [E5= 01] line too long (84 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:371: [W3= 91] blank line at end of file >>>>>>>>>>> >>>>>>>>>>> 2 E121 continuation line under-indented for hanging inden= t >>>>>>>>>>> >>>>>>>>>>> 5 E122 continuation line missing indentation or outdented >>>>>>>>>>> >>>>>>>>>>> 2 E128 continuation line under-indented for visual indent >>>>>>>>>>> >>>>>>>>>>> 2 E251 unexpected spaces around keyword / parameter equal= s >>>>>>>>>>> >>>>>>>>>>> 1 E303 too many blank lines (2) >>>>>>>>>>> >>>>>>>>>>> 24 E501 line too long (91 > 79 characters) >>>>>>>>>>> >>>>>>>>>>> 2 W391 blank line at end of file >>>>>>>>>>> >>>>>>>>>>> 38 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> For the feature tests, we realized we had to update the >>>>>>>>>>> configuration, and we did that, but we get the following error = attached. We >>>>>>>>>>> spent some time trying to understand the problem but we were no= t successful. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Codewise: >>>>>>>>>>> - We just found some One Letter Variables in the code... >>>>>>>>>>> - Looks like there is a bug report in this area of the code and >>>>>>>>>>> we do not have coverage for it: https://redmine.postgresql >>>>>>>>>>> .org/issues/3232 >>>>>>>>>>> Looks like in some of the unit tests we only have happy path >>>>>>>>>>> tests, maybe we should see if there are any sad paths that also= need >>>>>>>>>>> coverage. >>>>>>>>>>> >>>>>>>>>>> The configuration change, maybe need to be updated. When we >>>>>>>>>>> install multiple versions of postgres the binaries live in >>>>>>>>>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes us think >>>>>>>>>>> that this configuration should live near the server configurati= on, maybe? >>>>>>>>>>> Also to maintain coherency on the naming maybe we should make i= t all lower >>>>>>>>>>> case. >>>>>>>>>>> Just as an aside, you can add the gpdb configuration as well in >>>>>>>>>>> you patch. >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>> Victoria & Joao >>>>>>>>>>> >>>>>>>>>>> On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < >>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> Please find the attached patch which covers test cases for the >>>>>>>>>>>> backup module (RM #3206). >>>>>>>>>>>> >>>>>>>>>>>> 1. Unit test cases >>>>>>>>>>>> 2. End to end regression test cases >>>>>>>>>>>> 3. Feature test cases >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Khushboo >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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 >>>> >>> >>> > --=20 Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company --000000000000db441e056de08716 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

On Tue, Jun 5, 2018 at 4:39 AM, Khushboo Vashi <= khushb= oo.vashi@enterprisedb.com> wrote:


On Mon, Jun 4, 2018 at 8:41 PM, Joao De Almeida= Pereira <jdealmeidapereira@pivotal.io> wrote:
The piece of code responsible for the= error is:
if server['default_binary_paths'] is not None:
test_utils.set_preference(server['default_binary_paths'])

config.DEFAULT_BINARY_PATHS =3D {
"pg": str(server['= default_binary_paths']['pg']),
"ppas": str(server['default_bin= ary_paths']['ppas= ']),
"gpdb": "&= quot;
}
Can you send me the test_config.json = file?=C2=A0 The above code sets the paths to the SQLite database and throug= h the logs couldn't figure out the exact failure.=C2=A0

It seems clear from the code shown= that it's not setting the binary paths for gpdb database servers. Shou= ldn't it be something like:

    config.DEFAULT_BINARY_PAT=
HS =3D {
"pg": str(server['default_binary_paths']['pg']),
= "ppas": str(server['default_binary_paths']['ppas']),
<= span style=3D"color:rgb(106,135,89)">"gpdb": str(server['default_binary_paths']['= gpdb'])
}

=C2=A0

test_ba= ckup_utils.py file name is misleading, these are not tests, are help= ers.

=E2=80=8B
=


Thanks
Victoria &a= mp; Joao

On Mon, Jun 4, 2018 at 1:36 AM Khushboo Vashi <khushboo.vashi@enterprisedb.= com> wrote:


On Sat,= Jun 2, 2018 at 3:01 AM, Dave Page <dpage@pgadmin.org> wrote= :
Hi

= This looks good, except that it's leaving the test_restore_database beh= ind. Can we clean that up please?

PFA updated patch.=C2=A0
Thanks.

On Fri, Jun 1, 2018 at 7:06 AM,= Khushboo Vashi <khushboo.vashi@enterprisedb.com>= ; wrote:
Hi Victo= ria,

Thanks for reviewing the patch.
The tests= were failing due to the latest commit #2b4605a9d390cb44e5dfe9967c3adf= 2b28d04f1f=C2=A0 - Ensure backup/restore/maintenance work via SSH tunnels. = Fixes #3355

I have fixed the issues and attached t= he updated patch.

Thanks,
Khushboo=C2=A0=

On Thu, May 31, = 2018 at 10:00 PM, Victoria Henry <vhenry@pivotal.io> wrote:<= br>
Hi there,

=
We've been noticing some issues with the tests on both our CI and = local Mac workstations.
  1. When the following code blocks are invoked -= we get plenty of app.context() issues. It must not= be valid when running tests.
=E2=80=8B
=
from pgadmin.utils.driver import get_driver
driver =3D get_driver(PG_DEFAULT_DR= IVER)
manager =3D driver.connection_manager(self.sid)

host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.host
port =3D manager.local= _bind_port if manager.use_ssh_= tunnel else s.port=C2=A0
=
2. When we finally enable=C2=A0
"default_binary_=
paths": {
in our test_config, we get more failing tests that look like:
=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_uni=
t_test.RestoreCreateJobTest)
When restore object with option - Miscellaneous
-----------------------------------------------------------------=
-----
Traceback (most recent call last):
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/unitte=
st/mock.py", line 1179, in patched
    return func(*args, **keywargs)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto=
re/tests/test_restore_create_job_unit_test.py", line 295, in=
 runTest
    self.assertEquals(response.status_code, 200)
AssertionError: 410 !=3D 200

And

When restore object =
with the sections options ... 2018-05-31 12:24:42,988: ERROR    pgadmin:   =
 illegal environment variable name
Traceback (most recent call last):
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/resto=
re/__init__.py", line 352, in create_restore_job
    manager.export_password_env(p=
.id)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/drive=
r/psycopg2/server_manager.py", line 365, in export_password_env
    os.environ[str(env)] =3D password
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.py&=
quot;, line 675, in __setitem__
    self.putenv(key, value)
ValueError: illegal environment variable name
FAIL
=E2=80=8B
=

Sincerely,

Vi= ctoria && Anthony

On Thu, May 31, 2018 at 1:16 AM Kh= ushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Please= find the attached updated patch with the fixes.
The test cases w= ere only failing on MAC not on Linux.

Thanks,
Khushboo

On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi <k= hushboo.vashi@enterprisedb.com> wrote:


On Wed, May 30, 2018 at 1:05 AM, Dave Page <dpa= ge@pgadmin.org> wrote:
Hi

On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi &= lt;khu= shboo.vashi@enterprisedb.com> wrote:
Hi,

please = find the attached updated patch for the test cases of Backup, Restore and M= aintenance modules which includes:

1. Unit t= est cases
2. End to end regression test cases=C2=A0
3. Feature te= st cases

Th= anks. I've yet to be able to run the feature tests successfully. Here&#= 39;s what I've found so far:

1) DEFAULT_BINARY= _PATHS should be default_binary_paths in the JSON config file.
Will do.=C2=A0
2) I've hit= screensize related issues:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.pg_uti= lities_maintenance_test.PGUtilitiesMaintenanceFeatureTest)=

Test for PG maintenance: database

---------------------------------------= -------------------------------

Traceback (most recent call last):

=C2=A0 File "/Users/d= page/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintena= nce_test.py", line 56, in runTest

=C2=A0 =C2=A0 self._open_m= aintenance_dialogue()

=C2=A0 File "/Users/d= page/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintena= nce_test.py", line 75, in _open_maintenance_dialogue

=C2=A0 =C2=A0 "*[.=3D= '" + self.table_name + "']/../*[@class=3D'aciTreeItem= '"

=C2=A0 File "/Users/d= page/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/w= ebdriver/remote/webelement.py", line 80, in click

=C2=A0 =C2=A0 self._execut= e(Command.CLICK_ELEMENT)

=C2=A0 File "/Users/d= page/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/w= ebdriver/remote/webelement.py", line 628, in _execute

=C2=A0 =C2=A0 return self.= _parent.execute(command, params)

=C2=A0 File "/Users/d= page/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/w= ebdriver/remote/webdriver.py", line 312, in execute

=C2=A0 =C2=A0 self.error_h= andler.check_response(response)

=C2=A0 File "/Users/d= page/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/w= ebdriver/remote/errorhandler.py", line 242, in check_response

=C2=A0 =C2=A0 raise except= ion_class(message, screen, stacktrace)

WebDriverException: Message: unknown error: = Element <span class=3D"aciTreeItem">...</span> is not= clickable at point (223, 604). Other element would receive the click: <= div class=3D"wcFrameCenter wcPanelBackground wcScrollableX wcScrollabl= eY" style=3D"left: 0px; right: 0px; bottom: 0px;">...<= /div>

=C2=A0 (Session info: chro= me=3D66.0.3359.181)

=C2=A0 (Driver info: chrom= edriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platf= orm=3DMac OS X 10.12.6 x86_64)


3) One time the test did start, but then I saw this failure:=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tests.pg_uti= lities_backup_restore_test.PGUtilitiesBackupFeatureTest)

Test for PG utilities - Backup and Restore

---------------------------------------= -------------------------------

Traceback (most recent call last):

=C2=A0 File "/Users/d= page/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_backup_r= estore_test.py", line 93, in runTest

=C2=A0 =C2=A0 self.page.fi= ll_input_by_field_name("file", "test_backup_file")=

=C2=A0 File "/Users/d= page/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py&qu= ot;, line 211, in fill_input_by_field_name

=C2=A0 =C2=A0 self.wait_fo= r_input_field_content(field_name, field_content)

=C2=A0 File "/Users/d= page/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py&qu= ot;, line 251, in wait_for_input_field_content

=C2=A0 =C2=A0 "field = to contain '" + str(content) + "'", input_field_has_= content

=C2=A0 File "/Users/d= page/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py&qu= ot;, line 337, in _wait_for

=C2=A0 =C2=A0 "Timed = out waiting for " + waiting_for_message

=C2=A0 File "/Users/d= page/.virtualenvs/pgadmin4/lib/python2.7/site-packages/selenium/w= ebdriver/support/wait.py", line 80, in until

=C2=A0 =C2=A0 raise Timeou= tException(message, screen, stacktrace)

TimeoutException: Message: Timed out waiting= for field to contain 'test_backup_file'



(with screenshot attached)

Thanks.<= /div>

=
I have ran the feature test= s with multiple servers many times but didn't get a single failure.
I have asked Akshay to run on his machine, let see what he gets.


=C2=A0

Thank= s,
Khushboo



=

On Wed, Apr 25, 2018 at 9:40 PM, Joao De A= lmeida Pereira <jdealmeidapereira@pivotal.io> wro= te:
Hi Khushboo,
We reviewed the patch and it is very nice to see some more cove= rage in this area. Good job :D

We passed the tests= through our CI the feature tests are not passing, but the linter fails:
./pgadmin/feature_tests/pg_utilit= ies_backup_test.py:37: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities= _backup_test.py:53: [E501] line too long (104 > 79 characters)
./pgadmin/feature_tests/pg_utilities= _backup_test.py:59: [E501] line too long (85 > 79 characters)
./pgadmin/feature_tests/pg_utilities= _backup_test.py:62: [E501] line too long (96 > 79 characters)
./pgadmin/feature_tests/pg_utilities= _backup_test.py:63: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities= _backup_test.py:70: [E501] line too long (118 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:37: [E121] continuation line under-indented for hanging ind= ent
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:48: [E122] continuation line missing indentation or outdent= ed
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:49: [E251] unexpected spaces around keyword / parameter equ= als
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:49: [E251] unexpected spaces around keyword / parameter equ= als
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:51: [E501] line too long (91 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:52: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:53: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:81: [E501] line too long (113 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:82: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:83: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:111: [E501] line too long (100 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:113: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:114: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= ckup_message.py:147: [E501] line too long (93 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:40: [E121] continuation line under-indented for hanging inde= nt
./pgadmin/tools/backup/tests/test_ba= tch_process.py:51: [E122] continuation line missing indentation or outdente= d
./pgadmin/tools/backup/tests/test_ba= tch_process.py:135: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:137: [E501] line too long (83 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:138: [E122] continuation line missing indentation or outdent= ed
./pgadmin/tools/backup/tests/test_ba= tch_process.py:139: [E122] continuation line missing indentation or outdent= ed
./pgadmin/tools/backup/tests/test_ba= tch_process.py:140: [E122] continuation line missing indentation or outdent= ed
./pgadmin/tools/backup/tests/test_ba= tch_process.py:191: [E501] line too long (81 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:203: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:204: [E128] continuation line under-indented for visual inde= nt
./pgadmin/tools/backup/tests/test_ba= tch_process.py:204: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:205: [E128] continuation line under-indented for visual inde= nt
./pgadmin/tools/backup/tests/test_ba= tch_process.py:205: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_ba= tch_process.py:216: [W391] blank line at end of file
./pgadmin/tools/backup/tests/test_cr= eate_backup_job.py:296: [E501] line too long (97 > 79 characters)
./pgadmin/tools/backup/tests/test_cr= eate_backup_job.py:317: [E303] too many blank lines (2)
./pgadmin/tools/backup/tests/test_cr= eate_backup_job.py:336: [E501] line too long (84 > 79 characters)
./pgadmin/tools/backup/tests/test_cr= eate_backup_job.py:371: [W391] blank line at end of file
2 E121 continuation line under-inde= nted for hanging indent
5 E122 continuation line missing in= dentation or outdented
2 E128 continuation line under-inde= nted for visual indent
2 E251 unexpected spaces around key= word / parameter equals
1 E303 too many blank lines (2)
24 E501 line too long (91 > 79 ch= aracters)
2 W391 blank line at end of file
38

=
For the feature tests, we realized we had to update the configur= ation, and we did that, but we get the following error attached. We spent s= ome time trying to understand the problem but we were not successful.
=


Codewise:
- We just found some= One Letter Variables in the code...
- Looks like there is a bug = report in this area of the code and we do not have coverage for it:=C2=A0http= s://redmine.postgresql.org/issues/3232
=C2=A0 Looks like= in some of the unit tests we only have happy path tests, maybe we should s= ee if there are any sad paths that also need coverage.

=
The configuration change, maybe need to be updated. When we install mu= ltiple versions of postgres the binaries live in `/usr/lib/postgresql/{{db_= version}}/bin`, which makes us think that this configuration should li= ve near the server configuration, maybe? Also to maintain coherency on the = naming maybe we should make it all lower case.
Just as an aside, = you can add the gpdb configuration as well in you patch.

Thanks
Victoria & Joao

On Wed, Apr 25, 2018 at 5:20 AM Khushboo = Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Please find th= e attached patch which covers test cases for the backup module (RM #3206).<= /div>

1. Unit test cases
2. End to end regress= ion test cases=C2=A0
3. Feature test cases

Thanks,
Khushboo




-- =
Dave Page
Blog: http://pgsnake.blogspot.com
T= witter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise P= ostgreSQL Company






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

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





--
Dave Page
Blog: = http://pgsnake.bl= ogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com<= br>The Enterprise PostgreSQL Company
--000000000000db441e056de08716--