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

Commit7bea7be

Browse files
committed
test_referee test version without hardcoded sleep times and fsync=on
1 parent976250e commit7bea7be

File tree

4 files changed

+42
-23
lines changed

4 files changed

+42
-23
lines changed

‎tests2/docker-entrypoint.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ if [ "$1" = 'postgres' ]; then
5151
listen_addresses='*'
5252
max_prepared_transactions = 100
5353
synchronous_commit = on
54-
fsync =off
54+
fsync =on
5555
wal_level = logical
5656
max_worker_processes = 30
5757
max_replication_slots = 10
@@ -62,11 +62,11 @@ if [ "$1" = 'postgres' ]; then
6262
# log_statement = all
6363
6464
multimaster.max_nodes = 3
65-
# multimaster.volkswagen_mode = 1
66-
# multimaster.ignore_tables_without_pk = 1
6765
multimaster.heartbeat_recv_timeout = 1100
6866
multimaster.heartbeat_send_timeout = 250
69-
multimaster.max_recovery_lag = 1000000000
67+
multimaster.max_recovery_lag = 1GB
68+
multimaster.min_recovery_lag = 10kB
69+
multimaster.preserve_commit_order = off
7070
EOF
7171

7272
if [-n"$NODE_ID" ];then

‎tests2/lib/bank_client.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,15 @@ def no_prepared_tx(self):
159159
defstatus(self):
160160
whileself.running:
161161
msg=yieldfromself.child_pipe.coro_recv()
162-
ifmsg=='status':
162+
ifmsg=='status'ormsg=='status_noclean':
163163
serialized_aggs= []
164164

165165
forconn_id,conn_aggsinself.aggregates.items():
166166
serialized_aggs.append({})
167167
foraggname,agginconn_aggs.items():
168168
serialized_aggs[conn_id][aggname]=agg.as_dict()
169-
agg.clear_values()
169+
ifmsg=='status':
170+
agg.clear_values()
170171

171172
yieldfromself.child_pipe.coro_send(serialized_aggs)
172173
else:
@@ -284,9 +285,14 @@ def bgrun(self):
284285
self.evloop_process=multiprocessing.Process(target=self.run,args=())
285286
self.evloop_process.start()
286287

287-
defget_aggregates(self,_print=True):
288-
self.parent_pipe.send('status')
288+
defget_aggregates(self,_print=True,clean=True):
289+
ifclean:
290+
self.parent_pipe.send('status')
291+
else:
292+
self.parent_pipe.send('status_noclean')
293+
289294
resp=self.parent_pipe.recv()
295+
290296
if_print:
291297
MtmClient.print_aggregates(resp)
292298
returnresp

‎tests2/lib/test_helper.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
TEST_WARMING_TIME=5
77
TEST_DURATION=10
8+
TEST_MAX_RECOVERY_TIME=300
89
TEST_RECOVERY_TIME=30
910
TEST_SETUP_TIME=20
1011
TEST_STOP_DELAY=5
@@ -34,7 +35,20 @@ def assertNoCommits(self, aggs):
3435
ifcommits:
3536
raiseAssertionError('There are commits during aggregation interval')
3637

37-
defperformFailure(self,failure,wait=0):
38+
defawaitCommit(self,node_id):
39+
total_sleep=0
40+
41+
whiletotal_sleep<=TEST_MAX_RECOVERY_TIME:
42+
aggs=self.client.get_aggregates(clean=False,_print=False)
43+
# print('=== ',aggs[node_id]['transfer']['finish'])
44+
if ('commit'inaggs[node_id]['transfer']['finish']and
45+
aggs[node_id]['transfer']['finish']['commit']>10):
46+
break
47+
time.sleep(5)
48+
total_sleep+=5
49+
50+
51+
defperformFailure(self,failure,wait=0,node_wait_for_commit=-1):
3852

3953
time.sleep(TEST_WARMING_TIME)
4054

@@ -57,9 +71,13 @@ def performFailure(self, failure, wait=0):
5771
print('Eliminate failure at ',datetime.datetime.utcnow())
5872

5973
self.client.clean_aggregates()
60-
time.sleep(TEST_RECOVERY_TIME)
61-
aggs=self.client.get_aggregates()
6274

75+
ifnode_wait_for_commit>=0:
76+
self.awaitCommit(node_wait_for_commit)
77+
else:
78+
time.sleep(TEST_RECOVERY_TIME)
79+
80+
aggs=self.client.get_aggregates()
6381
return (aggs_failure,aggs)
6482

6583
defnodeExecute(dsn,statements):

‎tests2/test_referee.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ def setUpClass(cls):
2525
'--build',
2626
'-d'])
2727

28-
# XXX: add normal wait here
29-
time.sleep(TEST_SETUP_TIME)
30-
3128
cls.client=MtmClient([
3229
"dbname=regression user=postgres host=127.0.0.1 port=15432",
3330
"dbname=regression user=postgres host=127.0.0.1 port=15433"
@@ -42,8 +39,6 @@ def tearDownClass(cls):
4239
print('tearDown')
4340
cls.client.stop()
4441

45-
time.sleep(TEST_STOP_DELAY)
46-
4742
ifnotcls.client.is_data_identic():
4843
raiseAssertionError('Different data on nodes')
4944

@@ -55,7 +50,7 @@ def tearDownClass(cls):
5550

5651
defsetUp(self):
5752
warnings.simplefilter("ignore",ResourceWarning)
58-
time.sleep(20)
53+
5954
print('Start new test at ',datetime.datetime.utcnow())
6055

6156
deftearDown(self):
@@ -64,7 +59,7 @@ def tearDown(self):
6459
deftest_node_crash(self):
6560
print('### test_node_crash ###')
6661

67-
aggs_failure,aggs=self.performFailure(CrashRecoverNode('node2'))
62+
aggs_failure,aggs=self.performFailure(CrashRecoverNode('node2'),node_wait_for_commit=1)
6863

6964
self.assertCommits(aggs_failure[:1])
7065
self.assertNoCommits(aggs_failure[1:])
@@ -77,7 +72,7 @@ def test_node_crash(self):
7772
deftest_partition_referee(self):
7873
print('### test_partition_referee ###')
7974

80-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
75+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'),node_wait_for_commit=1)
8176

8277
self.assertCommits(aggs_failure[:1])
8378
self.assertNoCommits(aggs_failure[1:])
@@ -89,7 +84,7 @@ def test_partition_referee(self):
8984
deftest_double_failure_referee(self):
9085
print('### test_double_failure_referee ###')
9186

92-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
87+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'),node_wait_for_commit=1)
9388

9489
self.assertCommits(aggs_failure[:1])
9590
self.assertNoCommits(aggs_failure[1:])
@@ -98,7 +93,7 @@ def test_double_failure_referee(self):
9893
self.assertCommits(aggs)
9994
self.assertIsolation(aggs)
10095

101-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node1'))
96+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node1'),node_wait_for_commit=0)
10297

10398
self.assertNoCommits(aggs_failure[:1])
10499
self.assertCommits(aggs_failure[1:])
@@ -121,7 +116,7 @@ def test_winner_restart(self):
121116
self.assertCommits(aggs[1:])
122117
self.assertIsolation(aggs)
123118

124-
aggs_failure,aggs=self.performFailure(RestartNode('node2'))
119+
aggs_failure,aggs=self.performFailure(RestartNode('node2'),node_wait_for_commit=1)
125120

126121
self.assertNoCommits(aggs_failure)
127122
self.assertIsolation(aggs_failure)
@@ -133,7 +128,7 @@ def test_winner_restart(self):
133128
# need to start node1 to perform consequent tests
134129
docker_api=docker.from_env()
135130
docker_api.containers.get('node1').start()
136-
time.sleep(35)
131+
self.awaitCommit(0)
137132

138133

139134
if__name__=='__main__':

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp