14
14
import ydb .tests .library .common .yatest_common as yatest_common
15
15
from ydb .tests .tools .fq_runner .kikimr_runner import StreamingOverKikimr
16
16
from ydb .tests .tools .fq_runner .kikimr_runner import StreamingOverKikimrConfig
17
+ from ydb .tests .tools .fq_runner .kikimr_runner import TenantConfig
17
18
from ydb .tests .tools .fq_runner .kikimr_utils import yq_v1
18
19
from ydb .tests .tools .datastreams_helpers .test_yds_base import TestYdsBase
19
20
from ydb .tests .tools .datastreams_helpers .control_plane import create_stream
@@ -33,7 +34,7 @@ def run_with_sleep(args):
33
34
34
35
@pytest .fixture
35
36
def kikimr ():
36
- kikimr_conf = StreamingOverKikimrConfig (node_count = 8 , cloud_mode = True )
37
+ kikimr_conf = StreamingOverKikimrConfig (node_count = { "/cp" : TenantConfig ( 1 ), "/compute" : TenantConfig ( 2 )} , cloud_mode = True )
37
38
kikimr = StreamingOverKikimr (kikimr_conf )
38
39
kikimr .start_mvp_mock_server ()
39
40
kikimr .start ()
@@ -50,8 +51,8 @@ def setup_class(cls):
50
51
51
52
@retry .retry_intrusive
52
53
def get_graph_master_node_id (self , query_id ):
53
- for node_index in self .kikimr .control_plane .kikimr_cluster .nodes :
54
- if self .kikimr .control_plane .get_task_count (node_index , query_id ) > 0 :
54
+ for node_index in self .kikimr .compute_plane .kikimr_cluster .nodes :
55
+ if self .kikimr .compute_plane .get_task_count (node_index , query_id ) > 0 :
55
56
return node_index
56
57
assert False , "No active graphs found"
57
58
@@ -61,9 +62,9 @@ def dump_workers(self, worker_count, ca_count, wait_time=yatest_common.plain_or_
61
62
wcs = 0
62
63
ccs = 0
63
64
list = []
64
- for node_index in self .kikimr .control_plane .kikimr_cluster .nodes :
65
- wc = self .kikimr .control_plane .get_worker_count (node_index )
66
- cc = self .kikimr .control_plane .get_ca_count (node_index )
65
+ for node_index in self .kikimr .compute_plane .kikimr_cluster .nodes :
66
+ wc = self .kikimr .compute_plane .get_worker_count (node_index )
67
+ cc = self .kikimr .compute_plane .get_ca_count (node_index )
67
68
wcs += wc
68
69
ccs += cc
69
70
list .append ([node_index , wc , cc ])
@@ -81,8 +82,8 @@ def dump_workers(self, worker_count, ca_count, wait_time=yatest_common.plain_or_
81
82
82
83
@yq_v1
83
84
def test_delete (self , client , kikimr ):
84
- for node_index in kikimr .control_plane .kikimr_cluster . nodes :
85
- kikimr .control_plane .wait_bootstrap (node_index )
85
+ kikimr .control_plane .wait_bootstrap ()
86
+ kikimr .compute_plane .wait_bootstrap ()
86
87
87
88
self .kikimr = kikimr
88
89
self .init_topics ("recovery" , partitions_count = 2 )
@@ -117,10 +118,9 @@ def test_program_state_recovery(self, client, kikimr):
117
118
# [ Bucket2 ) |(emited)
118
119
# .<------------------------------------- restart
119
120
# [ Bucket3 ) |(emited)
120
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
121
- kikimr .control_plane .wait_bootstrap (node_index )
122
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
123
- kikimr .control_plane .wait_discovery (node_index )
121
+ kikimr .control_plane .wait_bootstrap ()
122
+ kikimr .compute_plane .wait_bootstrap ()
123
+ kikimr .compute_plane .wait_discovery ()
124
124
125
125
self .kikimr = kikimr
126
126
self .init_topics ("program_state_recovery" , partitions_count = 1 )
@@ -162,18 +162,18 @@ def test_program_state_recovery(self, client, kikimr):
162
162
163
163
# restart node with CA
164
164
node_to_restart = None
165
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
166
- wc = kikimr .control_plane .get_worker_count (node_index )
165
+ for node_index in kikimr .compute_plane .kikimr_cluster .nodes :
166
+ wc = kikimr .compute_plane .get_worker_count (node_index )
167
167
if wc is not None :
168
168
if wc > 0 and node_index != master_node_index and node_to_restart is None :
169
169
node_to_restart = node_index
170
170
assert node_to_restart is not None , "Can't find any task on non master node"
171
171
172
172
logging .debug ("Restart non-master node {}" .format (node_to_restart ))
173
173
174
- kikimr .control_plane .kikimr_cluster .nodes [node_to_restart ].stop ()
175
- kikimr .control_plane .kikimr_cluster .nodes [node_to_restart ].start ()
176
- kikimr .control_plane .wait_bootstrap (node_to_restart )
174
+ kikimr .compute_plane .kikimr_cluster .nodes [node_to_restart ].stop ()
175
+ kikimr .compute_plane .kikimr_cluster .nodes [node_to_restart ].start ()
176
+ kikimr .compute_plane .wait_bootstrap (node_to_restart )
177
177
178
178
self .write_stream ([f'{{"time" = { i } ;}}' for i in range (116 , 144 , 2 )])
179
179
@@ -198,10 +198,9 @@ def test_program_state_recovery(self, client, kikimr):
198
198
# ids=["not_master", "master"]
199
199
# )
200
200
def test_recovery (self , client , kikimr ):
201
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
202
- kikimr .control_plane .wait_bootstrap (node_index )
203
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
204
- kikimr .control_plane .wait_discovery (node_index )
201
+ kikimr .control_plane .wait_bootstrap ()
202
+ kikimr .compute_plane .wait_bootstrap ()
203
+ kikimr .compute_plane .wait_discovery ()
205
204
206
205
self .init_topics ("recovery" , partitions_count = 2 )
207
206
@@ -242,18 +241,18 @@ def test_recovery(self, client, kikimr):
242
241
self .dump_workers (2 , 4 )
243
242
244
243
node_to_restart = None
245
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
246
- wc = kikimr .control_plane .get_worker_count (node_index )
244
+ for node_index in kikimr .compute_plane .kikimr_cluster .nodes :
245
+ wc = kikimr .compute_plane .get_worker_count (node_index )
247
246
if wc is not None :
248
247
if wc > 0 and node_index != master_node_index and node_to_restart is None :
249
248
node_to_restart = node_index
250
249
assert node_to_restart is not None , "Can't find any task on non master node"
251
250
252
251
logging .debug ("Restart non-master node {}" .format (node_to_restart ))
253
252
254
- kikimr .control_plane .kikimr_cluster .nodes [node_to_restart ].stop ()
255
- kikimr .control_plane .kikimr_cluster .nodes [node_to_restart ].start ()
256
- kikimr .control_plane .wait_bootstrap (node_to_restart )
253
+ kikimr .compute_plane .kikimr_cluster .nodes [node_to_restart ].stop ()
254
+ kikimr .compute_plane .kikimr_cluster .nodes [node_to_restart ].start ()
255
+ kikimr .compute_plane .wait_bootstrap (node_to_restart )
257
256
258
257
self .dump_workers (2 , 4 )
259
258
@@ -273,9 +272,9 @@ def test_recovery(self, client, kikimr):
273
272
274
273
logging .debug ("Restart Master node {}" .format (master_node_index ))
275
274
276
- kikimr .control_plane .kikimr_cluster .nodes [master_node_index ].stop ()
277
- kikimr .control_plane .kikimr_cluster .nodes [master_node_index ].start ()
278
- kikimr .control_plane .wait_bootstrap (master_node_index )
275
+ kikimr .compute_plane .kikimr_cluster .nodes [master_node_index ].stop ()
276
+ kikimr .compute_plane .kikimr_cluster .nodes [master_node_index ].start ()
277
+ kikimr .compute_plane .wait_bootstrap (master_node_index )
279
278
master_node_index = self .get_graph_master_node_id (query_id )
280
279
281
280
logging .debug ("New master node {}" .format (master_node_index ))
@@ -295,10 +294,10 @@ def test_recovery(self, client, kikimr):
295
294
d [n ] = 1
296
295
assert len (d ) == 30
297
296
298
- zero_checkpoints_metric = kikimr .control_plane .get_checkpoint_coordinator_metric (
297
+ zero_checkpoints_metric = kikimr .compute_plane .get_checkpoint_coordinator_metric (
299
298
query_id , "StartedFromEmptyCheckpoint"
300
299
)
301
- restored_metric = kikimr .control_plane .get_checkpoint_coordinator_metric (
300
+ restored_metric = kikimr .compute_plane .get_checkpoint_coordinator_metric (
302
301
query_id , "RestoredFromSavedCheckpoint"
303
302
)
304
303
assert restored_metric >= 1 , "RestoredFromSavedCheckpoint: {}, StartedFromEmptyCheckpoint: {}" .format (
@@ -420,10 +419,9 @@ def test_ic_disconnection(self, client):
420
419
421
420
@yq_v1
422
421
def test_program_state_recovery_error_if_no_states (self , client , kikimr ):
423
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
424
- kikimr .control_plane .wait_bootstrap (node_index )
425
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
426
- kikimr .control_plane .wait_discovery (node_index )
422
+ kikimr .control_plane .wait_bootstrap ()
423
+ kikimr .compute_plane .wait_bootstrap ()
424
+ kikimr .compute_plane .wait_discovery ()
427
425
self .init_topics ("error_if_no_states" , partitions_count = 1 )
428
426
429
427
sql = R'''
@@ -443,17 +441,16 @@ def test_program_state_recovery_error_if_no_states(self, client, kikimr):
443
441
query_id , kikimr .compute_plane .get_completed_checkpoints (query_id ) + 1
444
442
)
445
443
446
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
447
- kikimr .control_plane .kikimr_cluster .nodes [node_index ].stop ()
444
+ for node_index in kikimr .compute_plane .kikimr_cluster .nodes :
445
+ kikimr .compute_plane .kikimr_cluster .nodes [node_index ].stop ()
448
446
449
447
session = kikimr .driver .table_client .session ().create ()
450
448
checkpoint_table_prefix = "/local/CheckpointCoordinatorStorage_" + kikimr .uuid + '/states'
451
449
session .transaction ().execute (f"DELETE FROM `{ checkpoint_table_prefix } `" , commit_tx = True )
452
450
453
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
454
- kikimr .control_plane .kikimr_cluster .nodes [node_index ].start ()
455
- for node_index in kikimr .control_plane .kikimr_cluster .nodes :
456
- kikimr .control_plane .wait_bootstrap (node_index )
451
+ for node_index in kikimr .compute_plane .kikimr_cluster .nodes :
452
+ kikimr .compute_plane .kikimr_cluster .nodes [node_index ].start ()
453
+ kikimr .compute_plane .wait_bootstrap ()
457
454
458
455
client .wait_query_status (query_id , fq .QueryMeta .FAILED )
459
456
describe_result = client .describe_query (query_id ).result
0 commit comments