MCPcopy
hub / github.com/grafana/dskit / TestDependencies

Function TestDependencies

modules/modules_test.go:22–84  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

20func mockInitFuncFail() (services.Service, error) { return nil, errors.New("Error") }
21
22func TestDependencies(t *testing.T) {
23 var testModules = map[string]module{
24 "serviceA": {
25 initFn: mockInitFunc,
26 },
27
28 "serviceB": {
29 initFn: mockInitFunc,
30 },
31
32 "serviceC": {
33 initFn: mockInitFunc,
34 },
35
36 "serviceD": {
37 initFn: mockInitFuncFail,
38 },
39 }
40
41 mm := NewManager(log.NewNopLogger())
42 for name, mod := range testModules {
43 mm.RegisterModule(name, mod.initFn)
44 }
45 assert.NoError(t, mm.AddDependency("serviceB", "serviceA"))
46 assert.NoError(t, mm.AddDependency("serviceC", "serviceB"))
47 assert.Equal(t, mm.modules["serviceB"].deps, []string{"serviceA"})
48
49 invDeps := mm.inverseDependenciesForModule("serviceA")
50 assert.Equal(t, []string{"serviceB", "serviceC"}, invDeps)
51
52 // Test unknown module
53 svc, err := mm.InitModuleServices("service_unknown")
54 assert.Error(t, err, fmt.Errorf("unrecognised module name: service_unknown"))
55 assert.Empty(t, svc)
56
57 // Test init failure
58 svc, err = mm.InitModuleServices("serviceD")
59 assert.Error(t, err)
60 assert.Empty(t, svc)
61
62 // Test loading several modules
63 svc, err = mm.InitModuleServices("serviceA", "serviceB")
64 assert.Nil(t, err)
65 assert.Equal(t, 2, len(svc))
66 assert.Equal(t, []string{"serviceB"}, getStopDependenciesForModule("serviceA", svc))
67 assert.Equal(t, []string(nil), getStopDependenciesForModule("serviceB", svc))
68
69 svc, err = mm.InitModuleServices("serviceC")
70 assert.NoError(t, err)
71 assert.Equal(t, 3, len(svc))
72 assert.Equal(t, []string{"serviceB", "serviceC"}, getStopDependenciesForModule("serviceA", svc))
73 assert.Equal(t, []string{"serviceC"}, getStopDependenciesForModule("serviceB", svc))
74 assert.Equal(t, []string(nil), getStopDependenciesForModule("serviceC", svc))
75
76 // Test loading of the module second time - should produce the same set of services, but new instances.
77 svc2, err := mm.InitModuleServices("serviceC")
78 assert.NoError(t, err)
79 assert.Equal(t, 3, len(svc))

Callers

nothing calls this directly

Calls 9

RegisterModuleMethod · 0.95
AddDependencyMethod · 0.95
InitModuleServicesMethod · 0.95
ErrorfMethod · 0.80
NewManagerFunction · 0.70
EqualMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected