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)
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