github.com/ethereum/go-ethereum@v1.14.3/metrics/opentsdb_test.go (about)

     1  package metrics
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  	"os"
     7  	"strings"
     8  	"testing"
     9  	"time"
    10  )
    11  
    12  func ExampleOpenTSDB() {
    13  	addr, _ := net.ResolveTCPAddr("net", ":2003")
    14  	go OpenTSDB(DefaultRegistry, 1*time.Second, "some.prefix", addr)
    15  }
    16  
    17  func ExampleOpenTSDBWithConfig() {
    18  	addr, _ := net.ResolveTCPAddr("net", ":2003")
    19  	go OpenTSDBWithConfig(OpenTSDBConfig{
    20  		Addr:          addr,
    21  		Registry:      DefaultRegistry,
    22  		FlushInterval: 1 * time.Second,
    23  		DurationUnit:  time.Millisecond,
    24  	})
    25  }
    26  
    27  func TestExampleOpenTSB(t *testing.T) {
    28  	r := NewOrderedRegistry()
    29  	NewRegisteredGaugeInfo("foo", r).Update(GaugeInfoValue{"chain_id": "5"})
    30  	NewRegisteredGaugeFloat64("pi", r).Update(3.14)
    31  	NewRegisteredCounter("months", r).Inc(12)
    32  	NewRegisteredCounterFloat64("tau", r).Inc(1.57)
    33  	NewRegisteredMeter("elite", r).Mark(1337)
    34  	NewRegisteredTimer("second", r).Update(time.Second)
    35  	NewRegisteredCounterFloat64("tau", r).Inc(1.57)
    36  	NewRegisteredCounterFloat64("tau", r).Inc(1.57)
    37  
    38  	w := new(strings.Builder)
    39  	(&OpenTSDBConfig{
    40  		Registry:     r,
    41  		DurationUnit: time.Millisecond,
    42  		Prefix:       "pre",
    43  	}).writeRegistry(w, 978307200, "hal9000")
    44  
    45  	wantB, err := os.ReadFile("./testdata/opentsb.want")
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	if have, want := w.String(), string(wantB); have != want {
    50  		t.Errorf("\nhave:\n%v\nwant:\n%v\n", have, want)
    51  		t.Logf("have vs want:\n%v", findFirstDiffPos(have, want))
    52  	}
    53  }
    54  
    55  func findFirstDiffPos(a, b string) string {
    56  	yy := strings.Split(b, "\n")
    57  	for i, x := range strings.Split(a, "\n") {
    58  		if i >= len(yy) {
    59  			return fmt.Sprintf("have:%d: %s\nwant:%d: <EOF>", i, x, i)
    60  		}
    61  		if y := yy[i]; x != y {
    62  			return fmt.Sprintf("have:%d: %s\nwant:%d: %s", i, x, i, y)
    63  		}
    64  	}
    65  	return ""
    66  }