/
s_ihave_mgr_test.go
55 lines (48 loc) · 1.06 KB
/
s_ihave_mgr_test.go
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package upax_go
// upax_go/s_ihave_mgr_test.go
import (
"fmt"
xr "github.com/jddixon/rnglib_go"
xi "github.com/jddixon/xlNodeID_go"
. "gopkg.in/check.v1"
"time"
)
func (s *XLSuite) TestClusterClusterIHaveMgr(c *C) {
if VERBOSITY > 0 {
fmt.Println("TEST_CLUSTER_IHAVE_MGR")
}
rng := xr.MakeSimpleRNG()
iHaveCh := make(chan IHaveObj)
entries, err := xi.NewNewIDMap()
c.Assert(err, IsNil)
outMsgCh := make(chan *UpaxClusterMsg, 16)
stopCh := make(chan bool)
K := 3 + rng.Intn(14)
keys := make([][]byte, K)
for i := 0; i < K; i++ {
keys[i] = make([]byte, 32)
rng.NextBytes(keys[i])
if i < K/2 {
err = entries.Insert(keys[i], &keys[i])
c.Assert(err, IsNil)
}
}
obj := IHaveObj{keys}
mgr, err := NewClusterIHaveMgr(iHaveCh, entries, outMsgCh, stopCh)
c.Assert(err, IsNil)
go mgr.Run()
mgr.iHaveCh <- obj
var msgs []*UpaxClusterMsg
done := false
for !done {
select {
case msg := <-outMsgCh:
msgs = append(msgs, msg)
case <-time.After(time.Millisecond):
done = true
break
}
}
c.Assert(len(msgs), Equals, K-K/2)
stopCh <- true
}