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

Function TestBackendScheduler

modules/backendscheduler/backendscheduler_test.go:33–241  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

31var tenant = "test-tenant"
32
33func TestBackendScheduler(t *testing.T) {
34 cfg := Config{}
35 cfg.RegisterFlagsAndApplyDefaults("", &flag.FlagSet{})
36 cfg.BackendFlushInterval = 100 * time.Millisecond
37
38 tmpDir := t.TempDir()
39 cfg.LocalWorkPath = tmpDir
40
41 var (
42 ctx, cancel = context.WithCancel(context.Background())
43 store, rr, ww = newStore(ctx, t, tmpDir)
44 )
45
46 defer func() {
47 cancel()
48 store.Shutdown()
49 }()
50
51 limits, err := overrides.NewOverrides(overrides.Config{Defaults: overrides.Overrides{}}, nil, prometheus.DefaultRegisterer)
52 require.NoError(t, err)
53
54 t.Run("next with no jobs returns correct errors", func(t *testing.T) {
55 s, err := New(cfg, store, limits, rr, ww)
56 require.NoError(t, err)
57
58 resp, err := s.Next(ctx, &tempopb.NextJobRequest{
59 WorkerId: "test-worker",
60 })
61 require.Error(t, err)
62 errStatus, ok := status.FromError(err)
63 require.True(t, ok)
64 require.Equal(t, errStatus.Code(), codes.NotFound)
65
66 require.NotNil(t, resp)
67 require.Equal(t, "", resp.JobId)
68 })
69
70 tenantCount := 5
71 tenantBlockIDs := make(map[string][]backend.UUID)
72
73 // Push some data to a few tenants
74 for i := range tenantCount {
75 testTenant := tenant + strconv.Itoa(i)
76 tenantBlockIDs[testTenant] = writeTenantBlocks(ctx, t, backend.NewWriter(ww), testTenant, 10)
77 }
78
79 time.Sleep(500 * time.Millisecond)
80
81 t.Run("jobs need doing", func(t *testing.T) {
82 s, err := New(cfg, store, limits, rr, ww)
83 require.NoError(t, err)
84
85 // Start the scheduler
86 err = s.starting(ctx)
87 require.NoError(t, err)
88
89 go func() {
90 // Start a goroutine to run the service

Callers

nothing calls this directly

Calls 15

NewOverridesFunction · 0.92
NewWriterFunction · 0.92
MustParseFunction · 0.92
equalJobsFunction · 0.85
newStoreFunction · 0.70
writeTenantBlocksFunction · 0.70
ShutdownMethod · 0.65
NextMethod · 0.65
ErrorMethod · 0.65
SleepMethod · 0.65
UpdateJobMethod · 0.65

Tested by

no test coverage detected