Skip to content

Commit

Permalink
review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
rfratto committed Jul 23, 2021
1 parent f3e1fa5 commit f011abd
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
20 changes: 10 additions & 10 deletions pkg/crow/crow.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ import (

// Config for the Crow metrics checker.
type Config struct {
PrometheusAddr string // Base URL of Prometheus server
GenerateSamples int // Number of samples to generate
UserID string // User ID to use when querying.
ExtraSelectors string // Extra selectors for queries, i.e., cluster="prod"
PrometheusAddr string // Base URL of Prometheus server
NumSamples int // Number of samples to generate
UserID string // User ID to use when querying.
ExtraSelectors string // Extra selectors for queries, i.e., cluster="prod"

// Querying Params

Expand All @@ -42,13 +42,13 @@ type Config struct {
// RegisterFlags registers flags for the config to the given FlagSet.
func (c *Config) RegisterFlags(f *flag.FlagSet) {
f.StringVar(&c.PrometheusAddr, "prometheus-addr", DefaultConfig.PrometheusAddr, "Root URL of the Prometheus API to query against")
f.IntVar(&c.GenerateSamples, "generate-samples", DefaultConfig.GenerateSamples, "Number of samples to generate when being scraped")
f.IntVar(&c.NumSamples, "generate-samples", DefaultConfig.NumSamples, "Number of samples to generate when being scraped")
f.StringVar(&c.UserID, "user-id", DefaultConfig.UserID, "UserID to attach to query. Useful for querying multi-tenated Cortex.")
f.StringVar(&c.ExtraSelectors, "extra-selectors", DefaultConfig.ExtraSelectors, "Extra selectors to include in queries, useful for identifying different instances of this job.")

f.DurationVar(&c.QueryDuration, "query-timeout", DefaultConfig.QueryTimeout, "timeout for querying")
f.DurationVar(&c.QueryTimeout, "query-timeout", DefaultConfig.QueryTimeout, "timeout for querying")
f.DurationVar(&c.QueryDuration, "query-duration", DefaultConfig.QueryDuration, "time before and after sample to search")
f.DurationVar(&c.QueryDuration, "query-step", DefaultConfig.QueryStep, "step between samples when searching")
f.DurationVar(&c.QueryStep, "query-step", DefaultConfig.QueryStep, "step between samples when searching")

f.IntVar(&c.MaxValidations, "max-validations", DefaultConfig.MaxValidations, "Maximum number of times to try validating a sample")
f.DurationVar(&c.MaxTimestampDelta, "max-timestamp-delta", DefaultConfig.MaxTimestampDelta, "maximum difference from the stored timestamp from the validating sample to allow")
Expand All @@ -57,8 +57,8 @@ func (c *Config) RegisterFlags(f *flag.FlagSet) {

// DefaultConfig holds defaults for Crow settings.
var DefaultConfig = Config{
MaxValidations: 5,
GenerateSamples: 10,
MaxValidations: 5,
NumSamples: 10,

QueryTimeout: 150 * time.Millisecond,
QueryDuration: 2 * time.Second,
Expand Down Expand Up @@ -291,7 +291,7 @@ func (c *Crow) validateInMatrix(b *sample, m model.Matrix) error {
// schedule a validation job.
func (c *Crow) TestMetrics() prometheus.Collector {
return &sampleGenerator{
numSamples: c.cfg.GenerateSamples,
numSamples: c.cfg.NumSamples,
sendCh: c.sampleCh,

r: rand.New(rand.NewSource(time.Now().Unix())),
Expand Down
2 changes: 1 addition & 1 deletion pkg/crow/crow_e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ prometheus:

crowCfg := DefaultConfig
crowCfg.PrometheusAddr = "http://" + promAddr
crowCfg.GenerateSamples = 1
crowCfg.NumSamples = 1
crowCfg.ExtraSelectors = `cluster="test"`
crowCfg.UserID = "user"

Expand Down
13 changes: 12 additions & 1 deletion pkg/crow/samples.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ func (sg *sampleGenerator) Collect(ch chan<- prometheus.Metric) {
)
)

usedLabels := map[string]struct{}{}

samples := make([]*sample, sg.numSamples)
for s := 0; s < sg.numSamples; s++ {
samples[s] = &sample{
Expand All @@ -62,10 +64,19 @@ func (sg *sampleGenerator) Collect(ch chan<- prometheus.Metric) {
Value: float64(sg.r.Int63n(1_000_000)),
}

GenLabel:
labelSuffix := make([]byte, 2)
_, _ = sg.r.Read(labelSuffix)
label := fmt.Sprintf("sample_%x", labelSuffix)
if _, exist := usedLabels[label]; exist {
goto GenLabel
}
usedLabels[label] = struct{}{}

ch <- prometheus.MustNewConstMetric(
desc,
prometheus.GaugeValue,
samples[s].Value, fmt.Sprintf("sample_%d", s),
samples[s].Value, label,
)
}

Expand Down
20 changes: 10 additions & 10 deletions pkg/crow/samples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,16 @@ func Test_sampleGenerator(t *testing.T) {

expect := `# HELP crow_validation_sample Sample to validate
# TYPE crow_validation_sample gauge
crow_validation_sample{sample_num="sample_0"} 165505
crow_validation_sample{sample_num="sample_1"} 393152
crow_validation_sample{sample_num="sample_2"} 995827
crow_validation_sample{sample_num="sample_3"} 197794
crow_validation_sample{sample_num="sample_4"} 376202
crow_validation_sample{sample_num="sample_5"} 126063
crow_validation_sample{sample_num="sample_6"} 980153
crow_validation_sample{sample_num="sample_7"} 422456
crow_validation_sample{sample_num="sample_8"} 894929
crow_validation_sample{sample_num="sample_9"} 637646
crow_validation_sample{sample_num="sample_1204"} 197794
crow_validation_sample{sample_num="sample_48a7"} 980153
crow_validation_sample{sample_num="sample_5baf"} 376202
crow_validation_sample{sample_num="sample_9ee0"} 422456
crow_validation_sample{sample_num="sample_b10d"} 894929
crow_validation_sample{sample_num="sample_b44c"} 976708
crow_validation_sample{sample_num="sample_c041"} 165505
crow_validation_sample{sample_num="sample_d3ff"} 995827
crow_validation_sample{sample_num="sample_e85f"} 259259
crow_validation_sample{sample_num="sample_f8f9"} 637646
`
require.Equal(t, expect, sb.String())
}

0 comments on commit f011abd

Please sign in to comment.