소스 검색

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 8 년 전
부모
커밋
fb2bc35210
2개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 2
      daemon/discovery/discovery.go
  2. 8 0
      daemon/discovery/discovery_test.go

+ 1 - 2
daemon/discovery/discovery.go

@@ -81,8 +81,7 @@ func discoveryOpts(clusterOpts map[string]string) (time.Duration, time.Duration,
 		ttl = time.Duration(t) * time.Second
 		ttl = time.Duration(t) * time.Second
 
 
 		if _, ok := clusterOpts["discovery.heartbeat"]; !ok {
 		if _, ok := clusterOpts["discovery.heartbeat"]; !ok {
-			h := int(t / defaultDiscoveryTTLFactor)
-			heartbeat = time.Duration(h) * time.Second
+			heartbeat = time.Duration(t) * time.Second / time.Duration(defaultDiscoveryTTLFactor)
 		}
 		}
 
 
 		if ttl <= heartbeat {
 		if ttl <= heartbeat {

+ 8 - 0
daemon/discovery/discovery_test.go

@@ -1,6 +1,7 @@
 package discovery
 package discovery
 
 
 import (
 import (
+	"fmt"
 	"testing"
 	"testing"
 	"time"
 	"time"
 )
 )
@@ -86,6 +87,13 @@ func TestDiscoveryOpts(t *testing.T) {
 		t.Fatalf("Heartbeat - Expected : %v, Actual : %v", expected, heartbeat)
 		t.Fatalf("Heartbeat - Expected : %v, Actual : %v", expected, heartbeat)
 	}
 	}
 
 
+	discaveryTTL := fmt.Sprintf("%d", defaultDiscoveryTTLFactor-1)
+	clusterOpts = map[string]string{"discovery.ttl": discaveryTTL}
+	heartbeat, ttl, err = discoveryOpts(clusterOpts)
+	if err == nil && heartbeat == 0 {
+		t.Fatal("discovery.heartbeat must be positive")
+	}
+
 	clusterOpts = map[string]string{}
 	clusterOpts = map[string]string{}
 	heartbeat, ttl, err = discoveryOpts(clusterOpts)
 	heartbeat, ttl, err = discoveryOpts(clusterOpts)
 	if err != nil {
 	if err != nil {