mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Implement Selenium Grid to run multiple tests across different browsers, operating systems, and machines in parallel. Fixes #5255
This commit is contained in:
committed by
Akshay Joshi
parent
b64896f558
commit
1294c089a8
@@ -44,31 +44,30 @@ class IndexConstraintAddTestCase(BaseTestGenerator):
|
||||
dict(url='/browser/unique_constraint/obj/', data=unique_key_data))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
cls.server_id = schema_info["server_id"]
|
||||
cls.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(cls, utils.SERVER_GROUP,
|
||||
cls.server_id, cls.db_id)
|
||||
self.server_id = schema_info["server_id"]
|
||||
self.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||
self.server_id, self.db_id)
|
||||
if not db_con['data']["connected"]:
|
||||
raise Exception("Could not connect to database to add a "
|
||||
"index constraint(primary key or unique key).")
|
||||
cls.schema_id = schema_info["schema_id"]
|
||||
cls.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name)
|
||||
self.schema_id = schema_info["schema_id"]
|
||||
self.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(self.server,
|
||||
self.db_name,
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a index "
|
||||
"constraint(primary key or unique key).")
|
||||
cls.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
cls.table_id = tables_utils.create_table(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name,
|
||||
cls.table_name)
|
||||
self.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
self.table_id = tables_utils.create_table(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will add index constraint(primary key or unique key)
|
||||
@@ -81,10 +80,9 @@ class IndexConstraintAddTestCase(BaseTestGenerator):
|
||||
content_type='html/json')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(cls, cls.server_id, cls.db_id)
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
|
||||
class ConstraintsUsingIndexAddTestCase(BaseTestGenerator):
|
||||
@@ -117,30 +115,28 @@ class ConstraintsUsingIndexAddTestCase(BaseTestGenerator):
|
||||
dict(url='/browser/unique_constraint/obj/', data=unique_key_data))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
cls.server_id = schema_info["server_id"]
|
||||
cls.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(cls, utils.SERVER_GROUP,
|
||||
cls.server_id, cls.db_id)
|
||||
self.server_id = schema_info["server_id"]
|
||||
self.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||
self.server_id, self.db_id)
|
||||
if not db_con['data']["connected"]:
|
||||
raise Exception("Could not connect to database to add a "
|
||||
"constraint using index.")
|
||||
cls.schema_id = schema_info["schema_id"]
|
||||
cls.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name)
|
||||
self.schema_id = schema_info["schema_id"]
|
||||
self.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(self.server,
|
||||
self.db_name,
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a index "
|
||||
"constraint(primary key or unique key).")
|
||||
cls.table_name = "table_constraint_%s" % (str(uuid.uuid4())[1:8])
|
||||
cls.table_id = tables_utils.create_table(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name,
|
||||
cls.table_name)
|
||||
self.table_name = "table_constraint_%s" % (str(uuid.uuid4())[1:8])
|
||||
self.table_id = tables_utils.create_table(self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will add index constraint(primary key or unique key)
|
||||
@@ -158,7 +154,6 @@ class ConstraintsUsingIndexAddTestCase(BaseTestGenerator):
|
||||
content_type='html/json')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(cls, cls.server_id, cls.db_id)
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -38,31 +38,30 @@ class IndexConstraintDeleteTestCase(BaseTestGenerator):
|
||||
type="UNIQUE"))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
cls.server_id = schema_info["server_id"]
|
||||
cls.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(cls, utils.SERVER_GROUP,
|
||||
cls.server_id, cls.db_id)
|
||||
self.server_id = schema_info["server_id"]
|
||||
self.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||
self.server_id, self.db_id)
|
||||
if not db_con['data']["connected"]:
|
||||
raise Exception("Could not connect to database to add a "
|
||||
"index constraint(primary key or unique key).")
|
||||
cls.schema_id = schema_info["schema_id"]
|
||||
cls.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name)
|
||||
self.schema_id = schema_info["schema_id"]
|
||||
self.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(self.server,
|
||||
self.db_name,
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a index "
|
||||
"constraint(primary key or unique key).")
|
||||
cls.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
cls.table_id = tables_utils.create_table(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name,
|
||||
cls.table_name)
|
||||
self.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
self.table_id = tables_utils.create_table(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will delete index constraint(primary key or
|
||||
@@ -81,7 +80,6 @@ class IndexConstraintDeleteTestCase(BaseTestGenerator):
|
||||
)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(cls, cls.server_id, cls.db_id)
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -38,31 +38,30 @@ class IndexConstraintGetTestCase(BaseTestGenerator):
|
||||
type="UNIQUE"))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
cls.server_id = schema_info["server_id"]
|
||||
cls.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(cls, utils.SERVER_GROUP,
|
||||
cls.server_id, cls.db_id)
|
||||
self.server_id = schema_info["server_id"]
|
||||
self.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||
self.server_id, self.db_id)
|
||||
if not db_con['data']["connected"]:
|
||||
raise Exception("Could not connect to database to add a "
|
||||
"index constraint(primary key or unique key).")
|
||||
cls.schema_id = schema_info["schema_id"]
|
||||
cls.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name)
|
||||
self.schema_id = schema_info["schema_id"]
|
||||
self.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(self.server,
|
||||
self.db_name,
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a index "
|
||||
"constraint(primary key or unique key).")
|
||||
cls.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
cls.table_id = tables_utils.create_table(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name,
|
||||
cls.table_name)
|
||||
self.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
self.table_id = tables_utils.create_table(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will fetch the index constraint(primary key or
|
||||
@@ -81,7 +80,6 @@ class IndexConstraintGetTestCase(BaseTestGenerator):
|
||||
)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(cls, cls.server_id, cls.db_id)
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -40,31 +40,30 @@ class IndexConstraintUpdateTestCase(BaseTestGenerator):
|
||||
type="UNIQUE", data=data))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
cls.server_id = schema_info["server_id"]
|
||||
cls.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(cls, utils.SERVER_GROUP,
|
||||
cls.server_id, cls.db_id)
|
||||
self.server_id = schema_info["server_id"]
|
||||
self.db_id = schema_info["db_id"]
|
||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||
self.server_id, self.db_id)
|
||||
if not db_con['data']["connected"]:
|
||||
raise Exception("Could not connect to database to add a "
|
||||
"index constraint(primary key or unique key).")
|
||||
cls.schema_id = schema_info["schema_id"]
|
||||
cls.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name)
|
||||
self.schema_id = schema_info["schema_id"]
|
||||
self.schema_name = schema_info["schema_name"]
|
||||
schema_response = schema_utils.verify_schemas(self.server,
|
||||
self.db_name,
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a index "
|
||||
"constraint(primary key or unique key).")
|
||||
cls.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
cls.table_id = tables_utils.create_table(cls.server,
|
||||
cls.db_name,
|
||||
cls.schema_name,
|
||||
cls.table_name)
|
||||
self.table_name = "table_indexconstraint_%s" % \
|
||||
(str(uuid.uuid4())[1:8])
|
||||
self.table_id = tables_utils.create_table(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will update index constraint(primary key or
|
||||
@@ -84,7 +83,6 @@ class IndexConstraintUpdateTestCase(BaseTestGenerator):
|
||||
follow_redirects=True)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(cls, cls.server_id, cls.db_id)
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -125,8 +125,9 @@ class TableUpdateParameterTestCase(BaseTestGenerator):
|
||||
),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
table_name = "test_table_parameters_%s" % (str(uuid.uuid4())[1:8])
|
||||
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
self.server_id = schema_info["server_id"]
|
||||
@@ -142,12 +143,14 @@ class TableUpdateParameterTestCase(BaseTestGenerator):
|
||||
self.schema_name)
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to add a table.")
|
||||
self.table_name = "test_table_parameters_%s" % (str(uuid.uuid4())[1:8])
|
||||
|
||||
self.table_id = tables_utils.create_table(
|
||||
self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
self.table_id = tables_utils.get_table_id(self.server, self.db_name,
|
||||
self.table_name)
|
||||
if self.table_id is None:
|
||||
self.table_id = tables_utils.create_table(
|
||||
self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.table_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will fetch added table under schema node."""
|
||||
@@ -167,7 +170,6 @@ class TableUpdateParameterTestCase(BaseTestGenerator):
|
||||
follow_redirects=True)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(self):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -483,3 +483,26 @@ def get_hash_partitions_data(data):
|
||||
}]
|
||||
data['partition_keys'] = \
|
||||
[{'key_type': 'column', 'pt_column': 'empno'}]
|
||||
|
||||
|
||||
def get_table_id(server, db_name, table_name):
|
||||
try:
|
||||
connection = utils.get_db_connection(db_name,
|
||||
server['username'],
|
||||
server['db_password'],
|
||||
server['host'],
|
||||
server['port'],
|
||||
server['sslmode'])
|
||||
pg_cursor = connection.cursor()
|
||||
pg_cursor.execute("select oid from pg_class where relname='%s'" %
|
||||
table_name)
|
||||
table = pg_cursor.fetchone()
|
||||
if table:
|
||||
table_id = table[0]
|
||||
else:
|
||||
table_id = None
|
||||
connection.close()
|
||||
return table_id
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
raise
|
||||
|
||||
@@ -125,8 +125,9 @@ class MViewsUpdateParameterTestCase(BaseTestGenerator):
|
||||
),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
m_view_name = "test_mview_put_%s" % (str(uuid.uuid4())[1:8])
|
||||
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
self.server_id = schema_info["server_id"]
|
||||
@@ -150,17 +151,19 @@ class MViewsUpdateParameterTestCase(BaseTestGenerator):
|
||||
if not schema_response:
|
||||
raise Exception("Could not find the schema to update a mview.")
|
||||
|
||||
self.m_view_name = "test_mview_put_%s" % (str(uuid.uuid4())[1:8])
|
||||
m_view_sql = "CREATE MATERIALIZED VIEW %s.%s TABLESPACE pg_default " \
|
||||
"AS SELECT 'test_pgadmin' WITH NO DATA;ALTER TABLE " \
|
||||
"%s.%s OWNER TO %s"
|
||||
|
||||
self.m_view_id = views_utils.create_view(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
m_view_sql,
|
||||
self.m_view_id = views_utils.get_view_id(self.server, self.db_name,
|
||||
self.m_view_name)
|
||||
|
||||
if self.m_view_id is None:
|
||||
m_view_sql = "CREATE MATERIALIZED VIEW %s.%s TABLESPACE " \
|
||||
"pg_default AS SELECT 'test_pgadmin' WITH NO " \
|
||||
"DATA;ALTER TABLE %s.%s OWNER TO %s"
|
||||
self.m_view_id = views_utils.create_view(self.server,
|
||||
self.db_name,
|
||||
self.schema_name,
|
||||
m_view_sql,
|
||||
self.m_view_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will update the view/mview under schema node."""
|
||||
mview_response = views_utils.verify_view(self.server, self.db_name,
|
||||
@@ -180,7 +183,6 @@ class MViewsUpdateParameterTestCase(BaseTestGenerator):
|
||||
follow_redirects=True)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(self):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -48,8 +48,7 @@ class MViewsUpdateParameterTestCase(BaseTestGenerator):
|
||||
),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
def setUp(self):
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
schema_info = parent_node_dict["schema"][-1]
|
||||
self.server_id = schema_info["server_id"]
|
||||
@@ -143,7 +142,6 @@ class MViewsUpdateParameterTestCase(BaseTestGenerator):
|
||||
# On success we get job_id from server
|
||||
self.assertTrue('job_id' in response.json['data'])
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(self):
|
||||
def tearDown(self):
|
||||
# Disconnect the database
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
||||
|
||||
@@ -86,3 +86,28 @@ def verify_view(server, db_name, view_name):
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
raise
|
||||
|
||||
|
||||
def get_view_id(server, db_name, view_name):
|
||||
try:
|
||||
connection = utils.get_db_connection(db_name,
|
||||
server['username'],
|
||||
server['db_password'],
|
||||
server['host'],
|
||||
server['port'],
|
||||
server['sslmode'])
|
||||
old_isolation_level = connection.isolation_level
|
||||
connection.set_isolation_level(0)
|
||||
pg_cursor = connection.cursor()
|
||||
# Get 'oid' from newly created view
|
||||
pg_cursor.execute("select oid from pg_class where relname='%s'" %
|
||||
view_name)
|
||||
view = pg_cursor.fetchone()
|
||||
view_id = None
|
||||
if view:
|
||||
view_id = view[0]
|
||||
connection.close()
|
||||
return view_id
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user