github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/uniter/relation/export_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package relation 5 6 import ( 7 "github.com/juju/loggo" 8 9 "github.com/juju/juju/worker/uniter/runner/context" 10 ) 11 12 type StateTrackerForTestConfig struct { 13 St StateTrackerState 14 Unit Unit 15 LeadershipContext context.LeadershipContext 16 Subordinate bool 17 PrincipalName string 18 CharmDir string 19 StateManager StateManager 20 NewRelationerFunc func(RelationUnit, StateManager, UnitGetter, Logger) Relationer 21 Relationers map[int]Relationer 22 RemoteAppName map[int]string 23 } 24 25 func NewStateTrackerForTest(cfg StateTrackerForTestConfig) (RelationStateTracker, error) { 26 rst := &relationStateTracker{ 27 st: cfg.St, 28 unit: cfg.Unit, 29 leaderCtx: cfg.LeadershipContext, 30 abort: make(chan struct{}), 31 subordinate: cfg.Subordinate, 32 principalName: cfg.PrincipalName, 33 charmDir: cfg.CharmDir, 34 relationers: make(map[int]Relationer), 35 remoteAppName: make(map[int]string), 36 relationCreated: make(map[int]bool), 37 isPeerRelation: make(map[int]bool), 38 stateMgr: cfg.StateManager, 39 logger: loggo.GetLogger("test"), 40 newRelationer: cfg.NewRelationerFunc, 41 } 42 43 return rst, rst.loadInitialState() 44 } 45 46 func NewStateTrackerForSyncScopesTest(cfg StateTrackerForTestConfig) (RelationStateTracker, error) { 47 return &relationStateTracker{ 48 st: cfg.St, 49 unit: cfg.Unit, 50 leaderCtx: cfg.LeadershipContext, 51 abort: make(chan struct{}), 52 relationers: cfg.Relationers, 53 remoteAppName: cfg.RemoteAppName, 54 relationCreated: make(map[int]bool), 55 isPeerRelation: make(map[int]bool), 56 stateMgr: cfg.StateManager, 57 logger: loggo.GetLogger("test"), 58 newRelationer: cfg.NewRelationerFunc, 59 charmDir: cfg.CharmDir, 60 }, nil 61 }