Skip to content

Commit dbb7a0c

Browse files
Merge branch 'proj/dbaas-vpc' into TPT-3734-support-vpc-dbaas
2 parents 40e83d5 + 7b7f647 commit dbb7a0c

File tree

2 files changed

+166
-352
lines changed

2 files changed

+166
-352
lines changed

test/unit/groups/database_test.py

Lines changed: 166 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -73,65 +73,6 @@ def test_database_instance(self):
7373
self.assertTrue(isinstance(db_translated, MySQLDatabase))
7474
self.assertEqual(db_translated.ssl_connection, True)
7575

76-
77-
class MySQLDatabaseTest(ClientBaseCase):
78-
"""
79-
Tests methods of the MySQLDatabase class
80-
"""
81-
82-
def test_get_instances(self):
83-
"""
84-
Test that database types are properly handled
85-
"""
86-
dbs = self.client.database.mysql_instances()
87-
88-
self.assertEqual(len(dbs), 1)
89-
self.assertEqual(dbs[0].allow_list[1], "192.0.1.0/24")
90-
self.assertEqual(dbs[0].cluster_size, 3)
91-
self.assertEqual(dbs[0].encrypted, False)
92-
self.assertEqual(dbs[0].engine, "mysql")
93-
self.assertEqual(
94-
dbs[0].hosts.primary,
95-
"lin-123-456-mysql-mysql-primary.servers.linodedb.net",
96-
)
97-
self.assertEqual(
98-
dbs[0].hosts.secondary,
99-
"lin-123-456-mysql-primary-private.servers.linodedb.net",
100-
)
101-
self.assertEqual(dbs[0].id, 123)
102-
self.assertEqual(dbs[0].region, "us-east")
103-
self.assertEqual(dbs[0].updates.duration, 3)
104-
self.assertEqual(dbs[0].version, "8.0.26")
105-
106-
def test_create(self):
107-
"""
108-
Test that MySQL databases can be created
109-
"""
110-
111-
with self.mock_post("/databases/mysql/instances") as m:
112-
# We don't care about errors here; we just want to
113-
# validate the request.
114-
try:
115-
self.client.database.mysql_create(
116-
"cool",
117-
"us-southeast",
118-
"mysql/8.0.26",
119-
"g6-standard-1",
120-
cluster_size=3,
121-
)
122-
except Exception as e:
123-
logger.warning(
124-
"An error occurred while validating the request: %s", e
125-
)
126-
127-
self.assertEqual(m.method, "post")
128-
self.assertEqual(m.call_url, "/databases/mysql/instances")
129-
self.assertEqual(m.call_data["label"], "cool")
130-
self.assertEqual(m.call_data["region"], "us-southeast")
131-
self.assertEqual(m.call_data["engine"], "mysql/8.0.26")
132-
self.assertEqual(m.call_data["type"], "g6-standard-1")
133-
self.assertEqual(m.call_data["cluster_size"], 3)
134-
13576
def test_mysql_config_options(self):
13677
"""
13778
Test that MySQL configuration options can be retrieved
@@ -1320,15 +1261,86 @@ def test_postgresql_config_options(self):
13201261
self.assertFalse(config["work_mem"]["requires_restart"])
13211262
self.assertEqual("integer", config["work_mem"]["type"])
13221263

1264+
def test_get_mysql_instances(self):
1265+
"""
1266+
Test that mysql instances can be retrieved properly
1267+
"""
1268+
dbs = self.client.database.mysql_instances()
13231269

1324-
class PostgreSQLDatabaseTest(ClientBaseCase):
1325-
"""
1326-
Tests methods of the PostgreSQLDatabase class
1327-
"""
1270+
self.assertEqual(len(dbs), 1)
1271+
self.assertEqual(dbs[0].allow_list[1], "192.0.1.0/24")
1272+
self.assertEqual(dbs[0].cluster_size, 3)
1273+
self.assertEqual(dbs[0].encrypted, False)
1274+
self.assertEqual(dbs[0].engine, "mysql")
1275+
self.assertEqual(
1276+
dbs[0].hosts.primary,
1277+
"lin-123-456-mysql-mysql-primary.servers.linodedb.net",
1278+
)
1279+
self.assertEqual(
1280+
dbs[0].hosts.secondary,
1281+
"lin-123-456-mysql-primary-private.servers.linodedb.net",
1282+
)
1283+
self.assertEqual(dbs[0].id, 123)
1284+
self.assertEqual(dbs[0].region, "us-east")
1285+
self.assertEqual(dbs[0].updates.duration, 3)
1286+
self.assertEqual(dbs[0].version, "8.0.26")
1287+
self.assertEqual(dbs[0].engine_config.binlog_retention_period, 600)
1288+
self.assertEqual(dbs[0].engine_config.mysql.connect_timeout, 10)
1289+
self.assertEqual(dbs[0].engine_config.mysql.default_time_zone, "+03:00")
1290+
self.assertEqual(dbs[0].engine_config.mysql.group_concat_max_len, 1024)
1291+
self.assertEqual(
1292+
dbs[0].engine_config.mysql.information_schema_stats_expiry, 86400
1293+
)
1294+
self.assertEqual(
1295+
dbs[0].engine_config.mysql.innodb_change_buffer_max_size, 30
1296+
)
1297+
self.assertEqual(dbs[0].engine_config.mysql.innodb_flush_neighbors, 0)
1298+
self.assertEqual(dbs[0].engine_config.mysql.innodb_ft_min_token_size, 3)
1299+
self.assertEqual(
1300+
dbs[0].engine_config.mysql.innodb_ft_server_stopword_table,
1301+
"db_name/table_name",
1302+
)
1303+
self.assertEqual(
1304+
dbs[0].engine_config.mysql.innodb_lock_wait_timeout, 50
1305+
)
1306+
self.assertEqual(
1307+
dbs[0].engine_config.mysql.innodb_log_buffer_size, 16777216
1308+
)
1309+
self.assertEqual(
1310+
dbs[0].engine_config.mysql.innodb_online_alter_log_max_size,
1311+
134217728,
1312+
)
1313+
self.assertEqual(dbs[0].engine_config.mysql.innodb_read_io_threads, 10)
1314+
self.assertTrue(dbs[0].engine_config.mysql.innodb_rollback_on_timeout)
1315+
self.assertEqual(
1316+
dbs[0].engine_config.mysql.innodb_thread_concurrency, 10
1317+
)
1318+
self.assertEqual(dbs[0].engine_config.mysql.innodb_write_io_threads, 10)
1319+
self.assertEqual(dbs[0].engine_config.mysql.interactive_timeout, 3600)
1320+
self.assertEqual(
1321+
dbs[0].engine_config.mysql.internal_tmp_mem_storage_engine,
1322+
"TempTable",
1323+
)
1324+
self.assertEqual(
1325+
dbs[0].engine_config.mysql.max_allowed_packet, 67108864
1326+
)
1327+
self.assertEqual(
1328+
dbs[0].engine_config.mysql.max_heap_table_size, 16777216
1329+
)
1330+
self.assertEqual(dbs[0].engine_config.mysql.net_buffer_length, 16384)
1331+
self.assertEqual(dbs[0].engine_config.mysql.net_read_timeout, 30)
1332+
self.assertEqual(dbs[0].engine_config.mysql.net_write_timeout, 30)
1333+
self.assertEqual(dbs[0].engine_config.mysql.sort_buffer_size, 262144)
1334+
self.assertEqual(
1335+
dbs[0].engine_config.mysql.sql_mode, "ANSI,TRADITIONAL"
1336+
)
1337+
self.assertTrue(dbs[0].engine_config.mysql.sql_require_primary_key)
1338+
self.assertEqual(dbs[0].engine_config.mysql.tmp_table_size, 16777216)
1339+
self.assertEqual(dbs[0].engine_config.mysql.wait_timeout, 28800)
13281340

1329-
def test_get_instances(self):
1341+
def test_get_postgresql_instances(self):
13301342
"""
1331-
Test that database types are properly handled
1343+
Test that postgresql instances can be retrieved properly
13321344
"""
13331345
dbs = self.client.database.postgresql_instances()
13341346

@@ -1350,31 +1362,93 @@ def test_get_instances(self):
13501362
self.assertEqual(dbs[0].updates.duration, 3)
13511363
self.assertEqual(dbs[0].version, "13.2")
13521364

1353-
def test_create(self):
1354-
"""
1355-
Test that PostgreSQL databases can be created
1356-
"""
1365+
print(dbs[0].engine_config.pg.__dict__)
13571366

1358-
with self.mock_post("/databases/postgresql/instances") as m:
1359-
# We don't care about errors here; we just want to
1360-
# validate the request.
1361-
try:
1362-
self.client.database.postgresql_create(
1363-
"cool",
1364-
"us-southeast",
1365-
"postgresql/13.2",
1366-
"g6-standard-1",
1367-
cluster_size=3,
1368-
)
1369-
except Exception as e:
1370-
logger.warning(
1371-
"An error occurred while validating the request: %s", e
1372-
)
1373-
1374-
self.assertEqual(m.method, "post")
1375-
self.assertEqual(m.call_url, "/databases/postgresql/instances")
1376-
self.assertEqual(m.call_data["label"], "cool")
1377-
self.assertEqual(m.call_data["region"], "us-southeast")
1378-
self.assertEqual(m.call_data["engine"], "postgresql/13.2")
1379-
self.assertEqual(m.call_data["type"], "g6-standard-1")
1380-
self.assertEqual(m.call_data["cluster_size"], 3)
1367+
self.assertTrue(dbs[0].engine_config.pg_stat_monitor_enable)
1368+
self.assertEqual(
1369+
dbs[0].engine_config.pglookout.max_failover_replication_time_lag,
1370+
1000,
1371+
)
1372+
self.assertEqual(dbs[0].engine_config.shared_buffers_percentage, 41.5)
1373+
self.assertEqual(dbs[0].engine_config.work_mem, 4)
1374+
self.assertEqual(
1375+
dbs[0].engine_config.pg.autovacuum_analyze_scale_factor, 0.5
1376+
)
1377+
self.assertEqual(
1378+
dbs[0].engine_config.pg.autovacuum_analyze_threshold, 100
1379+
)
1380+
self.assertEqual(dbs[0].engine_config.pg.autovacuum_max_workers, 10)
1381+
self.assertEqual(dbs[0].engine_config.pg.autovacuum_naptime, 100)
1382+
self.assertEqual(
1383+
dbs[0].engine_config.pg.autovacuum_vacuum_cost_delay, 50
1384+
)
1385+
self.assertEqual(
1386+
dbs[0].engine_config.pg.autovacuum_vacuum_cost_limit, 100
1387+
)
1388+
self.assertEqual(
1389+
dbs[0].engine_config.pg.autovacuum_vacuum_scale_factor, 0.5
1390+
)
1391+
self.assertEqual(
1392+
dbs[0].engine_config.pg.autovacuum_vacuum_threshold, 100
1393+
)
1394+
self.assertEqual(dbs[0].engine_config.pg.bgwriter_delay, 200)
1395+
self.assertEqual(dbs[0].engine_config.pg.bgwriter_flush_after, 512)
1396+
self.assertEqual(dbs[0].engine_config.pg.bgwriter_lru_maxpages, 100)
1397+
self.assertEqual(dbs[0].engine_config.pg.bgwriter_lru_multiplier, 2.0)
1398+
self.assertEqual(dbs[0].engine_config.pg.deadlock_timeout, 1000)
1399+
self.assertEqual(
1400+
dbs[0].engine_config.pg.default_toast_compression, "lz4"
1401+
)
1402+
self.assertEqual(
1403+
dbs[0].engine_config.pg.idle_in_transaction_session_timeout, 100
1404+
)
1405+
self.assertTrue(dbs[0].engine_config.pg.jit)
1406+
self.assertEqual(dbs[0].engine_config.pg.max_files_per_process, 100)
1407+
self.assertEqual(dbs[0].engine_config.pg.max_locks_per_transaction, 100)
1408+
self.assertEqual(
1409+
dbs[0].engine_config.pg.max_logical_replication_workers, 32
1410+
)
1411+
self.assertEqual(dbs[0].engine_config.pg.max_parallel_workers, 64)
1412+
self.assertEqual(
1413+
dbs[0].engine_config.pg.max_parallel_workers_per_gather, 64
1414+
)
1415+
self.assertEqual(
1416+
dbs[0].engine_config.pg.max_pred_locks_per_transaction, 1000
1417+
)
1418+
self.assertEqual(dbs[0].engine_config.pg.max_replication_slots, 32)
1419+
self.assertEqual(dbs[0].engine_config.pg.max_slot_wal_keep_size, 100)
1420+
self.assertEqual(dbs[0].engine_config.pg.max_stack_depth, 3507152)
1421+
self.assertEqual(
1422+
dbs[0].engine_config.pg.max_standby_archive_delay, 1000
1423+
)
1424+
self.assertEqual(
1425+
dbs[0].engine_config.pg.max_standby_streaming_delay, 1000
1426+
)
1427+
self.assertEqual(dbs[0].engine_config.pg.max_wal_senders, 32)
1428+
self.assertEqual(dbs[0].engine_config.pg.max_worker_processes, 64)
1429+
self.assertEqual(
1430+
dbs[0].engine_config.pg.password_encryption, "scram-sha-256"
1431+
)
1432+
self.assertEqual(dbs[0].engine_config.pg.pg_partman_bgw_interval, 3600)
1433+
self.assertEqual(
1434+
dbs[0].engine_config.pg.pg_partman_bgw_role, "myrolename"
1435+
)
1436+
self.assertFalse(
1437+
dbs[0].engine_config.pg.pg_stat_monitor_pgsm_enable_query_plan
1438+
)
1439+
self.assertEqual(
1440+
dbs[0].engine_config.pg.pg_stat_monitor_pgsm_max_buckets, 10
1441+
)
1442+
self.assertEqual(
1443+
dbs[0].engine_config.pg.pg_stat_statements_track, "top"
1444+
)
1445+
self.assertEqual(dbs[0].engine_config.pg.temp_file_limit, 5000000)
1446+
self.assertEqual(dbs[0].engine_config.pg.timezone, "Europe/Helsinki")
1447+
self.assertEqual(
1448+
dbs[0].engine_config.pg.track_activity_query_size, 1024
1449+
)
1450+
self.assertEqual(dbs[0].engine_config.pg.track_commit_timestamp, "off")
1451+
self.assertEqual(dbs[0].engine_config.pg.track_functions, "all")
1452+
self.assertEqual(dbs[0].engine_config.pg.track_io_timing, "off")
1453+
self.assertEqual(dbs[0].engine_config.pg.wal_sender_timeout, 60000)
1454+
self.assertEqual(dbs[0].engine_config.pg.wal_writer_delay, 50)

0 commit comments

Comments
 (0)