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  }