public inbox for [email protected]
help / color / mirror / Atom feedFrom: Murtuza Zabuawala <[email protected]>
To: Dave Page <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: RE-SQL tests for Roles & Resource Group nodes
Date: Wed, 3 Jul 2019 09:23:36 +0530
Message-ID: <CAKKotZRTCiUD0Y1+Zomiun2-fvEpQKJkkDvcwvhbFNpwV6CSHg@mail.gmail.com> (raw)
In-Reply-To: <CA+OCxoyEVimkOdA4rsFzjagsCseZMbpHCk3Uub_MEuhk4+mM8A@mail.gmail.com>
References: <CAKKotZTXDruJsXhnNCR=uCeWKPkg6DKk1EAEXrUcMFFpaf0CAg@mail.gmail.com>
<CA+OCxoyk3RfY=mDZ_ebb4stY6SgjzHsG5dimY0D=CuvwOtsoLQ@mail.gmail.com>
<CAKKotZQiNF7QhQ+GiHHuqLyHLZkF99JS718xiSb9cNooPcwC6Q@mail.gmail.com>
<CAKKotZRJ+cSMwZQPSRmjocxx-VKcmS7aFUTo18i=ZbGYkCuw=A@mail.gmail.com>
<CA+OCxoyEVimkOdA4rsFzjagsCseZMbpHCk3Uub_MEuhk4+mM8A@mail.gmail.com>
Hi Dave,
PFA updated patch.
Please note that our framework considers test cases from all the modules as
one single test case, If we need module wise detailed summary report for
the reverse engineered SQL tests then we may have to change the framework.
Regards,
Murtuza
On Tue, Jul 2, 2019 at 5:52 PM Dave Page <[email protected]> wrote:
> Hi
>
> On Tue, Jul 2, 2019 at 8:17 AM Murtuza Zabuawala <
> [email protected]> wrote:
>
>> ++ Attaching patch
>>
>> On Tue, Jul 2, 2019 at 12:46 PM Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Dave,
>>>
>>> Please find the updated patch,
>>>
>>> - Added a mechanism to check for supported minimum/maximum version and a
>>> server type in the framework.
>>>
>>
> There's still a problem with this I'm afraid - it says in the summary that
> the re_sql test cases were all skipped, which is not the case. I think we
> should just skip the irrelevant tests in the re_sql module, but not mark
> the entire module as being skipped:
>
> =============Running the test cases for 'Regression - PG 11'=============
>
> runTest (regression.re_sql.tests.test_resql.ReverseEngineeredSQLTestCases)
>
> Reverse Engineered SQL Test Cases
>
>
> Create IMPLICIT Cast
>
> Alter IMPLICIT Cast
>
> Drop IMPLICIT Cast
>
> Create EXPLICIT Cast
>
> Alter EXPLICIT Cast
>
> Drop EXPLICIT Cast
>
> ... skipped 'Server(Type: #ppas) is not supported for the Resource
> Groups module'
>
>
> ----------------------------------------------------------------------
>
> Ran 1 test in 0.480s
>
>
> OK (skipped=1)
>
>
> ======================================================================
>
> Test Result Summary
>
> ======================================================================
>
>
> Regression - PG 11:
>
>
> 0 tests passed
>
> 0 tests failed
>
> 1 test skipped:
>
> ReverseEngineeredSQLTestCases (Reverse Engineered SQL Test Cases)
>
>
> ======================================================================
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
Attachments:
[application/octet-stream] RM_4415_v2.diff (38.4K, 3-RM_4415_v2.diff)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
index 9047b7f7..05763e14 100644
--- a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
@@ -226,8 +226,9 @@ class ResourceGroupView(NodeView):
"Connection to the server has been lost."
)
)
-
- self.template_path = 'resource_groups/sql'
+ self.sql_path = 'resource_groups/sql/#{0}#'.format(
+ self.manager.version
+ )
return f(*args, **kwargs)
return wrap
@@ -242,7 +243,7 @@ class ResourceGroupView(NodeView):
gid: Server Group ID
sid: Server ID
"""
- sql = render_template("/".join([self.template_path, 'properties.sql']))
+ sql = render_template("/".join([self.sql_path, 'properties.sql']))
status, res = self.conn.execute_dict(sql)
if not status:
@@ -263,7 +264,7 @@ class ResourceGroupView(NodeView):
sid: Server ID
"""
- sql = render_template("/".join([self.template_path, 'nodes.sql']),
+ sql = render_template("/".join([self.sql_path, 'nodes.sql']),
rgid=rg_id)
status, result = self.conn.execute_2darray(sql)
if not status:
@@ -295,7 +296,7 @@ class ResourceGroupView(NodeView):
sid: Server ID
"""
res = []
- sql = render_template("/".join([self.template_path, 'nodes.sql']))
+ sql = render_template("/".join([self.sql_path, 'nodes.sql']))
status, result = self.conn.execute_2darray(sql)
if not status:
return internal_server_error(errormsg=result)
@@ -326,7 +327,7 @@ class ResourceGroupView(NodeView):
rg_id: Resource Group ID
"""
sql = render_template(
- "/".join([self.template_path, 'properties.sql']), rgid=rg_id)
+ "/".join([self.sql_path, 'properties.sql']), rgid=rg_id)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -368,7 +369,7 @@ class ResourceGroupView(NodeView):
try:
# Below logic will create new resource group
sql = render_template(
- "/".join([self.template_path, 'create.sql']),
+ "/".join([self.sql_path, 'create.sql']),
rgname=data['name'], conn=self.conn
)
if sql and sql.strip('\n') and sql.strip(' '):
@@ -380,7 +381,7 @@ class ResourceGroupView(NodeView):
# resource group you can't run multiple commands in one
# transaction.
sql = render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
data=data, conn=self.conn
)
# Checking if we are not executing empty query
@@ -391,7 +392,7 @@ class ResourceGroupView(NodeView):
# Below logic is used to fetch the oid of the newly created
# resource group
sql = render_template(
- "/".join([self.template_path, 'getoid.sql']),
+ "/".join([self.sql_path, 'getoid.sql']),
rgname=data['name']
)
# Checking if we are not executing empty query
@@ -431,7 +432,7 @@ class ResourceGroupView(NodeView):
try:
sql = render_template(
- "/".join([self.template_path, 'properties.sql']), rgid=rg_id)
+ "/".join([self.sql_path, 'properties.sql']), rgid=rg_id)
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
@@ -442,7 +443,7 @@ class ResourceGroupView(NodeView):
if data['name'] != old_data['name']:
sql = render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
oldname=old_data['name'], newname=data['name'],
conn=self.conn
)
@@ -458,7 +459,7 @@ class ResourceGroupView(NodeView):
if data['cpu_rate_limit'] != old_data['cpu_rate_limit'] or \
data['dirty_rate_limit'] != old_data['dirty_rate_limit']:
sql = render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
data=data, conn=self.conn
)
if sql and sql.strip('\n') and sql.strip(' '):
@@ -499,7 +500,7 @@ class ResourceGroupView(NodeView):
for rg_id in data['ids']:
# Get name for resource group from rg_id
sql = render_template(
- "/".join([self.template_path, 'delete.sql']),
+ "/".join([self.sql_path, 'delete.sql']),
rgid=rg_id, conn=self.conn
)
status, rgname = self.conn.execute_scalar(sql)
@@ -520,7 +521,7 @@ class ResourceGroupView(NodeView):
# drop resource group
sql = render_template(
- "/".join([self.template_path, 'delete.sql']),
+ "/".join([self.sql_path, 'delete.sql']),
rgname=rgname, conn=self.conn
)
status, res = self.conn.execute_scalar(sql)
@@ -580,7 +581,7 @@ class ResourceGroupView(NodeView):
]
if rg_id is not None:
sql = render_template(
- "/".join([self.template_path, 'properties.sql']), rgid=rg_id)
+ "/".join([self.sql_path, 'properties.sql']), rgid=rg_id)
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
@@ -599,7 +600,7 @@ class ResourceGroupView(NodeView):
if data['name'] != old_data['name']:
name_changed = True
sql = render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
oldname=old_data['name'], newname=data['name'],
conn=self.conn
)
@@ -609,12 +610,12 @@ class ResourceGroupView(NodeView):
sql += "\n-- Following query will be executed in a " \
"separate transaction\n"
sql += render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
data=data, conn=self.conn
)
else:
sql = render_template(
- "/".join([self.template_path, 'create.sql']),
+ "/".join([self.sql_path, 'create.sql']),
rgname=data['name'], conn=self.conn
)
@@ -630,7 +631,7 @@ class ResourceGroupView(NodeView):
sql += "\n-- Following query will be executed in a " \
"separate transaction\n"
sql += render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
data=data, conn=self.conn
)
@@ -647,7 +648,7 @@ class ResourceGroupView(NodeView):
rg_id: Resource Group ID
"""
sql = render_template(
- "/".join([self.template_path, 'properties.sql']), rgid=rg_id
+ "/".join([self.sql_path, 'properties.sql']), rgid=rg_id
)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -661,13 +662,13 @@ class ResourceGroupView(NodeView):
old_data = dict(res['rows'][0])
sql = render_template(
- "/".join([self.template_path, 'create.sql']),
+ "/".join([self.sql_path, 'create.sql']),
display_comments=True,
rgname=old_data['name'], conn=self.conn
)
sql += "\n"
sql += render_template(
- "/".join([self.template_path, 'update.sql']),
+ "/".join([self.sql_path, 'update.sql']),
data=old_data, conn=self.conn
)
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/create.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/create.sql
similarity index 100%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/create.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/create.sql
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/delete.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/delete.sql
similarity index 100%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/delete.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/delete.sql
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/getoid.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql
similarity index 100%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/getoid.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/nodes.sql
similarity index 100%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/nodes.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/nodes.sql
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/properties.sql
similarity index 100%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/properties.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/properties.sql
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/update.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/update.sql
similarity index 97%
rename from web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/update.sql
rename to web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/update.sql
index 2b19e108..e5c0a234 100644
--- a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/update.sql
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/update.sql
@@ -6,4 +6,4 @@ ALTER RESOURCE GROUP {{ conn|qtIdent(oldname) }} RENAME TO {{ conn|qtIdent(newna
{% if data %}
ALTER RESOURCE GROUP {{ conn|qtIdent(data.name) }}
SET cpu_rate_limit = {{data.cpu_rate_limit|default(0)}}, dirty_rate_limit = {{data.dirty_rate_limit|default(0)}};
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_name.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_name.sql
new file mode 100644
index 00000000..c774cbf5
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_name.sql
@@ -0,0 +1,8 @@
+-- RESOURCE GROUP: new_test_resql_resource_group
+
+-- DROP RESOURCE GROUP new_test_resql_resource_group
+
+CREATE RESOURCE GROUP new_test_resql_resource_group;
+
+ALTER RESOURCE GROUP new_test_resql_resource_group
+ SET cpu_rate_limit = 0, dirty_rate_limit = 0;
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_options.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_options.sql
new file mode 100644
index 00000000..fb21309d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/alter_resource_group_options.sql
@@ -0,0 +1,8 @@
+-- RESOURCE GROUP: new_test_resql_resource_group
+
+-- DROP RESOURCE GROUP new_test_resql_resource_group
+
+CREATE RESOURCE GROUP new_test_resql_resource_group;
+
+ALTER RESOURCE GROUP new_test_resql_resource_group
+ SET cpu_rate_limit = 1, dirty_rate_limit = 5;
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/create_resource_group.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/create_resource_group.sql
new file mode 100644
index 00000000..3eb35a6a
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/create_resource_group.sql
@@ -0,0 +1,8 @@
+-- RESOURCE GROUP: test_resql_resource_group
+
+-- DROP RESOURCE GROUP test_resql_resource_group
+
+CREATE RESOURCE GROUP test_resql_resource_group;
+
+ALTER RESOURCE GROUP test_resql_resource_group
+ SET cpu_rate_limit = 0, dirty_rate_limit = 0;
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/test.json
new file mode 100644
index 00000000..03065361
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/default/test.json
@@ -0,0 +1,48 @@
+{
+ "prerequisite": {
+ "minVer": 90400,
+ "maxVer": null,
+ "type": "ppas"
+ },
+ "scenarios": [
+ {
+ "type": "create",
+ "name": "Create Resource groups",
+ "endpoint": "NODE-resource_group.obj",
+ "sql_endpoint": "NODE-resource_group.sql_id",
+ "data": {
+ "name": "test_resql_resource_group",
+ "cpu_rate_limit": 0,
+ "dirty_rate_limit": 0
+ },
+ "expected_sql_file": "create_resource_group.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Resource groups name",
+ "endpoint": "NODE-resource_group.obj_id",
+ "sql_endpoint": "NODE-resource_group.sql_id",
+ "data": {
+ "name": "new_test_resql_resource_group"
+ },
+ "expected_sql_file": "alter_resource_group_name.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Resource groups options",
+ "endpoint": "NODE-resource_group.obj_id",
+ "sql_endpoint": "NODE-resource_group.sql_id",
+ "data": {
+ "cpu_rate_limit": 1,
+ "dirty_rate_limit": 5
+ },
+ "expected_sql_file": "alter_resource_group_options.sql"
+ },
+ {
+ "type": "delete",
+ "name": "Drop Resource groups",
+ "endpoint": "NODE-resource_group.obj_id",
+ "data": {}
+ }
+ ]
+}
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_description.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_description.sql
new file mode 100644
index 00000000..7879f300
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_description.sql
@@ -0,0 +1,12 @@
+-- Role: test_resql_role_pg91
+-- DROP ROLE test_resql_role_pg91;
+
+CREATE ROLE test_resql_role_pg91 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+COMMENT ON ROLE test_resql_role_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_name.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_name.sql
new file mode 100644
index 00000000..3122bd02
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_name.sql
@@ -0,0 +1,12 @@
+-- Role: new_test_resql_role_pg91
+-- DROP ROLE new_test_resql_role_pg91;
+
+CREATE ROLE new_test_resql_role_pg91 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+COMMENT ON ROLE new_test_resql_role_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_options.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_options.sql
new file mode 100644
index 00000000..8d205ec6
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_role_options.sql
@@ -0,0 +1,15 @@
+-- Role: new_test_resql_role_pg91
+-- DROP ROLE new_test_resql_role_pg91;
+
+CREATE ROLE new_test_resql_role_pg91 WITH
+ NOLOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+
+UPDATE pg_authid SET rolcatupdate=false WHERE rolname = new_test_resql_role_pg91;
+
+COMMENT ON ROLE new_test_resql_role_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_description.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_description.sql
new file mode 100644
index 00000000..e34aa437
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_description.sql
@@ -0,0 +1,15 @@
+-- User: test_resql_user_pg91
+-- DROP USER test_resql_user_pg91;
+
+CREATE USER test_resql_user_pg91 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
+
+
+UPDATE pg_authid SET rolcatupdate=false WHERE rolname = test_resql_user_pg91;
+
+COMMENT ON ROLE test_resql_user_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_name.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_name.sql
new file mode 100644
index 00000000..0f1078d4
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_name.sql
@@ -0,0 +1,15 @@
+-- User: new_test_resql_user_pg91
+-- DROP USER new_test_resql_user_pg91;
+
+CREATE USER new_test_resql_user_pg91 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
+
+
+UPDATE pg_authid SET rolcatupdate=false WHERE rolname = new_test_resql_user_pg91;
+
+COMMENT ON ROLE new_test_resql_user_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_options.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_options.sql
new file mode 100644
index 00000000..8e6e636a
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/alter_user_options.sql
@@ -0,0 +1,12 @@
+-- User: new_test_resql_user_pg91
+-- DROP USER new_test_resql_user_pg91;
+
+CREATE USER new_test_resql_user_pg91 WITH
+ LOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ CREATEROLE
+ REPLICATION;
+
+COMMENT ON ROLE new_test_resql_user_pg91 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_role.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_role.sql
new file mode 100644
index 00000000..7f9bf63d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_role.sql
@@ -0,0 +1,10 @@
+-- Role: test_resql_role_pg91
+-- DROP ROLE test_resql_role_pg91;
+
+CREATE ROLE test_resql_role_pg91 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_user.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_user.sql
new file mode 100644
index 00000000..12da84a1
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/create_user.sql
@@ -0,0 +1,13 @@
+-- User: test_resql_user_pg91
+-- DROP USER test_resql_user_pg91;
+
+CREATE USER test_resql_user_pg91 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
+
+
+UPDATE pg_authid SET rolcatupdate=false WHERE rolname = test_resql_user_pg91;
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/test.json b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/test.json
new file mode 100644
index 00000000..0e8c6994
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.1_plus/test.json
@@ -0,0 +1,124 @@
+{
+ "scenarios": [
+ {
+ "type": "create",
+ "name": "Create Role",
+ "endpoint": "NODE-role.obj",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "test_resql_role_pg91",
+ "rolcanlogin": false,
+ "rolpassword": null,
+ "rolconnlimit": -1,
+ "rolsuper": false,
+ "rolcreaterole": false,
+ "rolcreatedb": false,
+ "rolinherit": true,
+ "rolcatupdate": false,
+ "rolreplication": false,
+ "rolmembership": [],
+ "rolvaliduntil": null,
+ "seclabels": [],
+ "variables": []
+ },
+ "expected_sql_file": "create_role.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role description",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "description": "This is detailed description"
+ },
+ "expected_sql_file": "alter_role_description.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role name",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "new_test_resql_role_pg91"
+ },
+ "expected_sql_file": "alter_role_name.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role superuser, createdb etc options",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolsuper": true,
+ "rolcreatedb": true
+ },
+ "expected_sql_file": "alter_role_options.sql"
+ },
+ {
+ "type": "delete",
+ "name": "Drop Role",
+ "endpoint": "NODE-role.obj_id",
+ "data": {}
+ },
+ {
+ "type": "create",
+ "name": "Create User",
+ "endpoint": "NODE-role.obj",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "test_resql_user_pg91",
+ "rolcanlogin": true,
+ "rolpassword": null,
+ "rolconnlimit": -1,
+ "rolsuper": true,
+ "rolcreaterole": true,
+ "rolcreatedb": true,
+ "rolinherit": true,
+ "rolcatupdate": true,
+ "rolreplication": true,
+ "rolmembership": [],
+ "rolvaliduntil": null,
+ "seclabels": [],
+ "variables": []
+ },
+ "expected_sql_file": "create_user.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User description",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "description": "This is detailed description"
+ },
+ "expected_sql_file": "alter_user_description.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User name",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "new_test_resql_user_pg91"
+ },
+ "expected_sql_file": "alter_user_name.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User superuser, createdb etc options",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolsuper": false,
+ "rolcreatedb": false
+ },
+ "expected_sql_file": "alter_user_options.sql"
+ },
+ {
+ "type": "delete",
+ "name": "Drop User",
+ "endpoint": "NODE-role.obj_id",
+ "data": {}
+ }
+ ]
+}
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_description.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_description.sql
new file mode 100644
index 00000000..7be33986
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_description.sql
@@ -0,0 +1,12 @@
+-- Role: test_resql_role_pg95
+-- DROP ROLE test_resql_role_pg95;
+
+CREATE ROLE test_resql_role_pg95 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+COMMENT ON ROLE test_resql_role_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_name.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_name.sql
new file mode 100644
index 00000000..563404c7
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_name.sql
@@ -0,0 +1,12 @@
+-- Role: new_test_resql_role_pg95
+-- DROP ROLE new_test_resql_role_pg95;
+
+CREATE ROLE new_test_resql_role_pg95 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+COMMENT ON ROLE new_test_resql_role_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_options.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_options.sql
new file mode 100644
index 00000000..980bad23
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_role_options.sql
@@ -0,0 +1,12 @@
+-- Role: new_test_resql_role_pg95
+-- DROP ROLE new_test_resql_role_pg95;
+
+CREATE ROLE new_test_resql_role_pg95 WITH
+ NOLOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
+
+COMMENT ON ROLE new_test_resql_role_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_description.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_description.sql
new file mode 100644
index 00000000..2eed6025
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_description.sql
@@ -0,0 +1,12 @@
+-- User: test_resql_user_pg95
+-- DROP USER test_resql_user_pg95;
+
+CREATE USER test_resql_user_pg95 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
+
+COMMENT ON ROLE test_resql_user_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_name.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_name.sql
new file mode 100644
index 00000000..07454a79
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_name.sql
@@ -0,0 +1,12 @@
+-- User: new_test_resql_user_pg95
+-- DROP USER new_test_resql_user_pg95;
+
+CREATE USER new_test_resql_user_pg95 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
+
+COMMENT ON ROLE new_test_resql_user_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_options.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_options.sql
new file mode 100644
index 00000000..5035fbb9
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/alter_user_options.sql
@@ -0,0 +1,12 @@
+-- User: new_test_resql_user_pg95
+-- DROP USER new_test_resql_user_pg95;
+
+CREATE USER new_test_resql_user_pg95 WITH
+ LOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ CREATEROLE
+ REPLICATION;
+
+COMMENT ON ROLE new_test_resql_user_pg95 IS 'This is detailed description';
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_role.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_role.sql
new file mode 100644
index 00000000..51216477
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_role.sql
@@ -0,0 +1,10 @@
+-- Role: test_resql_role_pg95
+-- DROP ROLE test_resql_role_pg95;
+
+CREATE ROLE test_resql_role_pg95 WITH
+ NOLOGIN
+ NOSUPERUSER
+ INHERIT
+ NOCREATEDB
+ NOCREATEROLE
+ NOREPLICATION;
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_user.sql b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_user.sql
new file mode 100644
index 00000000..476384fb
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/create_user.sql
@@ -0,0 +1,10 @@
+-- User: test_resql_user_pg95
+-- DROP USER test_resql_user_pg95;
+
+CREATE USER test_resql_user_pg95 WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ REPLICATION;
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/test.json b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/test.json
new file mode 100644
index 00000000..e902b3ee
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/9.4_plus/test.json
@@ -0,0 +1,124 @@
+{
+ "scenarios": [
+ {
+ "type": "create",
+ "name": "Create Role",
+ "endpoint": "NODE-role.obj",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "test_resql_role_pg95",
+ "rolcanlogin": false,
+ "rolpassword": null,
+ "rolconnlimit": -1,
+ "rolsuper": false,
+ "rolcreaterole": false,
+ "rolcreatedb": false,
+ "rolinherit": true,
+ "rolcatupdate": false,
+ "rolreplication": false,
+ "rolmembership": [],
+ "rolvaliduntil": null,
+ "seclabels": [],
+ "variables": []
+ },
+ "expected_sql_file": "create_role.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role description",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "description": "This is detailed description"
+ },
+ "expected_sql_file": "alter_role_description.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role name",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "new_test_resql_role_pg95"
+ },
+ "expected_sql_file": "alter_role_name.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter Role superuser, createdb etc options",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolsuper": true,
+ "rolcreatedb": true
+ },
+ "expected_sql_file": "alter_role_options.sql"
+ },
+ {
+ "type": "delete",
+ "name": "Drop Role",
+ "endpoint": "NODE-role.obj_id",
+ "data": {}
+ },
+ {
+ "type": "create",
+ "name": "Create User",
+ "endpoint": "NODE-role.obj",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "test_resql_user_pg95",
+ "rolcanlogin": true,
+ "rolpassword": null,
+ "rolconnlimit": -1,
+ "rolsuper": true,
+ "rolcreaterole": true,
+ "rolcreatedb": true,
+ "rolinherit": true,
+ "rolcatupdate": true,
+ "rolreplication": true,
+ "rolmembership": [],
+ "rolvaliduntil": null,
+ "seclabels": [],
+ "variables": []
+ },
+ "expected_sql_file": "create_user.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User description",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "description": "This is detailed description"
+ },
+ "expected_sql_file": "alter_user_description.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User name",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolname": "new_test_resql_user_pg95"
+ },
+ "expected_sql_file": "alter_user_name.sql"
+ },
+ {
+ "type": "alter",
+ "name": "Alter User superuser, createdb etc options",
+ "endpoint": "NODE-role.obj_id",
+ "sql_endpoint": "NODE-role.sql_id",
+ "data": {
+ "rolsuper": false,
+ "rolcreatedb": false
+ },
+ "expected_sql_file": "alter_user_options.sql"
+ },
+ {
+ "type": "delete",
+ "name": "Drop User",
+ "endpoint": "NODE-role.obj_id",
+ "data": {}
+ }
+ ]
+}
diff --git a/web/regression/python_test_utils/test_utils.py b/web/regression/python_test_utils/test_utils.py
index 96a009bd..74afc10b 100644
--- a/web/regression/python_test_utils/test_utils.py
+++ b/web/regression/python_test_utils/test_utils.py
@@ -991,6 +991,8 @@ def get_server_type(server):
pg_cursor.execute("SELECT version()")
version_string = pg_cursor.fetchone()
connection.close()
+ if type(version_string) == tuple:
+ version_string = version_string[0]
if "Greenplum Database" in version_string:
return 'gpdb'
diff --git a/web/regression/re_sql/tests/test_resql.py b/web/regression/re_sql/tests/test_resql.py
index 369c8ddf..36b242fd 100644
--- a/web/regression/re_sql/tests/test_resql.py
+++ b/web/regression/re_sql/tests/test_resql.py
@@ -6,10 +6,10 @@
# This software is released under the PostgreSQL Licence
#
##########################################################################
-
+from __future__ import print_function
import json
import os
-
+import sys
from flask import url_for
from pgadmin.utils.route import BaseTestGenerator
from regression.python_test_utils import test_utils as utils
@@ -64,6 +64,7 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
def runTest(self):
# Create the module list on which reverse engineering sql test
# cases will be executed.
+ server_info = self.server_information
resql_module_list = create_resql_module_list(
BaseTestGenerator.re_sql_module_list,
BaseTestGenerator.exclude_pkgs)
@@ -84,8 +85,61 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
filename)
with open(complete_file_name) as jsonfp:
data = json.load(jsonfp)
- for key, scenarios in data.items():
- self.execute_test_case(scenarios)
+ # CHECK SERVER VERSION & TYPE PRECONDITION
+ skip_test = False
+ if 'prerequisite' in data and \
+ data['prerequisite'] is not None:
+ prerequisite_data = data['prerequisite']
+ if 'type' in prerequisite_data and \
+ prerequisite_data['type']:
+ if server_info['type'] != \
+ prerequisite_data['type']:
+ skip_test = True
+ print(
+ "\n\n"
+ "Server(Type: #{0}) is not supported"
+ " for the {1} module - Skipped".format(
+ prerequisite_data['type'],
+ module.replace('_', ' ').title()
+ ),
+ file=sys.stderr
+ )
+
+ if 'minVer' in prerequisite_data and \
+ prerequisite_data['minVer']:
+ if server_info['server_version'] < \
+ prerequisite_data['minVer']:
+ skip_test = True
+ print(
+ "\n\n"
+ "Server version({0}) is not supported"
+ " for the {1} module - Skipped".format(
+ server_info['server_version'],
+ module.replace('_', ' ').title()
+ ),
+ file=sys.stderr
+ )
+
+ if 'maxVer' in prerequisite_data and \
+ prerequisite_data['maxVer']:
+ if server_info['server_version'] > \
+ prerequisite_data['maxVer']:
+ skip_test = True
+ print(
+ "\n\n"
+ "Server version({0}) is not supported"
+ " for the {1} module - Skipped".format(
+ server_info['server_version'],
+ module.replace('_', ' ').title()
+ ),
+ file=sys.stderr
+ )
+
+ if not skip_test:
+ tests_scenarios = {}
+ tests_scenarios['scenarios'] = data['scenarios']
+ for key, scenarios in tests_scenarios.items():
+ self.execute_test_case(scenarios)
def tearDown(self):
database_utils.disconnect_database(
@@ -207,6 +261,7 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator):
# Remove first and last double quotes
if resp_sql.startswith('"') and resp_sql.endswith('"'):
resp_sql = resp_sql[1:-1]
+ resp_sql = resp_sql.rstrip()
# Check if expected sql is given in JSON file or path of the output
# file is given
diff --git a/web/regression/runtests.py b/web/regression/runtests.py
index 1d4fa54b..cf9ab19c 100644
--- a/web/regression/runtests.py
+++ b/web/regression/runtests.py
@@ -444,6 +444,7 @@ if __name__ == '__main__':
# Add the server version in server information
server_information['server_version'] = connection.server_version
+ server_information['type'] = server['type']
# Drop the database if already exists.
test_utils.drop_database(connection, test_db_name)
view thread (11+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: RE-SQL tests for Roles & Resource Group nodes
In-Reply-To: <CAKKotZRTCiUD0Y1+Zomiun2-fvEpQKJkkDvcwvhbFNpwV6CSHg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox