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

Commit6836fae

Browse files
committed
test helpers
1 parentcd98380 commit6836fae

File tree

3 files changed

+53
-35
lines changed

3 files changed

+53
-35
lines changed

‎tests2/lib/bank_client.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,10 @@ def status(self):
111111
whileself.running:
112112
msg=yieldfromself.child_pipe.coro_recv()
113113
ifmsg=='status':
114-
serialized_aggs={}
114+
serialized_aggs=[]
115115

116116
forconn_id,conn_aggsinself.aggregates.items():
117-
serialized_aggs[conn_id]= {}
117+
serialized_aggs.append({})
118118
foraggname,agginconn_aggs.items():
119119
serialized_aggs[conn_id][aggname]=agg.as_dict()
120120
agg.clear_values()
@@ -224,9 +224,8 @@ def print_aggregates(cls, aggs):
224224
print(col,end="\t")
225225
print("\n",end="")
226226

227-
forconn_idinaggs.keys():
228-
foraggnameinaggs[conn_id].keys():
229-
agg=aggs[conn_id][aggname]
227+
forconn_id,agg_conninenumerate(aggs):
228+
foraggname,agginagg_conn.items():
230229
print("Node %d: %s\t"% (conn_id+1,aggname),end="")
231230
forcolincolumns:
232231
ifisinstance(agg[col],float):

‎tests2/lib/failure_injector.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22

33
classFailureInjector(object):
44

5-
#def __init__(self):
6-
# self.docker_api = docker.Client()
5+
def__init__(self):
6+
self.docker_api=docker.Client()
77

88
defcontainer_exec(self,node,command):
9-
self.docker_api=docker.Client()
109
exec_id=self.docker_api.exec_create(node,command,user='root')
1110
output=self.docker_api.exec_start(exec_id)
12-
self.docker_api.close()
13-
# print(command, ' -> ', output)
1411

1512

1613
classSingleNodePartition(FailureInjector):

‎tests2/test_recovery.py

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,47 @@
1414
TEST_DURATION=10
1515
TEST_RECOVERY_TIME=20
1616

17-
classRecoveryTest(unittest.TestCase):
17+
classTestHelper(object):
18+
19+
defassertIsolation(self,aggs):
20+
isolated=True
21+
forconn_id,agginenumerate(aggs):
22+
isolated=isolatedandagg['sumtotal']['isolation']==0
23+
ifnotisolated:
24+
raiseAssertionError('Isolation failure')
25+
26+
defassertCommits(self,aggs):
27+
commits=True
28+
forconn_id,agginenumerate(aggs):
29+
commits=commitsand'commit'inagg['transfer']['finish']
30+
ifnotcommits:
31+
raiseAssertionError('No commits during aggregation interval')
32+
33+
defassertNoCommits(self,aggs):
34+
commits=True
35+
forconn_id,agginenumerate(aggs):
36+
commits=commitsand'commit'inagg['transfer']['finish']
37+
ifcommits:
38+
raiseAssertionError('There are commits during aggregation interval')
39+
40+
defperformFailure(self,failure):
41+
failure.start()
42+
43+
self.client.clean_aggregates()
44+
time.sleep(TEST_DURATION)
45+
aggs_failure=self.client.get_aggregates()
46+
47+
failure.stop()
48+
49+
self.client.clean_aggregates()
50+
time.sleep(TEST_RECOVERY_TIME)
51+
aggs=self.client.get_aggregates()
52+
53+
return (aggs_failure,aggs)
54+
55+
56+
classRecoveryTest(unittest.TestCase,TestHelper):
57+
1858
@classmethod
1959
defsetUpClass(self):
2060
# subprocess.check_call(['docker-compose','up',
@@ -58,32 +98,14 @@ def test_normal_operations(self):
5898
deftest_node_partition(self):
5999
print('### nodePartitionTest ###')
60100

61-
failure=SingleNodePartition('node3')
62-
failure.start()
63-
64-
self.client.clean_aggregates()
65-
time.sleep(TEST_DURATION)
66-
aggs_failure=self.client.get_aggregates()
67-
68-
failure.stop()
101+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node3'))
69102

70-
self.client.clean_aggregates()
71-
time.sleep(TEST_RECOVERY_TIME)
72-
aggs=self.client.get_aggregates()
103+
self.assertCommits(aggs_failure[:2])
104+
self.assertNoCommits(aggs_failure[2:])
105+
self.assertIsolation(aggs_failure)
73106

74-
self.assertTrue('commit'inaggs_failure[0]['transfer']['finish'] )
75-
self.assertTrue('commit'inaggs_failure[1]['transfer']['finish'] )
76-
self.assertTrue('commit'notinaggs_failure[2]['transfer']['finish'] )
77-
self.assertTrue(aggs_failure[0]['sumtotal']['isolation']==0)
78-
self.assertTrue(aggs_failure[1]['sumtotal']['isolation']==0)
79-
self.assertTrue(aggs_failure[2]['sumtotal']['isolation']==0)
80-
81-
self.assertTrue('commit'inaggs[0]['transfer']['finish'] )
82-
self.assertTrue('commit'inaggs[1]['transfer']['finish'] )
83-
self.assertTrue('commit'inaggs[2]['transfer']['finish'] )
84-
self.assertTrue(aggs[0]['sumtotal']['isolation']==0)
85-
self.assertTrue(aggs[1]['sumtotal']['isolation']==0)
86-
self.assertTrue(aggs[2]['sumtotal']['isolation']==0)
107+
self.assertCommits(aggs)
108+
self.assertIsolation(aggs)
87109

88110

89111
deftest_edge_partition(self):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp