123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package daemon
- import (
- "testing"
- "time"
- )
- func TestDiscoveryOpts(t *testing.T) {
- clusterOpts := map[string]string{"discovery.heartbeat": "10", "discovery.ttl": "5"}
- heartbeat, ttl, err := discoveryOpts(clusterOpts)
- if err == nil {
- t.Fatalf("discovery.ttl < discovery.heartbeat must fail")
- }
- clusterOpts = map[string]string{"discovery.heartbeat": "10", "discovery.ttl": "10"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err == nil {
- t.Fatalf("discovery.ttl == discovery.heartbeat must fail")
- }
- clusterOpts = map[string]string{"discovery.heartbeat": "invalid"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err == nil {
- t.Fatalf("invalid discovery.heartbeat must fail")
- }
- clusterOpts = map[string]string{"discovery.ttl": "invalid"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err == nil {
- t.Fatalf("invalid discovery.ttl must fail")
- }
- clusterOpts = map[string]string{"discovery.heartbeat": "10", "discovery.ttl": "20"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err != nil {
- t.Fatal(err)
- }
- if heartbeat != 10*time.Second {
- t.Fatalf("Heatbeat - Expected : %v, Actual : %v", 10*time.Second, heartbeat)
- }
- if ttl != 20*time.Second {
- t.Fatalf("TTL - Expected : %v, Actual : %v", 20*time.Second, ttl)
- }
- clusterOpts = map[string]string{"discovery.heartbeat": "10"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err != nil {
- t.Fatal(err)
- }
- if heartbeat != 10*time.Second {
- t.Fatalf("Heatbeat - Expected : %v, Actual : %v", 10*time.Second, heartbeat)
- }
- expected := 10 * defaultDiscoveryTTLFactor * time.Second
- if ttl != expected {
- t.Fatalf("TTL - Expected : %v, Actual : %v", expected, ttl)
- }
- clusterOpts = map[string]string{"discovery.ttl": "30"}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err != nil {
- t.Fatal(err)
- }
- if ttl != 30*time.Second {
- t.Fatalf("TTL - Expected : %v, Actual : %v", 30*time.Second, ttl)
- }
- expected = 30 * time.Second / defaultDiscoveryTTLFactor
- if heartbeat != expected {
- t.Fatalf("Heatbeat - Expected : %v, Actual : %v", expected, heartbeat)
- }
- clusterOpts = map[string]string{}
- heartbeat, ttl, err = discoveryOpts(clusterOpts)
- if err != nil {
- t.Fatal(err)
- }
- if heartbeat != defaultDiscoveryHeartbeat {
- t.Fatalf("Heatbeat - Expected : %v, Actual : %v", defaultDiscoveryHeartbeat, heartbeat)
- }
- expected = defaultDiscoveryHeartbeat * defaultDiscoveryTTLFactor
- if ttl != expected {
- t.Fatalf("TTL - Expected : %v, Actual : %v", expected, ttl)
- }
- }
- func TestModifiedDiscoverySettings(t *testing.T) {
- cases := []struct {
- current *Config
- modified *Config
- expected bool
- }{
- {
- current: discoveryConfig("foo", "bar", map[string]string{}),
- modified: discoveryConfig("foo", "bar", map[string]string{}),
- expected: false,
- },
- {
- current: discoveryConfig("foo", "bar", map[string]string{"foo": "bar"}),
- modified: discoveryConfig("foo", "bar", map[string]string{"foo": "bar"}),
- expected: false,
- },
- {
- current: discoveryConfig("foo", "bar", map[string]string{}),
- modified: discoveryConfig("foo", "bar", nil),
- expected: false,
- },
- {
- current: discoveryConfig("foo", "bar", nil),
- modified: discoveryConfig("foo", "bar", map[string]string{}),
- expected: false,
- },
- {
- current: discoveryConfig("foo", "bar", nil),
- modified: discoveryConfig("baz", "bar", nil),
- expected: true,
- },
- {
- current: discoveryConfig("foo", "bar", nil),
- modified: discoveryConfig("foo", "baz", nil),
- expected: true,
- },
- {
- current: discoveryConfig("foo", "bar", nil),
- modified: discoveryConfig("foo", "bar", map[string]string{"foo": "bar"}),
- expected: true,
- },
- }
- for _, c := range cases {
- got := modifiedDiscoverySettings(c.current, c.modified.ClusterStore, c.modified.ClusterAdvertise, c.modified.ClusterOpts)
- if c.expected != got {
- t.Fatalf("expected %v, got %v: current config %v, new config %v", c.expected, got, c.current, c.modified)
- }
- }
- }
- func discoveryConfig(backendAddr, advertiseAddr string, opts map[string]string) *Config {
- return &Config{
- CommonConfig: CommonConfig{
- ClusterStore: backendAddr,
- ClusterAdvertise: advertiseAddr,
- ClusterOpts: opts,
- },
- }
- }
|