Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit15df517

Browse files
committed
replication test
1 parent38acbd0 commit15df517

File tree

1 file changed

+57
-11
lines changed

1 file changed

+57
-11
lines changed

‎tests/concurrent_partitioning_test.py

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,37 @@
1616
classConcurrentTest(unittest.TestCase):
1717

1818
defsetUp(self):
19-
pass
20-
21-
deftearDown(self):
22-
stop_all()
23-
# clean_all()
24-
25-
deftest_concurrent(self):
26-
setup_cmd= [
19+
self.setup_cmd= [
2720
'create extension pg_pathman',
2821
'create table abc(id serial, t text)',
2922
'insert into abc select generate_series(1, 300000)',
3023
'select create_hash_partitions(\'abc\',\'id\', 3, partition_data := false)',
3124
]
3225

26+
deftearDown(self):
27+
stop_all()
28+
# clean_all()
29+
30+
definit_test_data(self,node):
31+
"""Initialize pg_pathman extension and test data"""
32+
forcmdinself.setup_cmd:
33+
node.safe_psql('postgres',cmd)
34+
35+
defcatchup_replica(self,master,replica):
36+
"""Wait until replica synchronizes with master"""
37+
master.poll_query_until(
38+
'postgres',
39+
'SELECT pg_current_xlog_location() <= replay_location '
40+
'FROM pg_stat_replication WHERE application_name =\'%s\''
41+
%replica.name)
42+
43+
deftest_concurrent(self):
44+
"""Tests concurrent partitioning"""
3345
node=get_new_node('test')
3446
node.init()
3547
node.append_conf('postgresql.conf','shared_preload_libraries=\'pg_pathman\'\n')
3648
node.start()
37-
38-
forcmdinsetup_cmd:
39-
node.safe_psql('postgres',cmd)
49+
self.init_test_data(node)
4050

4151
node.psql('postgres','select partition_data_worker(\'abc\')')
4252

@@ -60,5 +70,41 @@ def test_concurrent(self):
6070

6171
node.stop()
6272

73+
deftest_replication(self):
74+
"""Tests how pg_pathman works with replication"""
75+
node=get_new_node('master')
76+
replica=get_new_node('repl')
77+
78+
# initialize master server
79+
node.init(allows_streaming=True)
80+
node.append_conf('postgresql.conf','shared_preload_libraries=\'pg_pathman\'\n')
81+
node.start()
82+
node.backup('my_backup')
83+
84+
# initialize replica from backup
85+
replica.init_from_backup(node,'my_backup',has_streaming=True)
86+
replica.start()
87+
88+
# initialize pg_pathman extension and some test data
89+
self.init_test_data(node)
90+
91+
# wait until replica catches up
92+
self.catchup_replica(node,replica)
93+
94+
# check that results are equal
95+
self.assertEqual(
96+
node.psql('postgres','explain (costs off) select * from abc'),
97+
replica.psql('postgres','explain (costs off) select * from abc')
98+
)
99+
100+
# enable parent and see if it is enabled in replica
101+
node.psql('postgres','select enable_parent(\'abc\'')
102+
103+
self.catchup_replica(node,replica)
104+
self.assertEqual(
105+
node.psql('postgres','explain (costs off) select * from abc'),
106+
replica.psql('postgres','explain (costs off) select * from abc')
107+
)
108+
63109
if__name__=="__main__":
64110
unittest.main()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp