Skip to content

Commit e65e3a4

Browse files
committed
Add rolling update e2e test
Signed-off-by: SungJin1212 <[email protected]>
1 parent e739b3d commit e65e3a4

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

integration/remote_write_v2_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,82 @@ import (
2323
"github.com/cortexproject/cortex/pkg/storage/tsdb"
2424
)
2525

26+
func TestIngesterRollingUpdate(t *testing.T) {
27+
28+
const blockRangePeriod = 5 * time.Second
29+
nonPushV2SupportImage := "quay.io/cortexproject/cortex:v1.18.1"
30+
31+
s, err := e2e.NewScenario(networkName)
32+
require.NoError(t, err)
33+
defer s.Close()
34+
35+
// Start dependencies.
36+
consul := e2edb.NewConsulWithName("consul")
37+
require.NoError(t, s.StartAndWaitReady(consul))
38+
39+
flags := mergeFlags(
40+
AlertmanagerLocalFlags(),
41+
map[string]string{
42+
"-store.engine": blocksStorageEngine,
43+
"-blocks-storage.backend": "filesystem",
44+
"-blocks-storage.tsdb.head-compaction-interval": "4m",
45+
"-blocks-storage.bucket-store.sync-interval": "15m",
46+
"-blocks-storage.bucket-store.index-cache.backend": tsdb.IndexCacheBackendInMemory,
47+
"-blocks-storage.bucket-store.bucket-index.enabled": "true",
48+
"-querier.query-store-for-labels-enabled": "true",
49+
"-blocks-storage.tsdb.block-ranges-period": blockRangePeriod.String(),
50+
"-blocks-storage.tsdb.ship-interval": "1s",
51+
"-blocks-storage.tsdb.retention-period": ((blockRangePeriod * 2) - 1).String(),
52+
"-blocks-storage.tsdb.enable-native-histograms": "true",
53+
// Ingester.
54+
"-ring.store": "consul",
55+
"-consul.hostname": consul.NetworkHTTPEndpoint(),
56+
// Distributor.
57+
"-distributor.replication-factor": "1",
58+
// Store-gateway.
59+
"-store-gateway.sharding-enabled": "false",
60+
// alert manager
61+
"-alertmanager.web.external-url": "http://localhost/alertmanager",
62+
},
63+
)
64+
65+
// make alert manager config dir
66+
require.NoError(t, writeFileToSharedDir(s, "alertmanager_configs", []byte{}))
67+
68+
path := path.Join(s.SharedDir(), "cortex-1")
69+
70+
flags = mergeFlags(flags, map[string]string{"-blocks-storage.filesystem.dir": path})
71+
// Start Cortex replicas.
72+
// Start all other services.
73+
ingester := e2ecortex.NewIngester("ingester", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, nonPushV2SupportImage)
74+
distributor := e2ecortex.NewDistributor("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
75+
storeGateway := e2ecortex.NewStoreGateway("store-gateway", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
76+
querier := e2ecortex.NewQuerier("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), mergeFlags(flags, map[string]string{
77+
"-querier.store-gateway-addresses": storeGateway.NetworkGRPCEndpoint()}), "")
78+
79+
require.NoError(t, s.StartAndWaitReady(querier, ingester, distributor, storeGateway))
80+
81+
// Wait until Cortex replicas have updated the ring state.
82+
require.NoError(t, distributor.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total"))
83+
require.NoError(t, querier.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total"))
84+
85+
c, err := e2ecortex.NewClient(distributor.HTTPEndpoint(), querier.HTTPEndpoint(), "", "", "user-1")
86+
require.NoError(t, err)
87+
88+
now := time.Now()
89+
90+
// series push
91+
symbols1, series, expectedVector := e2e.GenerateSeriesV2("test_series", now, prompb.Label{Name: "job", Value: "test"}, prompb.Label{Name: "foo", Value: "bar"})
92+
res, err := c.PushV2(symbols1, series)
93+
require.NoError(t, err)
94+
require.Equal(t, 200, res.StatusCode)
95+
96+
// sample
97+
result, err := c.Query("test_series", now)
98+
require.NoError(t, err)
99+
assert.Equal(t, expectedVector, result.(model.Vector))
100+
}
101+
26102
func TestIngest(t *testing.T) {
27103
const blockRangePeriod = 5 * time.Second
28104

0 commit comments

Comments
 (0)