github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/cmd/test-exporter/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"math"
     6  	"time"
     7  
     8  	"github.com/go-kit/log/level"
     9  	"github.com/grafana/dskit/flagext"
    10  	"github.com/prometheus/client_golang/prometheus"
    11  	"github.com/weaveworks/common/server"
    12  	"github.com/weaveworks/common/tracing"
    13  
    14  	"github.com/cortexproject/cortex/pkg/testexporter/correctness"
    15  	"github.com/cortexproject/cortex/pkg/util/log"
    16  )
    17  
    18  var (
    19  	unixStart = time.Unix(0, 0)
    20  )
    21  
    22  func main() {
    23  	var (
    24  		serverConfig server.Config
    25  		runnerConfig correctness.RunnerConfig
    26  	)
    27  	flagext.RegisterFlags(&serverConfig, &runnerConfig)
    28  	flag.Parse()
    29  
    30  	log.InitLogger(&serverConfig)
    31  
    32  	// Setting the environment variable JAEGER_AGENT_HOST enables tracing
    33  	if trace, err := tracing.NewFromEnv("test-exporter"); err != nil {
    34  		level.Error(log.Logger).Log("msg", "Failed to setup tracing", "err", err.Error())
    35  	} else {
    36  		defer trace.Close()
    37  	}
    38  
    39  	server, err := server.New(serverConfig)
    40  	log.CheckFatal("initializing server", err)
    41  	defer server.Shutdown()
    42  
    43  	runner, err := correctness.NewRunner(runnerConfig)
    44  	log.CheckFatal("initializing runner", err)
    45  	defer runner.Stop()
    46  
    47  	runner.Add(correctness.NewSimpleTestCase("now_seconds", func(t time.Time) float64 {
    48  		return t.Sub(unixStart).Seconds()
    49  	}, runnerConfig.CommonTestConfig))
    50  
    51  	runner.Add(correctness.NewSimpleTestCase("sine_wave", func(t time.Time) float64 {
    52  		// With a 15-second scrape interval this gives a ten-minute period
    53  		period := float64(40 * runnerConfig.CommonTestConfig.ScrapeInterval.Nanoseconds())
    54  		radians := float64(t.UnixNano()) / period * 2 * math.Pi
    55  		return math.Sin(radians)
    56  	}, runnerConfig.CommonTestConfig))
    57  
    58  	if runnerConfig.EnableDeleteSeriesTest {
    59  		runnerConfig.DeleteSeriesTestConfig.ExtraSelectors = runnerConfig.ExtraSelectors
    60  		runnerConfig.DeleteSeriesTestConfig.PrometheusAddr = runnerConfig.PrometheusAddr
    61  		runnerConfig.DeleteSeriesTestConfig.UserID = runnerConfig.UserID
    62  		runner.Add(correctness.NewDeleteSeriesTest("delete_series", func(t time.Time) float64 {
    63  			return t.Sub(unixStart).Seconds()
    64  		}, runnerConfig.DeleteSeriesTestConfig, runnerConfig.CommonTestConfig))
    65  	}
    66  
    67  	prometheus.MustRegister(runner)
    68  	err = server.Run()
    69  	log.CheckFatal("running server", err)
    70  }