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

Commit 8819813

Browse files
committed
nested aggregates
1 parent 4adecc8 commit 8819813

File tree

3 files changed

+37
-41
lines changed

3 files changed

+37
-41
lines changed

contrib/mmts/tests2/lib/bank_client.py

+19-25
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,24 @@ def status(self):
111111
while self.running:
112112
msg = yield from self.child_pipe.coro_recv()
113113
if msg == 'status':
114-
# print('evloop: got status request')
115114
serialized_aggs = {}
116-
for name, aggregate in self.aggregates.items():
117-
serialized_aggs[name] = aggregate.as_dict()
118-
aggregate.clear_values()
115+
116+
for conn_id, conn_aggs in self.aggregates.items():
117+
serialized_aggs[conn_id] = {}
118+
for aggname, agg in conn_aggs.items():
119+
serialized_aggs[conn_id][aggname] = agg.as_dict()
120+
agg.clear_values()
121+
119122
self.child_pipe.send(serialized_aggs)
120-
# print('evloop: sent status response')
121123
else:
122124
print('evloop: unknown message')
123125

124126
@asyncio.coroutine
125127
def exec_tx(self, tx_block, aggname_prefix, conn_i):
126128
aggname = "%s_%i" % (aggname_prefix, conn_i)
127-
agg = self.aggregates[aggname] = MtmTxAggregate(aggname)
129+
if conn_i not in self.aggregates:
130+
self.aggregates[conn_i] = {}
131+
agg = self.aggregates[conn_i][aggname_prefix] = MtmTxAggregate(aggname)
128132
pool = yield from aiopg.create_pool(self.dsns[conn_i])
129133
conn = yield from pool.acquire()
130134
cur = yield from conn.cursor()
@@ -167,8 +171,8 @@ def total_tx(self, conn, cur, agg):
167171
total = yield from cur.fetchone()
168172
if total[0] != 0:
169173
agg.isolation += 1
170-
# print(self.oops)
171-
# print('Isolation error, total = ', total[0])
174+
print(self.oops)
175+
print('Isolation error, total = ', total[0])
172176
# yield from cur.execute('select * from mtm.get_nodes_state()')
173177
# nodes_state = yield from cur.fetchall()
174178
# for i, col in enumerate(self.nodes_state_fields):
@@ -177,7 +181,6 @@ def total_tx(self, conn, cur, agg):
177181
# print("%19s" % nodes_state[j][i], end="\t")
178182
# print("\n")
179183

180-
181184
def run(self):
182185
# asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
183186
self.loop = asyncio.get_event_loop()
@@ -196,13 +199,9 @@ def bgrun(self):
196199
self.evloop_process = multiprocessing.Process(target=self.run, args=())
197200
self.evloop_process.start()
198201

199-
# XXX: introduce periodic report from client?
200202
def get_aggregates(self, print=True):
201-
# print('test: sending status request')
202203
self.parent_pipe.send('status')
203-
# print('test: awaitng status response')
204204
resp = self.parent_pipe.recv()
205-
# print('test: got status response')
206205
if print:
207206
MtmClient.print_aggregates(resp)
208207
return resp
@@ -216,7 +215,7 @@ def stop(self):
216215
self.evloop_process.terminate()
217216

218217
@classmethod
219-
def print_aggregates(cls, serialized_agg):
218+
def print_aggregates(cls, aggs):
220219
columns = ['running_latency', 'max_latency', 'isolation', 'finish']
221220

222221
# print table header
@@ -225,23 +224,18 @@ def print_aggregates(cls, serialized_agg):
225224
print(col, end="\t")
226225
print("\n", end="")
227226

228-
serialized_agg
229-
230-
for aggname in sorted(serialized_agg.keys()):
231-
agg = serialized_agg[aggname]
232-
print("%s\t" % aggname, end="")
233-
for col in columns:
234-
if col in agg:
227+
for conn_id in aggs.keys():
228+
for aggname in aggs[conn_id].keys():
229+
agg = aggs[conn_id][aggname]
230+
print("Node %d: %s\t" % (conn_id + 1, aggname), end="")
231+
for col in columns:
235232
if isinstance(agg[col], float):
236233
print("%.2f\t" % (agg[col],), end="\t")
237234
else:
238235
print(agg[col], end="\t")
239-
else:
240-
print("-\t", end="")
241-
print("")
236+
print("")
242237
print("")
243238

244-
245239
if __name__ == "__main__":
246240
c = MtmClient(['dbname=postgres user=postgres host=127.0.0.1',
247241
'dbname=postgres user=postgres host=127.0.0.1 port=5433',

contrib/mmts/tests2/lib/failure_injector.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
class FailureInjector(object):
44

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

88
def container_exec(self, node, command):
9+
self.docker_api = docker.Client()
910
exec_id = self.docker_api.exec_create(node, command, user='root')
1011
output = self.docker_api.exec_start(exec_id)
12+
self.docker_api.close()
1113
# print(command, ' -> ', output)
1214

1315

@@ -39,7 +41,7 @@ def start(self):
3941
self.container_exec(self.nodeA, "iptables -A OUTPUT -s {} -j DROP".format(self.nodeB) )
4042

4143
def stop(self):
42-
self.container_exec(self.nodeA, "iptables -D INPUT -s {} -j DROP".format(self.nodeB))
44+
self.container_exec(self.nodeA, "iptables -D INPUT -s {} -j DROP".format(self.nodeB))
4345
self.container_exec(self.nodeA, "iptables -D OUTPUT -s {} -j DROP".format(self.nodeB))
4446

4547

contrib/mmts/tests2/test_recovery.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,19 @@ def test_node_partition(self):
7171
time.sleep(TEST_RECOVERY_TIME)
7272
aggs = self.client.get_aggregates()
7373

74-
self.assertTrue( 'commit' in aggs_failure['transfer_0']['finish'] )
75-
self.assertTrue( 'commit' in aggs_failure['transfer_1']['finish'] )
76-
self.assertTrue( 'commit' not in aggs_failure['transfer_2']['finish'] )
77-
self.assertTrue( aggs_failure['sumtotal_0']['isolation'] == 0)
78-
self.assertTrue( aggs_failure['sumtotal_1']['isolation'] == 0)
79-
self.assertTrue( aggs_failure['sumtotal_2']['isolation'] == 0)
80-
81-
self.assertTrue( 'commit' in aggs['transfer_0']['finish'] )
82-
self.assertTrue( 'commit' in aggs['transfer_1']['finish'] )
83-
self.assertTrue( 'commit' in aggs['transfer_2']['finish'] )
84-
self.assertTrue( aggs['sumtotal_0']['isolation'] == 0)
85-
self.assertTrue( aggs['sumtotal_1']['isolation'] == 0)
86-
self.assertTrue( aggs['sumtotal_2']['isolation'] == 0)
74+
self.assertTrue( 'commit' in aggs_failure[0]['transfer']['finish'] )
75+
self.assertTrue( 'commit' in aggs_failure[1]['transfer']['finish'] )
76+
self.assertTrue( 'commit' not in aggs_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' in aggs[0]['transfer']['finish'] )
82+
self.assertTrue( 'commit' in aggs[1]['transfer']['finish'] )
83+
self.assertTrue( 'commit' in aggs[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)
8787

8888

8989
def test_edge_partition(self):

0 commit comments

Comments
 (0)