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 }