浏览代码

add a test to check we handle down events and control

Chris Bannister 10 年之前
父节点
当前提交
655e4ad72e
共有 1 个文件被更改,包括 35 次插入1 次删除
  1. 35 1
      events_ccm_test.go

+ 35 - 1
events_ccm_test.go

@@ -38,7 +38,7 @@ func TestEventDiscovery(t *testing.T) {
 	}
 }
 
-func TestEventNodeDown(t *testing.T) {
+func TestEventNodeDownControl(t *testing.T) {
 	const targetNode = "node1"
 	if err := ccm.AllUp(); err != nil {
 		t.Fatal(err)
@@ -72,6 +72,40 @@ func TestEventNodeDown(t *testing.T) {
 	}
 }
 
+func TestEventNodeDown(t *testing.T) {
+	const targetNode = "node3"
+	if err := ccm.AllUp(); err != nil {
+		t.Fatal(err)
+	}
+
+	session := createSession(t)
+	defer session.Close()
+
+	if err := ccm.NodeDown(targetNode); err != nil {
+		t.Fatal(err)
+	}
+	log.Println("down")
+
+	status, err := ccm.Status()
+	if err != nil {
+		t.Fatal(err)
+	}
+	log.Printf("status=%+v\n", status)
+
+	time.Sleep(5 * time.Second)
+
+	session.pool.mu.RLock()
+	defer session.pool.mu.RUnlock()
+
+	poolHosts := session.pool.hostConnPools
+	node := status[targetNode]
+	log.Printf("poolhosts=%+v\n", poolHosts)
+
+	if _, ok := poolHosts[node.Addr]; ok {
+		t.Fatal("node not removed after remove event")
+	}
+}
+
 func TestEventNodeUp(t *testing.T) {
 	if err := ccm.AllUp(); err != nil {
 		t.Fatal(err)