github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/status/caas_test.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package status_test 5 6 import ( 7 gc "gopkg.in/check.v1" 8 9 "github.com/juju/juju/core/status" 10 ) 11 12 type UnitCloudStatusSuite struct{} 13 14 var _ = gc.Suite(&UnitCloudStatusSuite{}) 15 16 func (s *UnitCloudStatusSuite) TestContainerOrUnitStatusChoice(c *gc.C) { 17 18 var checks = []struct { 19 cloudContainerStatus status.StatusInfo 20 unitStatus status.StatusInfo 21 expectWorkload bool 22 messageCheck string 23 }{ 24 { 25 cloudContainerStatus: status.StatusInfo{ 26 Status: status.Active, 27 Message: "container", 28 }, 29 unitStatus: status.StatusInfo{ 30 Status: status.Active, 31 Message: "unit", 32 }, 33 expectWorkload: true, 34 messageCheck: "unit", 35 }, 36 { 37 cloudContainerStatus: status.StatusInfo{ 38 Status: status.Blocked, 39 Message: "container", 40 }, 41 unitStatus: status.StatusInfo{ 42 Status: status.Blocked, 43 Message: "unit", 44 }, 45 expectWorkload: true, 46 messageCheck: "container", 47 }, 48 { 49 cloudContainerStatus: status.StatusInfo{ 50 Status: status.Error, 51 Message: "container", 52 }, 53 unitStatus: status.StatusInfo{ 54 Status: status.Blocked, 55 Message: "unit", 56 }, 57 expectWorkload: true, 58 messageCheck: "container", 59 }, 60 { 61 cloudContainerStatus: status.StatusInfo{ 62 Status: status.Blocked, 63 Message: "container", 64 }, 65 unitStatus: status.StatusInfo{ 66 Status: status.Error, 67 Message: "unit", 68 }, 69 expectWorkload: true, 70 messageCheck: "unit", 71 }, 72 { 73 cloudContainerStatus: status.StatusInfo{ 74 Status: status.Running, 75 Message: "container", 76 }, 77 unitStatus: status.StatusInfo{ 78 Status: status.Waiting, 79 Message: status.MessageWaitForContainer, 80 }, 81 expectWorkload: true, 82 messageCheck: "container", 83 }, 84 { 85 cloudContainerStatus: status.StatusInfo{}, 86 unitStatus: status.StatusInfo{ 87 Status: status.Waiting, 88 Message: status.MessageWaitForContainer, 89 }, 90 expectWorkload: true, 91 messageCheck: status.MessageWaitForContainer, 92 }, 93 { 94 cloudContainerStatus: status.StatusInfo{ 95 Status: status.Active, 96 Message: "container", 97 }, 98 unitStatus: status.StatusInfo{ 99 Status: status.Waiting, 100 Message: "waiting for the movie to start", 101 }, 102 expectWorkload: true, 103 messageCheck: "waiting for the movie to start", 104 }, 105 { 106 cloudContainerStatus: status.StatusInfo{ 107 Status: status.Error, 108 Message: "container", 109 }, 110 unitStatus: status.StatusInfo{ 111 Status: status.Active, 112 Message: "unit", 113 }, 114 expectWorkload: true, 115 messageCheck: "container", 116 }, 117 { 118 cloudContainerStatus: status.StatusInfo{ 119 Status: status.Allocating, 120 Message: "container", 121 }, 122 unitStatus: status.StatusInfo{ 123 Status: status.Active, 124 Message: "unit", 125 }, 126 expectWorkload: true, 127 messageCheck: "container", 128 }, 129 { 130 cloudContainerStatus: status.StatusInfo{ 131 Status: status.Blocked, 132 Message: "container", 133 }, 134 unitStatus: status.StatusInfo{ 135 Status: status.Active, 136 Message: "unit", 137 }, 138 expectWorkload: true, 139 messageCheck: "container", 140 }, 141 { 142 cloudContainerStatus: status.StatusInfo{}, 143 unitStatus: status.StatusInfo{ 144 Status: status.Blocked, 145 Message: "unit", 146 }, 147 expectWorkload: true, 148 messageCheck: "unit", 149 }, 150 { 151 cloudContainerStatus: status.StatusInfo{}, 152 unitStatus: status.StatusInfo{Status: status.Waiting, Message: status.MessageInitializingAgent}, 153 expectWorkload: true, 154 messageCheck: status.MessageWaitForContainer, 155 }, 156 { 157 cloudContainerStatus: status.StatusInfo{}, 158 unitStatus: status.StatusInfo{Status: status.Active, Message: "running"}, 159 expectWorkload: true, 160 messageCheck: status.MessageWaitForContainer, 161 }, 162 { 163 cloudContainerStatus: status.StatusInfo{}, 164 unitStatus: status.StatusInfo{Status: status.Active, Message: "running"}, 165 expectWorkload: false, 166 messageCheck: "running", 167 }, 168 { 169 cloudContainerStatus: status.StatusInfo{}, 170 unitStatus: status.StatusInfo{Status: status.Waiting, Message: status.MessageInitializingAgent}, 171 expectWorkload: false, 172 messageCheck: status.MessageInitializingAgent, 173 }, 174 } 175 176 for i, check := range checks { 177 c.Logf("Check %d", i) 178 c.Assert(status.UnitDisplayStatus(check.unitStatus, check.cloudContainerStatus, check.expectWorkload).Message, gc.Equals, check.messageCheck) 179 } 180 } 181 182 func (s *UnitCloudStatusSuite) TestApplicatoinOpeartorStatusChoice(c *gc.C) { 183 184 var checks = []struct { 185 operatorStatus status.StatusInfo 186 appStatus status.StatusInfo 187 expectWorkload bool 188 messageCheck string 189 }{ 190 { 191 operatorStatus: status.StatusInfo{ 192 Status: status.Terminated, 193 Message: "operator", 194 }, 195 appStatus: status.StatusInfo{ 196 Status: status.Active, 197 Message: "unit", 198 }, 199 expectWorkload: true, 200 messageCheck: "operator", 201 }, 202 { 203 operatorStatus: status.StatusInfo{ 204 Status: status.Error, 205 Message: "operator", 206 }, 207 appStatus: status.StatusInfo{ 208 Status: status.Active, 209 Message: "unit", 210 }, 211 expectWorkload: true, 212 messageCheck: "operator", 213 }, 214 { 215 operatorStatus: status.StatusInfo{ 216 Status: status.Allocating, 217 Message: "operator", 218 }, 219 appStatus: status.StatusInfo{ 220 Status: status.Active, 221 Message: "unit", 222 }, 223 expectWorkload: true, 224 messageCheck: "operator", 225 }, 226 { 227 operatorStatus: status.StatusInfo{ 228 Status: status.Unknown, 229 Message: "operator", 230 }, 231 appStatus: status.StatusInfo{ 232 Status: status.Active, 233 Message: "unit", 234 }, 235 expectWorkload: true, 236 messageCheck: "operator", 237 }, 238 { 239 operatorStatus: status.StatusInfo{ 240 Status: status.Running, 241 Message: "operator", 242 }, 243 appStatus: status.StatusInfo{ 244 Status: status.Active, 245 Message: "unit", 246 }, 247 expectWorkload: true, 248 messageCheck: "unit", 249 }, 250 { 251 operatorStatus: status.StatusInfo{ 252 Status: status.Active, 253 Message: "operator", 254 }, 255 appStatus: status.StatusInfo{ 256 Status: status.Blocked, 257 Message: "unit", 258 }, 259 expectWorkload: true, 260 messageCheck: "unit", 261 }, 262 { 263 operatorStatus: status.StatusInfo{ 264 Status: status.Terminated, 265 Message: "operator", 266 }, 267 appStatus: status.StatusInfo{ 268 Status: status.Terminated, 269 Message: "unit", 270 }, 271 expectWorkload: true, 272 messageCheck: "unit", 273 }, 274 { 275 operatorStatus: status.StatusInfo{ 276 Status: status.Waiting, 277 Message: "operator", 278 }, 279 appStatus: status.StatusInfo{ 280 Status: status.Waiting, 281 Message: "unit", 282 }, 283 expectWorkload: false, 284 messageCheck: "installing agent", 285 }, 286 { 287 operatorStatus: status.StatusInfo{ 288 Status: status.Error, 289 Message: "operator", 290 }, 291 appStatus: status.StatusInfo{ 292 Status: status.Waiting, 293 Message: "unit", 294 }, 295 expectWorkload: false, 296 messageCheck: "operator", 297 }, 298 } 299 300 for i, check := range checks { 301 c.Logf("Check %d", i) 302 c.Assert(status.ApplicationDisplayStatus(check.appStatus, check.operatorStatus, check.expectWorkload).Message, gc.Equals, check.messageCheck) 303 } 304 }