go.dedis.ch/onet/v4@v4.0.0-pre1/simul/monitor/monitor_test.go (about) 1 package monitor 2 3 import ( 4 "bytes" 5 "fmt" 6 "strconv" 7 "testing" 8 "time" 9 10 "go.dedis.ch/onet/v4/log" 11 ) 12 13 func TestMain(m *testing.M) { 14 log.MainTest(m) 15 } 16 17 func TestReadyNormal(t *testing.T) { 18 m := make(map[string]string) 19 m["servers"] = "1" 20 stat := NewStats(m) 21 fresh := stat.String() 22 // First set up monitor listening 23 mon := NewMonitor(stat) 24 go mon.Listen() 25 time.Sleep(100 * time.Millisecond) 26 27 // Then measure 28 err := ConnectSink("localhost:" + strconv.Itoa(DefaultSinkPort)) 29 if err != nil { 30 t.Fatal(fmt.Sprintf("Error starting monitor: %s", err)) 31 return 32 } 33 34 meas := newSingleMeasure("round", 10) 35 meas.Record() 36 time.Sleep(200 * time.Millisecond) 37 newSingleMeasure("round", 20) 38 EndAndCleanup() 39 time.Sleep(100 * time.Millisecond) 40 updated := mon.stats.String() 41 if updated == fresh { 42 t.Fatal("Stats not updated ?") 43 } 44 45 mon.Stop() 46 } 47 48 func TestKeyOrder(t *testing.T) { 49 m := make(map[string]string) 50 m["servers"] = "1" 51 m["hosts"] = "1" 52 m["bf"] = "2" 53 // create stats 54 stat := NewStats(m) 55 m1 := newSingleMeasure("round", 10) 56 m2 := newSingleMeasure("setup", 5) 57 stat.Update(m1) 58 stat.Update(m2) 59 str := new(bytes.Buffer) 60 stat.WriteHeader(str) 61 stat.WriteValues(str) 62 63 stat2 := NewStats(m) 64 stat2.Update(m1) 65 stat2.Update(m2) 66 67 str2 := new(bytes.Buffer) 68 stat2.WriteHeader(str2) 69 stat2.WriteValues(str2) 70 if !bytes.Equal(str.Bytes(), str2.Bytes()) { 71 t.Fatal("KeyOrder / output not the same for same stats") 72 } 73 } 74 75 // setupMonitor launches a basic monitor with a created Stats object 76 // When finished with the monitor, just call `End()` 77 func setupMonitor(t *testing.T) (*Monitor, *Stats) { 78 m := make(map[string]string) 79 m["servers"] = "1" 80 stat := NewStats(m) 81 // First set up monitor listening 82 mon := NewMonitor(stat) 83 go mon.Listen() 84 time.Sleep(100 * time.Millisecond) 85 86 // Then measure 87 err := ConnectSink("localhost:" + strconv.Itoa(int(mon.SinkPort))) 88 if err != nil { 89 t.Fatal(fmt.Sprintf("Error starting monitor: %s", err)) 90 } 91 return mon, stat 92 }