Browse code

The variable heartbeat might be 0

Signed-off-by: Yanqiang Miao <miao.yanqiang@zte.com.cn>

perfect the test case for 'discoveryOpts'

Signed-off-by: Yanqiang Miao <miao.yanqiang@zte.com.cn>

Yanqiang Miao authored on 2017/03/11 17:03:22
Showing 2 changed files
... ...
@@ -81,8 +81,7 @@ func discoveryOpts(clusterOpts map[string]string) (time.Duration, time.Duration,
81 81
 		ttl = time.Duration(t) * time.Second
82 82
 
83 83
 		if _, ok := clusterOpts["discovery.heartbeat"]; !ok {
84
-			h := int(t / defaultDiscoveryTTLFactor)
85
-			heartbeat = time.Duration(h) * time.Second
84
+			heartbeat = time.Duration(t) * time.Second / time.Duration(defaultDiscoveryTTLFactor)
86 85
 		}
87 86
 
88 87
 		if ttl <= heartbeat {
... ...
@@ -1,6 +1,7 @@
1 1
 package discovery
2 2
 
3 3
 import (
4
+	"fmt"
4 5
 	"testing"
5 6
 	"time"
6 7
 )
... ...
@@ -86,6 +87,13 @@ func TestDiscoveryOpts(t *testing.T) {
86 86
 		t.Fatalf("Heartbeat - Expected : %v, Actual : %v", expected, heartbeat)
87 87
 	}
88 88
 
89
+	discaveryTTL := fmt.Sprintf("%d", defaultDiscoveryTTLFactor-1)
90
+	clusterOpts = map[string]string{"discovery.ttl": discaveryTTL}
91
+	heartbeat, ttl, err = discoveryOpts(clusterOpts)
92
+	if err == nil && heartbeat == 0 {
93
+		t.Fatal("discovery.heartbeat must be positive")
94
+	}
95
+
89 96
 	clusterOpts = map[string]string{}
90 97
 	heartbeat, ttl, err = discoveryOpts(clusterOpts)
91 98
 	if err != nil {