|
21 | 21 | -- Replica connection handler.
|
22 | 22 | local conn = {}
|
23 | 23 |
|
24 |
| -test:plan(7) |
| 24 | +test:plan(8) |
25 | 25 |
|
26 | 26 | test:test('Check master-replica setup', function(test)
|
27 | 27 | test:plan(8)
|
@@ -337,6 +337,57 @@ test:test('Check in_replicaset switching', function(test)
|
337 | 337 | 'taken tasks count after release_all')
|
338 | 338 | end)
|
339 | 339 |
|
| 340 | +-- gh-202 |
| 341 | +test:test('Check that tubes indexes is actual after role change', function(test) |
| 342 | + local engine = os.getenv('ENGINE') or 'memtx' |
| 343 | + test:plan(10) |
| 344 | + box.cfg{read_only = true} |
| 345 | + queue_state.poll(queue_state.states.WAITING, 10) |
| 346 | + test:is(queue.state(), 'WAITING', 'master state is waiting') |
| 347 | + conn:eval('box.cfg{read_only=false}') |
| 348 | + conn:eval([[ |
| 349 | + queue_state = require('queue.abstract.queue_state') |
| 350 | + queue_state.poll(queue_state.states.RUNNING, 10) |
| 351 | + ]]) |
| 352 | + test:is(conn:call('queue.state'), 'RUNNING', 'replica state is running') |
| 353 | + conn:eval([[queue.create_tube('repl_tube', 'fifo', {engine =]] .. engine .. [[})]]) |
| 354 | + |
| 355 | + -- Switch roles back. |
| 356 | + conn:eval('box.cfg{read_only=true}') |
| 357 | + conn:eval([[ |
| 358 | + queue_state = require('queue.abstract.queue_state') |
| 359 | + queue_state.poll(queue_state.states.WAITING, 10) |
| 360 | + ]]) |
| 361 | + box.cfg{read_only = false} |
| 362 | + queue_state.poll(queue_state.states.RUNNING, 10) |
| 363 | + test:is(queue.state(), 'RUNNING', 'master state is running') |
| 364 | + test:is(conn:call('queue.state'), 'WAITING', 'replica state is waiting') |
| 365 | + test:ok(queue.tube.repl_tube, 'repl_tube is accessible') |
| 366 | + |
| 367 | + box.cfg{read_only = true} |
| 368 | + queue_state.poll(queue_state.states.WAITING, 10) |
| 369 | + test:is(queue.state(), 'WAITING', 'master state is waiting') |
| 370 | + conn:eval('box.cfg{read_only=false}') |
| 371 | + conn:eval([[ |
| 372 | + queue_state = require('queue.abstract.queue_state') |
| 373 | + queue_state.poll(queue_state.states.RUNNING, 10) |
| 374 | + ]]) |
| 375 | + test:is(conn:call('queue.state'), 'RUNNING', 'replica state is running') |
| 376 | + conn:eval('queue.tube.repl_tube:drop()') |
| 377 | + |
| 378 | + -- Switch roles back. |
| 379 | + conn:eval('box.cfg{read_only=true}') |
| 380 | + conn:eval([[ |
| 381 | + queue_state = require('queue.abstract.queue_state') |
| 382 | + queue_state.poll(queue_state.states.WAITING, 10) |
| 383 | + ]]) |
| 384 | + box.cfg{read_only = false} |
| 385 | + queue_state.poll(queue_state.states.RUNNING, 10) |
| 386 | + test:is(queue.state(), 'RUNNING', 'master state is running') |
| 387 | + test:is(conn:call('queue.state'), 'WAITING', 'replica state is waiting') |
| 388 | + test:isnil(queue.tube.repl_tube, "repl_tube is not indexed") |
| 389 | +end) |
| 390 | + |
340 | 391 | rawset(_G, 'queue', nil)
|
341 | 392 | conn:eval('rawset(_G, "queue", nil)')
|
342 | 393 | conn:close()
|
|
0 commit comments