@@ -1226,6 +1226,40 @@ def run_repair():
1226
1226
else :
1227
1227
node1 .nodetool ('repair keyspace1 standard1 -inc -par' )
1228
1228
1229
+ @since ('3.0' )
1230
+ def test_repair_one_node_cluster (self ):
1231
+ options = []
1232
+ fix_STAR582 = self .cluster .version () >= "4.0"
1233
+ if not fix_STAR582 :
1234
+ options = ['--ignore-unreplicated-keyspaces' ] + options
1235
+ self ._repair_abort_test (options = options , nodes = 1 , rf = 2 )
1236
+
1237
+ @since ('3.0' )
1238
+ def test_repair_one_node_in_local_dc (self ):
1239
+ self ._repair_abort_test (options = ['--ignore-unreplicated-keyspaces' , '--in-local-dc' ], nodes = [1 , 1 ], rf = {'dc1' : 1 , 'dc2' : 1 }, no_common_range = True )
1240
+
1241
+ def _repair_abort_test (self , options = [], nodes = 1 , rf = 1 , no_common_range = False ):
1242
+ cluster = self .cluster
1243
+ logger .debug ("Starting cluster.." )
1244
+ cluster .populate (nodes ).start (wait_for_binary_proto = True )
1245
+
1246
+ node1 = self .cluster .nodelist ()[0 ]
1247
+ session = self .patient_cql_connection (node1 )
1248
+ create_ks (session , 'ks' , rf = rf )
1249
+
1250
+ support_preview = self .cluster .version () >= "4.0"
1251
+ if support_preview :
1252
+ logger .debug ("Preview repair" )
1253
+ out = node1 .repair (["--preview" ] + options )
1254
+ if no_common_range :
1255
+ assert "Nothing to repair for " in str (out ), "Expect 'Nothing to repair for '"
1256
+
1257
+ logger .debug ("Full repair" )
1258
+ node1 .repair (["--full" ] + options )
1259
+
1260
+ logger .debug ("Incremental repair" )
1261
+ node1 .repair (options )
1262
+
1229
1263
@since ('2.2' )
1230
1264
def test_dead_sync_initiator (self ):
1231
1265
"""
0 commit comments