go.dedis.ch/onet/v4@v4.0.0-pre1/simul/monitor/bucket_stats_test.go (about) 1 package monitor 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 // TestBucketStats_Rules tests that a bucket rule can be used 10 // as expected and that it matches the correct hosts only. 11 func TestBucketStats_Rules(t *testing.T) { 12 rr := bucketRules{} 13 r, err := newBucketRule("0:1") 14 require.NoError(t, err) 15 rr = append(rr, r) 16 17 r, err = newBucketRule("5:7") 18 require.NoError(t, err) 19 rr = append(rr, r) 20 21 require.True(t, rr.Match(0)) 22 require.True(t, rr.Match(5)) 23 require.True(t, rr.Match(6)) 24 require.False(t, rr.Match(1)) 25 require.False(t, rr.Match(7)) 26 require.False(t, rr.Match(4)) 27 require.False(t, rr.Match(-1)) 28 29 _, err = newBucketRule("") 30 require.Error(t, err) 31 _, err = newBucketRule("123:") 32 require.Error(t, err) 33 _, err = newBucketRule(":123") 34 require.Error(t, err) 35 _, err = newBucketRule("a:123") 36 require.Error(t, err) 37 _, err = newBucketRule("123:a") 38 require.Error(t, err) 39 } 40 41 // TestBucketStats_Buckets tests that the buckets are correctly 42 // created and that the measures are correctly splitted. 43 func TestBucketStats_Buckets(t *testing.T) { 44 b := newBucketStats() 45 46 err := b.Set(0, []string{"abc"}, NewStats(nil)) 47 require.Error(t, err) 48 49 err = b.Set(0, []string{"10:20"}, NewStats(nil)) 50 require.NoError(t, err) 51 52 err = b.Set(1, []string{"15:20"}, NewStats(nil)) 53 require.NoError(t, err) 54 55 err = b.Set(2, []string{"5:10", "20:25"}, NewStats(nil)) 56 require.NoError(t, err) 57 58 b.Update(newSingleMeasureWithHost("a", 5, 17)) 59 b.Update(newSingleMeasureWithHost("a", 10, 10)) 60 61 s := b.Get(0) 62 require.Equal(t, 7.5, s.Value("a").Avg()) 63 64 s = b.Get(1) 65 require.Equal(t, 5.0, s.Value("a").Avg()) 66 67 s = b.Get(2) 68 require.Nil(t, s.Value("a")) 69 70 s = b.Get(3) 71 require.Nil(t, s) 72 }