Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 39f38ca

Browse files
committed
More details in tests
1 parent 9c3adf8 commit 39f38ca

File tree

5 files changed

+41
-25
lines changed

5 files changed

+41
-25
lines changed

tests2/docker-compose.yml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ services:
1111
environment:
1212
POSTGRES_USER: 'pg'
1313
POSTGRES_DB: 'regression'
14-
MAJOR: 'off'
1514
NODE_ID: 1
16-
# CONNSTRS: >-
17-
# dbname=regression user=pg host=node1,
18-
# dbname=regression user=pg host=toxi port=12000 arbiterport=12001,
19-
# dbname=regression user=pg host=toxi port=13000 arbiterport=13001
2015
CONNSTRS: >-
2116
dbname=regression user=pg host=node1,
2217
dbname=regression user=pg host=node2,
@@ -33,12 +28,7 @@ services:
3328
environment:
3429
POSTGRES_USER: 'pg'
3530
POSTGRES_DB: 'regression'
36-
MAJOR: 'off'
3731
NODE_ID: 2
38-
# CONNSTRS: >-
39-
# dbname=regression user=pg host=toxi port=21000 arbiterport=21001,
40-
# dbname=regression user=pg host=node2,
41-
# dbname=regression user=pg host=toxi port=23000 arbiterport=23001
4232
CONNSTRS: >-
4333
dbname=regression user=pg host=node1,
4434
dbname=regression user=pg host=node2,
@@ -55,12 +45,7 @@ services:
5545
environment:
5646
POSTGRES_USER: 'pg'
5747
POSTGRES_DB: 'regression'
58-
MAJOR: 'off'
5948
NODE_ID: 3
60-
# CONNSTRS: >-
61-
# dbname=regression user=pg host=toxi port=31000 arbiterport=31001,
62-
# dbname=regression user=pg host=toxi port=32000 arbiterport=32001,
63-
# dbname=regression user=pg host=node3
6449
CONNSTRS: >-
6550
dbname=regression user=pg host=node1,
6651
dbname=regression user=pg host=node2,

tests2/docker-entrypoint.sh

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,9 @@ if [ "$1" = 'postgres' ]; then
6161
log_line_prefix = '%m: '
6262
# log_statement = all
6363
64-
multimaster.workers = 4
65-
multimaster.max_workers = 16
6664
multimaster.max_nodes = 3
67-
multimaster.volkswagen_mode = 1
68-
multimaster.queue_size=52857600
69-
multimaster.ignore_tables_without_pk = 1
65+
# multimaster.volkswagen_mode = 1
66+
# multimaster.ignore_tables_without_pk = 1
7067
multimaster.heartbeat_recv_timeout = 1100
7168
multimaster.heartbeat_send_timeout = 250
7269
multimaster.max_recovery_lag = 1000000000

tests2/lib/bank_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def exec_tx(self, tx_block, aggname_prefix, conn_i):
207207
if status != TRANSACTION_STATUS_IDLE:
208208
yield from cur.execute('rollback')
209209

210-
yield from tx_block(conn, cur, agg)
210+
yield from tx_block(conn, cur, agg, conn_i)
211211
agg.finish_tx('commit')
212212

213213
except psycopg2.Error as e:
@@ -231,7 +231,7 @@ def exec_tx(self, tx_block, aggname_prefix, conn_i):
231231
print("We've count to infinity!")
232232

233233
@asyncio.coroutine
234-
def transfer_tx(self, conn, cur, agg):
234+
def transfer_tx(self, conn, cur, agg, conn_i):
235235
amount = 1
236236
# to avoid deadlocks:
237237
from_uid = random.randint(1, self.n_accounts - 2)
@@ -250,14 +250,14 @@ def transfer_tx(self, conn, cur, agg):
250250
yield from cur.execute('commit')
251251

252252
@asyncio.coroutine
253-
def total_tx(self, conn, cur, agg):
254-
yield from cur.execute('select sum(amount) from bank_test')
253+
def total_tx(self, conn, cur, agg, conn_i):
254+
yield from cur.execute("select sum(amount), count(*), count(uid), current_setting('multimaster.node_id') from bank_test")
255255
total = yield from cur.fetchone()
256256
if total[0] != self.total:
257257
agg.isolation += 1
258258
self.total = total[0]
259259
print(self.oops)
260-
print('Isolation error, total = ', total[0])
260+
print(datetime.datetime.utcnow(), 'Isolation error, total = ', total, ', node ', conn_i+1)
261261
# yield from cur.execute('select * from mtm.get_nodes_state()')
262262
# nodes_state = yield from cur.fetchall()
263263
# for i, col in enumerate(self.nodes_state_fields):

tests2/test_recovery.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,27 @@ def test_node_crash(self):
169169
self.assertCommits(aggs)
170170
self.assertIsolation(aggs)
171171

172+
def test_node_bicrash(self):
173+
print('### test_node_bicrash ###')
174+
175+
aggs_failure, aggs = self.performFailure(CrashRecoverNode('node3'))
176+
177+
self.assertCommits(aggs_failure[:2])
178+
self.assertNoCommits(aggs_failure[2:])
179+
self.assertIsolation(aggs_failure)
180+
181+
self.assertCommits(aggs)
182+
self.assertIsolation(aggs)
183+
184+
aggs_failure, aggs = self.performFailure(CrashRecoverNode('node3'))
185+
186+
self.assertCommits(aggs_failure[:2])
187+
self.assertNoCommits(aggs_failure[2:])
188+
self.assertIsolation(aggs_failure)
189+
190+
self.assertCommits(aggs)
191+
self.assertIsolation(aggs)
192+
172193
if __name__ == '__main__':
173194
unittest.main()
174195

tests2/test_referee.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,19 @@ def setUp(self):
6161
def tearDown(self):
6262
print('Finish test at ',datetime.datetime.utcnow())
6363

64+
def test_node_crash(self):
65+
print('### test_node_crash ###')
66+
67+
aggs_failure, aggs = self.performFailure(CrashRecoverNode('node2'))
68+
69+
self.assertCommits(aggs_failure[:1])
70+
self.assertNoCommits(aggs_failure[1:])
71+
self.assertIsolation(aggs_failure)
72+
73+
self.assertCommits(aggs)
74+
self.assertIsolation(aggs)
75+
76+
6477
def test_partition_referee(self):
6578
print('### test_partition_referee ###')
6679

0 commit comments

Comments
 (0)