File: awareness_test.go

package info (click to toggle)
golang-github-hashicorp-memberlist 0.1.0%2Bgit20180209.2288bf30-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 596 kB
  • sloc: sh: 26; makefile: 16
file content (41 lines) | stat: -rw-r--r-- 932 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package memberlist

import (
	"testing"
	"time"
)

func TestAwareness(t *testing.T) {
	cases := []struct {
		delta   int
		score   int
		timeout time.Duration
	}{
		{0, 0, 1 * time.Second},
		{-1, 0, 1 * time.Second},
		{-10, 0, 1 * time.Second},
		{1, 1, 2 * time.Second},
		{-1, 0, 1 * time.Second},
		{10, 7, 8 * time.Second},
		{-1, 6, 7 * time.Second},
		{-1, 5, 6 * time.Second},
		{-1, 4, 5 * time.Second},
		{-1, 3, 4 * time.Second},
		{-1, 2, 3 * time.Second},
		{-1, 1, 2 * time.Second},
		{-1, 0, 1 * time.Second},
		{-1, 0, 1 * time.Second},
	}

	a := newAwareness(8)
	for i, c := range cases {
		a.ApplyDelta(c.delta)
		if a.GetHealthScore() != c.score {
			t.Errorf("case %d: score mismatch %d != %d", i, a.score, c.score)
		}
		if timeout := a.ScaleTimeout(1 * time.Second); timeout != c.timeout {
			t.Errorf("case %d: scaled timeout mismatch %9.6f != %9.6f",
				i, timeout.Seconds(), c.timeout.Seconds())
		}
	}
}