This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/incubator-kvrocks.git


The following commit(s) were added to refs/heads/unstable by this push:
     new 1333da7c test: migrate part of slotmigrate tests (#1004)
1333da7c is described below

commit 1333da7cf45bffbaa1975bfe38c0dba3fb4e8adc
Author: tison <[email protected]>
AuthorDate: Mon Oct 17 17:49:09 2022 +0800

    test: migrate part of slotmigrate tests (#1004)
    
    Signed-off-by: tison <[email protected]>
    Co-authored-by: hulk <[email protected]>
---
 .../integration/slotmigrate/slotmigrate_test.go    | 108 +++++++++++++++++++++
 tests/tcl/tests/integration/slotmigrate.tcl        |  80 ---------------
 2 files changed, 108 insertions(+), 80 deletions(-)

diff --git a/tests/gocase/integration/slotmigrate/slotmigrate_test.go 
b/tests/gocase/integration/slotmigrate/slotmigrate_test.go
new file mode 100644
index 00000000..67309d5e
--- /dev/null
+++ b/tests/gocase/integration/slotmigrate/slotmigrate_test.go
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package slotmigrate
+
+import (
+       "context"
+       "fmt"
+       "testing"
+       "time"
+
+       "github.com/apache/incubator-kvrocks/tests/gocase/util"
+       "github.com/stretchr/testify/require"
+)
+
+func TestSlotMigrateFromSlave(t *testing.T) {
+       ctx := context.Background()
+
+       master := util.StartServer(t, map[string]string{"cluster-enabled": 
"yes"})
+       defer func() { master.Close() }()
+       masterClient := master.NewClient()
+       defer func() { require.NoError(t, masterClient.Close()) }()
+       masterID := "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00"
+       require.NoError(t, masterClient.Do(ctx, "clusterx", "SETNODEID", 
masterID).Err())
+
+       slave := util.StartServer(t, map[string]string{"cluster-enabled": 
"yes"})
+       defer func() { slave.Close() }()
+       slaveClient := slave.NewClient()
+       defer func() { require.NoError(t, slaveClient.Close()) }()
+       slaveID := "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01"
+       require.NoError(t, slaveClient.Do(ctx, "clusterx", "SETNODEID", 
slaveID).Err())
+
+       clusterNodes := fmt.Sprintf("%s %s %d master - 0-100\n", masterID, 
master.Host(), master.Port())
+       clusterNodes += fmt.Sprintf("%s %s %d slave %s", slaveID, slave.Host(), 
slave.Port(), masterID)
+       require.NoError(t, masterClient.Do(ctx, "clusterx", "SETNODES", 
clusterNodes, "1").Err())
+       require.NoError(t, slaveClient.Do(ctx, "clusterx", "SETNODES", 
clusterNodes, "1").Err())
+
+       t.Run("MIGRATE - Slave cannot migrate slot", func(t *testing.T) {
+               require.ErrorContains(t, slaveClient.Do(ctx, "clusterx", 
"migrate", "1", masterID).Err(), "Can't migrate slot")
+       })
+
+       t.Run("MIGRATE - Cannot migrate slot to a slave", func(t *testing.T) {
+               require.ErrorContains(t, masterClient.Do(ctx, "clusterx", 
"migrate", "1", slaveID).Err(), "Can't migrate slot to a slave")
+       })
+}
+
+func TestSlotMigrateServerFailed(t *testing.T) {
+       ctx := context.Background()
+
+       srv0 := util.StartServer(t, map[string]string{"cluster-enabled": "yes"})
+       defer func() { srv0.Close() }()
+       rdb0 := srv0.NewClient()
+       defer func() { require.NoError(t, rdb0.Close()) }()
+       id0 := "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00"
+       require.NoError(t, rdb0.Do(ctx, "clusterx", "SETNODEID", id0).Err())
+
+       srv1 := util.StartServer(t, map[string]string{"cluster-enabled": "yes"})
+       srv1Alive := true
+       defer func() {
+               if srv1Alive {
+                       srv1.Close()
+               }
+       }()
+       rdb1 := srv1.NewClient()
+       defer func() { require.NoError(t, rdb1.Close()) }()
+       id1 := "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01"
+       require.NoError(t, rdb1.Do(ctx, "clusterx", "SETNODEID", id1).Err())
+
+       clusterNodes := fmt.Sprintf("%s %s %d master - 0-10000\n", id0, 
srv0.Host(), srv0.Port())
+       clusterNodes += fmt.Sprintf("%s %s %d master - 10001-16383", id1, 
srv1.Host(), srv1.Port())
+       require.NoError(t, rdb0.Do(ctx, "clusterx", "SETNODES", clusterNodes, 
"1").Err())
+       require.NoError(t, rdb1.Do(ctx, "clusterx", "SETNODES", clusterNodes, 
"1").Err())
+
+       t.Run("MIGRATE - Slot is out of range", func(t *testing.T) {
+               require.ErrorContains(t, rdb0.Do(ctx, "clusterx", "migrate", 
"-1", id1).Err(), "Slot is out of range")
+               require.ErrorContains(t, rdb0.Do(ctx, "clusterx", "migrate", 
"16384", id1).Err(), "Slot is out of range")
+       })
+
+       t.Run("MIGRATE - Cannot migrate slot to itself", func(t *testing.T) {
+               require.ErrorContains(t, rdb0.Do(ctx, "clusterx", "migrate", 
"1", id0).Err(), "Can't migrate slot to myself")
+       })
+
+       t.Run("MIGRATE - Fail to migrate slot if destination server is not 
running", func(t *testing.T) {
+               srv1.Close()
+               srv1Alive = false
+               require.NoError(t, rdb0.Do(ctx, "clusterx", "migrate", "1", 
id1).Err())
+               time.Sleep(50 * time.Millisecond)
+               i := rdb0.ClusterInfo(ctx).Val()
+               require.Contains(t, i, "migrating_slot: 1")
+               require.Contains(t, i, "migrating_state: fail")
+       })
+}
diff --git a/tests/tcl/tests/integration/slotmigrate.tcl 
b/tests/tcl/tests/integration/slotmigrate.tcl
index 4d36fb66..7dd56346 100644
--- a/tests/tcl/tests/integration/slotmigrate.tcl
+++ b/tests/tcl/tests/integration/slotmigrate.tcl
@@ -18,86 +18,6 @@
 # Import crc16 table
 source "tests/helpers/crc16_slottable.tcl"
 
-start_server {tags {"Migrate from slave server"} overrides {cluster-enabled 
yes}} {
-    # M is master, S is slave
-    set M [srv 0 client]
-    set M_host [srv 0 host]
-    set M_port [srv 0 port]
-    set masterid "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00"
-    $M clusterx SETNODEID $masterid
-    start_server {overrides {cluster-enabled yes}} {
-        set S [srv 0 client]
-        set S_host [srv 0 host]
-        set S_port [srv 0 port]
-        set slaveid "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01"
-        $S clusterx SETNODEID $slaveid
-
-        set cluster_nodes "$masterid $M_host $M_port master - 0-100"
-        set cluster_nodes "$cluster_nodes\n$slaveid $S_host $S_port slave 
$masterid"
-        $M clusterx SETNODES $cluster_nodes 1
-        $S clusterx SETNODES $cluster_nodes 1
-
-        test {MIGRATE - Slave cannot migrate slot} {
-            catch {$S clusterx migrate 1 $masterid} e
-            assert_match {*Can't migrate slot*} $e
-        }
-
-        test {MIGRATE - Cannot migrate slot to a slave} {
-            catch {$M clusterx migrate 0 $slaveid} e
-            assert_match {*Can't migrate slot to a slave*} $e
-        }
-    }
-}
-
-start_server {tags {"Src migration server"} overrides {cluster-enabled yes}} {
-    set r0 [srv 0 client]
-    set node0_host [srv 0 host]
-    set node0_port [srv 0 port]
-    set node0_id "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00"
-    $r0 clusterx setnodeid $node0_id
-    start_server {tags {"Src migration server"} overrides {cluster-enabled 
yes}} {
-        set r1 [srv 0 client]
-        set node1_host [srv 0 host]
-        set node1_port [srv 0 port]
-        set node1_pid [srv 0 pid]
-        set node1_id "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01"
-        $r1 clusterx setnodeid $node1_id
-
-        set cluster_nodes "$node0_id $node0_host $node0_port master - 0-10000"
-        set cluster_nodes "$cluster_nodes\n$node1_id $node1_host $node1_port 
master - 10001-16383"
-        $r0 clusterx setnodes $cluster_nodes 1
-        $r1 clusterx setnodes $cluster_nodes 1
-
-        test {MIGRATE - Slot is out of range} {
-            # Migrate slot -1
-            catch {$r0 clusterx migrate -1 $node1_id} e
-            assert_match {*Slot is out of range*} $e
-
-            # Migrate slot 16384
-            catch {$r0 clusterx migrate 16384 $node1_id} e
-            assert_match {*Slot is out of range*} $e
-        }
-
-        test {MIGRATE - Cannot migrate slot to itself} {
-            catch {$r0 clusterx migrate 1 $node0_id} e
-            assert_match {*Can't migrate slot to myself*} $e
-        }
-
-        test {MIGRATE - Fail to migrate slot if destination server is not 
running} {
-            # Kill node1
-            exec kill -9 $node1_pid
-            after 50
-            # Try migrating slot to node1
-            set ret [$r0 clusterx migrate 1 $node1_id]
-            assert {$ret == "OK"}
-            after 50
-            # Migrating failed
-            catch {[$r0 cluster info]} e
-            assert_match {*1*fail*} $e
-        }
-    }
-}
-
 start_server {tags {"Src migration server"} overrides {cluster-enabled yes}} {
     set r0 [srv 0 client]
     set node0_host [srv 0 host]

Reply via email to