(t *testing.T)
| 65 | } |
| 66 | |
| 67 | func TestNativeHistogramFuzz(t *testing.T) { |
| 68 | s, err := e2e.NewScenario(networkName) |
| 69 | require.NoError(t, err) |
| 70 | defer s.Close() |
| 71 | |
| 72 | // Start dependencies. |
| 73 | consul := e2edb.NewConsulWithName("consul") |
| 74 | require.NoError(t, s.StartAndWaitReady(consul)) |
| 75 | |
| 76 | baseFlags := mergeFlags(AlertmanagerLocalFlags(), BlocksStorageFlags()) |
| 77 | flags := mergeFlags( |
| 78 | baseFlags, |
| 79 | map[string]string{ |
| 80 | "-blocks-storage.tsdb.head-compaction-interval": "4m", |
| 81 | "-blocks-storage.tsdb.block-ranges-period": "2h", |
| 82 | "-blocks-storage.tsdb.ship-interval": "1h", |
| 83 | "-blocks-storage.bucket-store.sync-interval": "1s", |
| 84 | "-blocks-storage.tsdb.retention-period": "24h", |
| 85 | "-blocks-storage.bucket-store.index-cache.backend": tsdb.IndexCacheBackendInMemory, |
| 86 | // Ingester. |
| 87 | "-ring.store": "consul", |
| 88 | "-consul.hostname": consul.NetworkHTTPEndpoint(), |
| 89 | // Distributor. |
| 90 | "-distributor.replication-factor": "1", |
| 91 | // alert manager |
| 92 | "-alertmanager.web.external-url": "http://localhost/alertmanager", |
| 93 | // Compactor. |
| 94 | "-compactor.cleanup-interval": "1s", |
| 95 | }, |
| 96 | ) |
| 97 | // make alert manager config dir |
| 98 | require.NoError(t, writeFileToSharedDir(s, "alertmanager_configs", []byte{})) |
| 99 | |
| 100 | minio := e2edb.NewMinio(9000, flags["-blocks-storage.s3.bucket-name"]) |
| 101 | require.NoError(t, s.StartAndWaitReady(minio)) |
| 102 | |
| 103 | cortex := e2ecortex.NewSingleBinary("cortex", flags, "") |
| 104 | require.NoError(t, s.StartAndWaitReady(cortex)) |
| 105 | |
| 106 | // Wait until Cortex replicas have updated the ring state. |
| 107 | require.NoError(t, cortex.WaitSumMetrics(e2e.Equals(float64(512)), "cortex_ring_tokens_total")) |
| 108 | |
| 109 | now := time.Now() |
| 110 | start := now.Add(-time.Hour * 2) |
| 111 | end := now.Add(-time.Hour) |
| 112 | numSeries := 10 |
| 113 | numSamples := 60 |
| 114 | lbls := make([]labels.Labels, 0, numSeries*2) |
| 115 | scrapeInterval := time.Minute |
| 116 | statusCodes := []string{"200", "400", "404", "500", "502"} |
| 117 | for i := 0; i < numSeries; i++ { |
| 118 | lbls = append(lbls, labels.FromStrings(labels.MetricName, "test_series_a", "job", "test", "series", strconv.Itoa(i%3), "status_code", statusCodes[i%5])) |
| 119 | lbls = append(lbls, labels.FromStrings(labels.MetricName, "test_series_b", "job", "test", "series", strconv.Itoa((i+1)%3), "status_code", statusCodes[(i+1)%5])) |
| 120 | } |
| 121 | |
| 122 | ctx := context.Background() |
| 123 | rnd := rand.New(rand.NewSource(time.Now().Unix())) |
| 124 |
nothing calls this directly
no test coverage detected