go.dedis.ch/onet/v3@v3.2.11-0.20210930124529-e36530bca7ef/tracing/logger_test.go (about) 1 package tracing 2 3 import ( 4 "fmt" 5 "strings" 6 "sync" 7 "testing" 8 9 "go.dedis.ch/onet/v3/log" 10 11 "go.dedis.ch/kyber/v3/suites" 12 13 "github.com/stretchr/testify/require" 14 ) 15 16 var tSuite = suites.MustFind("Ed25519") 17 18 var doneMeasuring = "done tracing" 19 20 func TestStack(t *testing.T) { 21 sc, tr := newSimulLogger() 22 defer log.UnregisterLogger(tr.loggerID) 23 tr.PrintSingleSpans = 10 24 tr.AddEntryPoints("go.dedis.ch/onet/v3/tracing.one") 25 tr.AddDoneMsgs(doneMeasuring) 26 one(tr, 1) 27 one(tr, 2) 28 sc.Wg.Wait() 29 require.Equal(t, 2, len(sc.Traces)) 30 for i, methods := range [][]string{ 31 {"one", "two", "two", "two", "one", "one", "one"}, 32 {"one", "two", "two", "two", "two", "two", "one", "one", "one"}} { 33 for j, method := range methods { 34 require.Equal(t, method, 35 strings.Trim(sc.Traces[i][j]["method"], `""`), 36 fmt.Sprintf("%d / %d", i, j)) 37 } 38 } 39 } 40 41 func one(tr *TraceLogger, i int) { 42 tr.getTraceSpan(1, "one-1", 3) 43 for j := 0; j < i; j++ { 44 two(tr, j) 45 } 46 tr.getTraceSpan(1, "one-2", 3) 47 tr.getTraceSpan(1, doneMeasuring, 3) 48 } 49 50 func two(tr *TraceLogger, i int) { 51 tr.getTraceSpan(1, "two-1", 3) 52 tr.getTraceSpan(1, "two-2", 3) 53 } 54 55 func TestGoroutines(t *testing.T) { 56 sc, tr := newSimulLogger() 57 defer log.UnregisterLogger(tr.loggerID) 58 //tr.PrintSingleSpans = 10 59 tr.AddEntryPoints("go.dedis.ch/onet/v3/tracing.goroutines") 60 tr.AddDoneMsgs("done goroutine") 61 goroutines(0) 62 sc.waitAndPrint() 63 } 64 65 func goroutines(i int) { 66 log.Lvl2("new goroutine", i) 67 wg := sync.WaitGroup{} 68 wg.Add(2) 69 go subgo(&wg) 70 go subgo(&wg) 71 wg.Wait() 72 log.Lvl2("done goroutine") 73 } 74 75 func subgo(wg *sync.WaitGroup) { 76 log.Lvl3("sub-goroutine") 77 wg.Done() 78 }