MCPcopy
hub / github.com/grafana/tempo / Test_LeaderElection

Function Test_LeaderElection

pkg/usagestats/reporter_test.go:23–71  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

21)
22
23func Test_LeaderElection(t *testing.T) {
24 stabilityCheckInterval = 100 * time.Millisecond
25
26 result := make(chan *ClusterSeed, 10)
27
28 objectClient, err := local.NewBackend(&local.Config{
29 Path: t.TempDir(),
30 })
31 require.NoError(t, err)
32
33 for i := 0; i < 3; i++ {
34 go func() {
35 r, leaderErr := NewReporter(Config{Leader: true, Enabled: true}, kv.Config{
36 Store: "inmemory",
37 }, objectClient, objectClient, log.NewNopLogger(), nil)
38 require.NoError(t, leaderErr)
39 r.init(context.Background())
40 result <- r.cluster
41 }()
42 }
43 for i := 0; i < 7; i++ {
44 go func() {
45 r, nonLeaderError := NewReporter(Config{Leader: false, Enabled: true}, kv.Config{
46 Store: "inmemory",
47 }, objectClient, objectClient, log.NewNopLogger(), nil)
48 require.NoError(t, nonLeaderError)
49 r.init(context.Background())
50 result <- r.cluster
51 }()
52 }
53
54 var UID []string
55 for i := 0; i < 10; i++ {
56 cluster := <-result
57 require.NotNil(t, cluster)
58 UID = append(UID, cluster.UID)
59 }
60 first := UID[0]
61 for _, uid := range UID {
62 require.Equal(t, first, uid)
63 }
64 kvClient, err := kv.NewClient(kv.Config{Store: "inmemory"}, JSONCodec, nil, log.NewNopLogger())
65 require.NoError(t, err)
66 // verify that the ID found is also correctly stored in the kv store and not overridden by another leader.
67 data, err := kvClient.Get(context.Background(), seedKey)
68 require.NoError(t, err)
69 t.Logf("data: %+v", data.(*ClusterSeed))
70 require.Equal(t, data.(*ClusterSeed).UID, first)
71}
72
73func Test_LeaderElectionWithBrokenSeedFile(t *testing.T) {
74 stabilityCheckInterval = 100 * time.Millisecond

Callers

nothing calls this directly

Calls 5

initMethod · 0.95
GetMethod · 0.95
NewBackendFunction · 0.92
NewReporterFunction · 0.85
EqualMethod · 0.45

Tested by

no test coverage detected