Skip to content

Commit 5fbf9c8

Browse files
committed
run recovery test at travis
1 parent 74ae6ab commit 5fbf9c8

File tree

4 files changed

+27
-42
lines changed

4 files changed

+27
-42
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ services:
55

66
before_script: env && pip3 install -r contrib/mmts/tests2/requirements.txt
77

8-
script: cd contrib/mmts/tests2 && python3 test_regression.py
8+
# script: cd contrib/mmts/tests2 && python3 test_regression.py
9+
script: cd contrib/mmts/tests2 && python3 test_recovery.py
910

1011
notifications:
1112
email:

contrib/mmts/tests2/lib/bank_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def finish_tx(self, name):
3030
if latency > self.max_latency:
3131
self.max_latency = latency
3232

33-
if name not in self.finish:
33+
if name not in self.finish:
3434
self.finish[name] = 1
3535
else:
3636
self.finish[name] += 1
@@ -194,7 +194,7 @@ def run(self):
194194
self.loop.run_forever()
195195

196196
def bgrun(self):
197-
print('Starting evloop in different process');
197+
print('Starting evloop in different process')
198198
self.parent_pipe, self.child_pipe = aioprocessing.AioPipe()
199199
self.evloop_process = multiprocessing.Process(target=self.run, args=())
200200
self.evloop_process.start()

contrib/mmts/tests2/lib/failure_injector.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ def container_exec(self, node, command):
99
exec_id = self.docker_api.exec_create(node, command, user='root')
1010
output = self.docker_api.exec_start(exec_id)
1111

12+
class NoFailure(FailureInjector):
13+
14+
def start(self):
15+
return
16+
17+
def stop(self):
18+
return
1219

1320
class SingleNodePartition(FailureInjector):
1421

contrib/mmts/tests2/test_recovery.py

Lines changed: 16 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ class RecoveryTest(unittest.TestCase, TestHelper):
5757

5858
@classmethod
5959
def setUpClass(self):
60-
# subprocess.check_call(['docker-compose','up',
61-
# '--force-recreate',
62-
# '-d'])
60+
subprocess.check_call(['docker-compose','up',
61+
'--force-recreate',
62+
'-d'])
6363

6464
# XXX: add normal wait here
65-
# time.sleep(30)
65+
time.sleep(20)
6666
self.client = MtmClient([
6767
"dbname=regression user=postgres host=127.0.0.1 port=15432",
6868
"dbname=regression user=postgres host=127.0.0.1 port=15433",
@@ -75,24 +75,18 @@ def tearDownClass(self):
7575
print('tearDown')
7676
self.client.stop()
7777
# XXX: check nodes data identity here
78-
# subprocess.check_call(['docker-compose','down'])
78+
subprocess.check_call(['docker-compose','down'])
7979

8080
def test_normal_operations(self):
8181
print('### normal_operations ###')
8282

83-
self.client.clean_aggregates()
84-
time.sleep(TEST_DURATION)
85-
aggs_failure = self.client.get_aggregates()
86-
87-
self.client.clean_aggregates()
88-
time.sleep(TEST_RECOVERY_TIME)
89-
aggs = self.client.get_aggregates()
83+
aggs_failure, aggs = self.performFailure(NoFailure())
9084

91-
for agg in aggs_failure:
92-
self.assertTrue( 'commit' in aggs_failure[agg]['finish'] )
85+
self.assertCommits(aggs_failure)
86+
self.assertIsolation(aggs_failure)
9387

94-
for agg in aggs:
95-
self.assertTrue( 'commit' in aggs[agg]['finish'] )
88+
self.assertCommits(aggs)
89+
self.assertIsolation(aggs)
9690

9791

9892
def test_node_partition(self):
@@ -111,31 +105,14 @@ def test_node_partition(self):
111105
def test_edge_partition(self):
112106
print('### edgePartitionTest ###')
113107

114-
failure = EdgePartition('node2', 'node3')
115-
failure.start()
108+
aggs_failure, aggs = self.performFailure(EdgePartition('node2', 'node3'))
116109

117-
self.client.clean_aggregates()
118-
time.sleep(TEST_DURATION)
119-
aggs_failure = self.client.get_aggregates()
120-
121-
failure.stop()
122-
123-
self.client.clean_aggregates()
124-
time.sleep(TEST_RECOVERY_TIME)
125-
aggs = self.client.get_aggregates()
110+
self.assertTrue( ('commit' in aggs_failure[1]['transfer']['finish']) or ('commit' in aggs_failure[2]['transfer']['finish']) )
111+
self.assertCommits(aggs_failure[0:1]) # first node
112+
self.assertIsolation(aggs_failure)
126113

127-
self.assertTrue( ('commit' in aggs_failure['transfer_2']['finish']) or ('commit' in aggs_failure['transfer_1']['finish']) )
128-
self.assertTrue( 'commit' in aggs_failure['transfer_0']['finish'] )
129-
self.assertTrue( aggs_failure['sumtotal_0']['isolation'] == 0)
130-
self.assertTrue( aggs_failure['sumtotal_1']['isolation'] == 0)
131-
self.assertTrue( aggs_failure['sumtotal_2']['isolation'] == 0)
132-
133-
self.assertTrue( 'commit' in aggs['transfer_0']['finish'] )
134-
self.assertTrue( 'commit' in aggs['transfer_1']['finish'] )
135-
self.assertTrue( 'commit' in aggs['transfer_2']['finish'] )
136-
self.assertTrue( aggs['sumtotal_0']['isolation'] == 0)
137-
self.assertTrue( aggs['sumtotal_1']['isolation'] == 0)
138-
self.assertTrue( aggs['sumtotal_2']['isolation'] == 0)
114+
self.assertCommits(aggs)
115+
self.assertIsolation(aggs)
139116

140117
if __name__ == '__main__':
141118
unittest.main()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy