1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # Tests for fixing migrating slot at all stages:
- # 1. when migration is half inited on "migrating" node
- # 2. when migration is half inited on "importing" node
- # 3. migration inited, but not finished
- # 4. migration is half finished on "migrating" node
- # 5. migration is half finished on "importing" node
- # TODO: Test is currently disabled until it is stabilized (fixing the test
- # itself or real issues in Redis).
- if {false} {
- source "../tests/includes/init-tests.tcl"
- source "../tests/includes/utils.tcl"
- test "Create a 2 nodes cluster" {
- create_cluster 2 0
- config_set_all_nodes cluster-allow-replica-migration no
- }
- test "Cluster is up" {
- assert_cluster_state ok
- }
- set cluster [redis_cluster 127.0.0.1:[get_instance_attrib redis 0 port]]
- catch {unset nodefrom}
- catch {unset nodeto}
- proc reset_cluster {} {
- uplevel 1 {
- $cluster refresh_nodes_map
- array set nodefrom [$cluster masternode_for_slot 609]
- array set nodeto [$cluster masternode_notfor_slot 609]
- }
- }
- reset_cluster
- $cluster set aga xyz
- test "Half init migration in 'migrating' is fixable" {
- assert_equal {OK} [$nodefrom(link) cluster setslot 609 migrating $nodeto(id)]
- fix_cluster $nodefrom(addr)
- assert_equal "xyz" [$cluster get aga]
- }
- test "Half init migration in 'importing' is fixable" {
- assert_equal {OK} [$nodeto(link) cluster setslot 609 importing $nodefrom(id)]
- fix_cluster $nodefrom(addr)
- assert_equal "xyz" [$cluster get aga]
- }
- test "Init migration and move key" {
- assert_equal {OK} [$nodefrom(link) cluster setslot 609 migrating $nodeto(id)]
- assert_equal {OK} [$nodeto(link) cluster setslot 609 importing $nodefrom(id)]
- assert_equal {OK} [$nodefrom(link) migrate $nodeto(host) $nodeto(port) aga 0 10000]
- wait_for_cluster_propagation
- assert_equal "xyz" [$cluster get aga]
- fix_cluster $nodefrom(addr)
- assert_equal "xyz" [$cluster get aga]
- }
- reset_cluster
- test "Move key again" {
- wait_for_cluster_propagation
- assert_equal {OK} [$nodefrom(link) cluster setslot 609 migrating $nodeto(id)]
- assert_equal {OK} [$nodeto(link) cluster setslot 609 importing $nodefrom(id)]
- assert_equal {OK} [$nodefrom(link) migrate $nodeto(host) $nodeto(port) aga 0 10000]
- wait_for_cluster_propagation
- assert_equal "xyz" [$cluster get aga]
- }
- test "Half-finish migration" {
- # half finish migration on 'migrating' node
- assert_equal {OK} [$nodefrom(link) cluster setslot 609 node $nodeto(id)]
- fix_cluster $nodefrom(addr)
- assert_equal "xyz" [$cluster get aga]
- }
- reset_cluster
- test "Move key back" {
- # 'aga' key is in 609 slot
- assert_equal {OK} [$nodefrom(link) cluster setslot 609 migrating $nodeto(id)]
- assert_equal {OK} [$nodeto(link) cluster setslot 609 importing $nodefrom(id)]
- assert_equal {OK} [$nodefrom(link) migrate $nodeto(host) $nodeto(port) aga 0 10000]
- assert_equal "xyz" [$cluster get aga]
- }
- test "Half-finish importing" {
- # Now we half finish 'importing' node
- assert_equal {OK} [$nodeto(link) cluster setslot 609 node $nodeto(id)]
- fix_cluster $nodefrom(addr)
- assert_equal "xyz" [$cluster get aga]
- }
- config_set_all_nodes cluster-allow-replica-migration yes
- }
|