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  }