@@ -35,71 +35,116 @@ def tearDownClass(self):
35
35
print ('tearDown' )
36
36
self .client .stop ()
37
37
# XXX: check nodes data identity here
38
-
39
38
# subprocess.check_call(['docker-compose','down'])
40
39
41
40
def test_normal_operations (self ):
42
41
print ('### normal_operations ###' )
43
42
44
- # nofailure here
45
- # clean aggregates
46
- self .client .get_status ()
47
-
43
+ self .client .clean_aggregates ()
48
44
time .sleep (TEST_DURATION )
49
- aggs = self .client .get_status ()
50
-
51
- for agg in aggs :
52
- self .assertTrue ( aggs [agg ]['finish' ]['commit' ] > 0 )
53
-
54
- # nofailure ends here
55
- self .client .get_status ()
45
+ aggs_failure = self .client .get_aggregates ()
56
46
47
+ self .client .clean_aggregates ()
57
48
time .sleep (TEST_RECOVERY_TIME )
58
- aggs = self .client .get_status ()
49
+ aggs = self .client .get_aggregates ()
50
+
51
+ for agg in aggs_failure :
52
+ self .assertTrue ( 'commit' in aggs_failure [agg ]['finish' ] )
59
53
60
54
for agg in aggs :
61
- self .assertTrue ( aggs [agg ]['finish' ][ 'commit' ] > 0 )
55
+ self .assertTrue ( 'commit' in aggs [agg ]['finish' ] )
62
56
63
57
64
58
def test_node_partition (self ):
65
59
print ('### nodePartitionTest ###' )
66
60
67
61
failure = SingleNodePartition ('node3' )
68
-
69
- # split one node
70
62
failure .start ()
71
- # clean aggregates
72
- self .client .get_status (print = False )
73
63
64
+ self .client .clean_aggregates ()
74
65
time .sleep (TEST_DURATION )
75
- aggs = self .client .get_status ()
66
+ aggs_failure = self .client .get_aggregates ()
67
+
68
+ failure .stop ()
76
69
77
- self .assertTrue ( aggs ['transfer_0' ]['finish' ]['commit' ] > 0 )
78
- self .assertTrue ( aggs ['transfer_1' ]['finish' ]['commit' ] > 0 )
79
- self .assertTrue ( 'commit' not in aggs ['transfer_2' ]['finish' ] )
70
+ self .client .clean_aggregates ()
71
+ time .sleep (TEST_RECOVERY_TIME )
72
+ aggs = self .client .get_aggregates ()
73
+
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' ] )
80
84
self .assertTrue ( aggs ['sumtotal_0' ]['isolation' ] == 0 )
81
85
self .assertTrue ( aggs ['sumtotal_1' ]['isolation' ] == 0 )
82
86
self .assertTrue ( aggs ['sumtotal_2' ]['isolation' ] == 0 )
83
87
84
- # join splitted node
88
+
89
+ def test_node_partition (self ):
90
+ print ('### nodePartitionTest ###' )
91
+
92
+ failure = SingleNodePartition ('node3' )
93
+ failure .start ()
94
+
95
+ self .client .clean_aggregates ()
96
+ time .sleep (TEST_DURATION )
97
+ aggs_failure = self .client .get_aggregates ()
98
+
85
99
failure .stop ()
86
- # clear tx history
87
- self .client .get_status (print = False )
88
100
101
+ self .client .clean_aggregates ()
89
102
time .sleep (TEST_RECOVERY_TIME )
90
- aggs = self .client .get_status ()
91
-
92
- self .assertTrue ( aggs ['transfer_0' ]['finish' ]['commit' ] > 0 )
93
- self .assertTrue ( aggs ['transfer_1' ]['finish' ]['commit' ] > 0 )
94
- self .assertTrue ( aggs ['transfer_2' ]['finish' ]['commit' ] > 0 )
103
+ aggs = self .client .get_aggregates ()
104
+
105
+ self .assertTrue ( 'commit' in aggs_failure ['transfer_0' ]['finish' ] )
106
+ self .assertTrue ( 'commit' in aggs_failure ['transfer_1' ]['finish' ] )
107
+ self .assertTrue ( 'commit' not in aggs_failure ['transfer_2' ]['finish' ] )
108
+ self .assertTrue ( aggs_failure ['sumtotal_0' ]['isolation' ] == 0 )
109
+ self .assertTrue ( aggs_failure ['sumtotal_1' ]['isolation' ] == 0 )
110
+ self .assertTrue ( aggs_failure ['sumtotal_2' ]['isolation' ] == 0 )
111
+
112
+ self .assertTrue ( 'commit' in aggs ['transfer_0' ]['finish' ] )
113
+ self .assertTrue ( 'commit' in aggs ['transfer_1' ]['finish' ] )
114
+ self .assertTrue ( 'commit' in aggs ['transfer_2' ]['finish' ] )
95
115
self .assertTrue ( aggs ['sumtotal_0' ]['isolation' ] == 0 )
96
116
self .assertTrue ( aggs ['sumtotal_1' ]['isolation' ] == 0 )
97
117
self .assertTrue ( aggs ['sumtotal_2' ]['isolation' ] == 0 )
98
118
99
- # def test_edge_partition(self):
100
119
120
+ def test_edge_partition (self ):
121
+ print ('### edgePartitionTest ###' )
101
122
123
+ failure = EdgePartition ('node2' , 'node3' )
124
+ failure .start ()
125
+
126
+ self .client .clean_aggregates ()
127
+ time .sleep (TEST_DURATION )
128
+ aggs_failure = self .client .get_aggregates ()
102
129
130
+ failure .stop ()
131
+
132
+ self .client .clean_aggregates ()
133
+ time .sleep (TEST_RECOVERY_TIME )
134
+ aggs = self .client .get_aggregates ()
135
+
136
+ self .assertTrue ( ('commit' in aggs_failure ['transfer_0' ]['finish' ]) or ('commit' in aggs_failure ['transfer_1' ]['finish' ]) )
137
+ self .assertTrue ( 'commit' not in aggs_failure ['transfer_2' ]['finish' ] )
138
+ self .assertTrue ( aggs_failure ['sumtotal_0' ]['isolation' ] == 0 )
139
+ self .assertTrue ( aggs_failure ['sumtotal_1' ]['isolation' ] == 0 )
140
+ self .assertTrue ( aggs_failure ['sumtotal_2' ]['isolation' ] == 0 )
141
+
142
+ self .assertTrue ( 'commit' in aggs ['transfer_0' ]['finish' ] )
143
+ self .assertTrue ( 'commit' in aggs ['transfer_1' ]['finish' ] )
144
+ self .assertTrue ( 'commit' in aggs ['transfer_2' ]['finish' ] )
145
+ self .assertTrue ( aggs ['sumtotal_0' ]['isolation' ] == 0 )
146
+ self .assertTrue ( aggs ['sumtotal_1' ]['isolation' ] == 0 )
147
+ self .assertTrue ( aggs ['sumtotal_2' ]['isolation' ] == 0 )
103
148
104
149
subprocess .check_call (['blockade' ,'join' ])
105
150
print ("Node3 joined back" )
0 commit comments