github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/cmd/jujud-controller/agent/engine_test.go (about) 1 // Copyright 2012-2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package agent 5 6 import ( 7 "github.com/juju/worker/v3/dependency" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/cmd/jujud-controller/agent/machine" 11 "github.com/juju/juju/cmd/jujud-controller/agent/model" 12 "github.com/juju/juju/cmd/jujud/agent/agenttest" 13 coretesting "github.com/juju/juju/testing" 14 ) 15 16 var ( 17 // These vars hold the per-model workers we expect to run in 18 // various circumstances. Note the absence of worker lists for 19 // dying/dead states, because those states are not stable: if 20 // they're working correctly the engine will be shut down. 21 alwaysModelWorkers = []string{ 22 "agent", 23 "api-caller", 24 "api-config-watcher", 25 "clock", 26 "is-responsible-flag", 27 "environ-upgrade-gate", 28 "environ-upgraded-flag", 29 "not-alive-flag", 30 "not-dead-flag", 31 "valid-credential-flag", 32 } 33 requireValidCredentialModelWorkers = []string{ 34 "action-pruner", // tertiary dependency: will be inactive because migration workers will be inactive 35 "application-scaler", // tertiary dependency: will be inactive because migration workers will be inactive 36 "charm-downloader", // tertiary dependency: will be inactive because migration workers will be inactive 37 "charm-revision-updater", // tertiary dependency: will be inactive because migration workers will be inactive 38 "compute-provisioner", 39 "environ-tracker", 40 "firewaller", 41 "instance-mutater", 42 "instance-poller", 43 "logging-config-updater", // tertiary dependency: will be inactive because migration workers will be inactive 44 "machine-undertaker", // tertiary dependency: will be inactive because migration workers will be inactive 45 "metric-worker", // tertiary dependency: will be inactive because migration workers will be inactive 46 "migration-fortress", // secondary dependency: will be inactive because depends on environ-upgrader 47 "migration-inactive-flag", // secondary dependency: will be inactive because depends on environ-upgrader 48 "migration-master", // secondary dependency: will be inactive because depends on environ-upgrader 49 "environ-upgrader", 50 "remote-relations", // tertiary dependency: will be inactive because migration workers will be inactive 51 "state-cleaner", // tertiary dependency: will be inactive because migration workers will be inactive 52 "status-history-pruner", // tertiary dependency: will be inactive because migration workers will be inactive 53 "storage-provisioner", // tertiary dependency: will be inactive because migration workers will be inactive 54 "undertaker", 55 "unit-assigner", // tertiary dependency: will be inactive because migration workers will be inactive 56 "secrets-pruner", 57 "user-secrets-drain-worker", 58 } 59 aliveModelWorkers = []string{ 60 "action-pruner", 61 "application-scaler", 62 "charm-downloader", 63 "charm-revision-updater", 64 "compute-provisioner", 65 "environ-tracker", 66 "firewaller", 67 "instance-mutater", 68 "instance-poller", 69 "log-forwarder", 70 "logging-config-updater", 71 "machine-undertaker", 72 "metric-worker", 73 "migration-fortress", 74 "migration-inactive-flag", 75 "migration-master", 76 "remote-relations", 77 "state-cleaner", 78 "status-history-pruner", 79 "storage-provisioner", 80 "unit-assigner", 81 "secrets-pruner", 82 "user-secrets-drain-worker", 83 } 84 migratingModelWorkers = []string{ 85 "environ-tracker", 86 "migration-fortress", 87 "migration-inactive-flag", 88 "migration-master", 89 "environ-upgrade-gate", 90 "environ-upgraded-flag", 91 "log-forwarder", 92 } 93 // ReallyLongTimeout should be long enough for the model-tracker 94 // tests that depend on a hosted model; its backing state is not 95 // accessible for StartSyncs, so we generally have to wait for at 96 // least two 5s ticks to pass, and should expect rare circumstances 97 // to take even longer. 98 ReallyLongWait = coretesting.LongWait * 3 99 100 alwaysMachineWorkers = []string{ 101 "agent", 102 "api-caller", 103 "api-config-watcher", 104 "broker-tracker", 105 "charmhub-http-client", 106 "clock", 107 "instance-mutater", 108 "migration-fortress", 109 "migration-inactive-flag", 110 "migration-minion", 111 "state-config-watcher", 112 "syslog", 113 "termination-signal-handler", 114 "upgrade-check-flag", 115 "upgrade-check-gate", 116 "upgrade-steps-flag", 117 "upgrade-steps-gate", 118 "upgrader", 119 "valid-credential-flag", 120 } 121 notMigratingMachineWorkers = []string{ 122 "api-address-updater", 123 "deployer", 124 "disk-manager", 125 "fan-configurer", 126 "is-controller-flag", 127 "is-not-controller-flag", 128 // "host-key-reporter", not stable, exits when done 129 "log-sender", 130 "logging-config-updater", 131 "lxd-container-provisioner", 132 "kvm-container-provisioner", 133 "machine-action-runner", 134 //"machine-setup", exits when done 135 "machiner", 136 "proxy-config-updater", 137 "reboot-executor", 138 "ssh-authkeys-updater", 139 "state-converter", 140 "storage-provisioner", 141 "upgrade-series", 142 } 143 ) 144 145 type ModelManifoldsFunc func(config model.ManifoldsConfig) dependency.Manifolds 146 147 func TrackModels(c *gc.C, tracker *agenttest.EngineTracker, inner ModelManifoldsFunc) ModelManifoldsFunc { 148 return func(config model.ManifoldsConfig) dependency.Manifolds { 149 raw := inner(config) 150 id := config.Agent.CurrentConfig().Model().Id() 151 if err := tracker.Install(raw, id); err != nil { 152 c.Errorf("cannot install tracker: %v", err) 153 } 154 return raw 155 } 156 } 157 158 type MachineManifoldsFunc func(config machine.ManifoldsConfig) dependency.Manifolds 159 160 func TrackMachines(c *gc.C, tracker *agenttest.EngineTracker, inner MachineManifoldsFunc) MachineManifoldsFunc { 161 return func(config machine.ManifoldsConfig) dependency.Manifolds { 162 raw := inner(config) 163 id := config.Agent.CurrentConfig().Tag().String() 164 if err := tracker.Install(raw, id); err != nil { 165 c.Errorf("cannot install tracker: %v", err) 166 } 167 return raw 168 } 169 }