MCPcopy Index your code
hub / github.com/cortexproject/cortex / TestDependencies

Function TestDependencies

pkg/util/modules/modules_test.go:21–76  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

19func mockInitFuncFail() (services.Service, error) { return nil, errors.New("Error") }
20
21func TestDependencies(t *testing.T) {
22 var testModules = map[string]module{
23 "serviceA": {
24 initFn: mockInitFunc,
25 },
26
27 "serviceB": {
28 initFn: mockInitFunc,
29 },
30
31 "serviceC": {
32 initFn: mockInitFunc,
33 },
34
35 "serviceD": {
36 initFn: mockInitFuncFail,
37 },
38 }
39
40 mm := NewManager(log.NewNopLogger())
41 for name, mod := range testModules {
42 mm.RegisterModule(name, mod.initFn)
43 }
44 assert.NoError(t, mm.AddDependency("serviceB", "serviceA"))
45 assert.NoError(t, mm.AddDependency("serviceC", "serviceB"))
46 assert.Equal(t, mm.modules["serviceB"].deps, []string{"serviceA"})
47
48 invDeps := mm.findInverseDependencies("serviceA", []string{"serviceB", "serviceC"})
49 require.Len(t, invDeps, 1)
50 assert.Equal(t, invDeps[0], "serviceB")
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
67 svc, err = mm.InitModuleServices("serviceC")
68 assert.NoError(t, err)
69 assert.Equal(t, 3, len(svc))
70
71 // Test loading of the module second time - should produce the same set of services, but new instances.
72 svc2, err := mm.InitModuleServices("serviceC")
73 assert.NoError(t, err)
74 assert.Equal(t, 3, len(svc))
75 assert.NotEqual(t, svc, svc2)
76}
77
78func TestRegisterModuleDefaultsToUserVisible(t *testing.T) {

Callers

nothing calls this directly

Calls 8

RegisterModuleMethod · 0.95
AddDependencyMethod · 0.95
InitModuleServicesMethod · 0.95
NewManagerFunction · 0.70
EqualMethod · 0.65
LenMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected