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  }