-
Notifications
You must be signed in to change notification settings - Fork 349
Expand file tree
/
Copy pathctl_svc_test.go
More file actions
97 lines (83 loc) · 3.01 KB
/
Copy pathctl_svc_test.go
File metadata and controls
97 lines (83 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//
// (C) Copyright 2019-2024 Intel Corporation.
// (C) Copyright 2026 Hewlett Packard Enterprise Development LP
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
package server
import (
"testing"
"github.com/daos-stack/daos/src/control/common/test"
"github.com/daos-stack/daos/src/control/events"
"github.com/daos-stack/daos/src/control/logging"
"github.com/daos-stack/daos/src/control/provider/system"
"github.com/daos-stack/daos/src/control/server/config"
"github.com/daos-stack/daos/src/control/server/engine"
"github.com/daos-stack/daos/src/control/server/storage"
"github.com/daos-stack/daos/src/control/server/storage/bdev"
"github.com/daos-stack/daos/src/control/server/storage/mount"
"github.com/daos-stack/daos/src/control/server/storage/scm"
)
func newMockControlServiceFromBackends(t *testing.T, log logging.Logger, cfg *config.Server, bmb *bdev.MockBackend, smb *scm.MockBackend, smsc *system.MockSysConfig, notStarted ...bool) *ControlService {
t.Helper()
if cfg == nil {
cfg = config.DefaultServer().WithEngines(engine.MockConfig().WithTargetCount(1))
}
// Share sys provider between engines to be able to access to same mock config data.
bp := bdev.NewProvider(log, bmb)
syp := system.NewMockSysProvider(log, smsc)
mp := mount.NewProvider(log, syp)
sp := scm.NewProvider(&scm.ProviderConfig{
Log: log,
Backend: smb,
Sys: syp,
Mounter: mp,
})
mscs := NewMockStorageControlService(log, cfg.Engines, syp, sp, bp, nil)
cs := &ControlService{
StorageControlService: *mscs,
harness: &EngineHarness{log: log},
events: events.NewPubSub(test.Context(t), log),
srvCfg: cfg,
}
started := make([]bool, len(cfg.Engines))
for idx := range started {
started[idx] = true
}
switch len(notStarted) {
case 0: // Not specified so start all engines.
case 1:
if notStarted[0] {
// If single true notStarted bool, don't start any engines.
for idx := range started {
started[idx] = false
}
}
case len(cfg.Engines): // One notStarted bool specified for each engine.
for idx := range started {
started[idx] = !notStarted[idx]
}
default:
t.Fatal("len notStarted != len cfg.Engines")
}
for idx, ec := range cfg.Engines {
storProv := storage.MockProvider(log, 0, &ec.Storage, syp, sp, bp, nil)
ei := NewEngineInstance(log, storProv, nil, nil, nil)
setupTestEngineWithConfig(t, ei, uint32(idx), ec, !started[idx])
if started[idx] {
ei.setDrpcSocket("/dontcare")
}
if err := cs.harness.AddInstance(ei); err != nil {
t.Fatal(err)
}
}
return cs
}
// mockControlService takes cfgs for tuneable scm and sys provider behavior but
// default nvmeStorage behavior.
func mockControlService(t *testing.T, log logging.Logger, cfg *config.Server, bmbc *bdev.MockBackendConfig, smbc *scm.MockBackendConfig, smsc *system.MockSysConfig, notStarted ...bool) *ControlService {
t.Helper()
bmb := bdev.NewMockBackend(bmbc)
smb := scm.NewMockBackend(smbc)
return newMockControlServiceFromBackends(t, log, cfg, bmb, smb, smsc, notStarted...)
}