github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/systemd/generate/pods_test.go (about) 1 package generate 2 3 import ( 4 "testing" 5 6 "github.com/hanks177/podman/v4/pkg/domain/entities" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestSetPodExitPolicy(t *testing.T) { 11 tests := []struct { 12 input, expected []string 13 }{ 14 { 15 []string{"podman", "pod", "create"}, 16 []string{"podman", "pod", "create", "--exit-policy=stop"}, 17 }, 18 { 19 []string{"podman", "pod", "create", "--exit-policy=continue"}, 20 []string{"podman", "pod", "create", "--exit-policy=continue"}, 21 }, 22 { 23 []string{"podman", "pod", "create", "--exit-policy", "continue"}, 24 []string{"podman", "pod", "create", "--exit-policy", "continue"}, 25 }, 26 } 27 for _, test := range tests { 28 assert.Equalf(t, test.expected, setPodExitPolicy(test.input), "%v", test.input) 29 } 30 } 31 32 func TestValidateRestartPolicyPod(t *testing.T) { 33 type podInfo struct { 34 restart string 35 } 36 tests := []struct { 37 name string 38 podInfo podInfo 39 wantErr bool 40 }{ 41 {"good-on", podInfo{restart: "no"}, false}, 42 {"good-on-success", podInfo{restart: "on-success"}, false}, 43 {"good-on-failure", podInfo{restart: "on-failure"}, false}, 44 {"good-on-abnormal", podInfo{restart: "on-abnormal"}, false}, 45 {"good-on-watchdog", podInfo{restart: "on-watchdog"}, false}, 46 {"good-on-abort", podInfo{restart: "on-abort"}, false}, 47 {"good-always", podInfo{restart: "always"}, false}, 48 {"fail", podInfo{restart: "foobar"}, true}, 49 {"failblank", podInfo{restart: ""}, true}, 50 } 51 for _, tt := range tests { 52 test := tt 53 t.Run(tt.name, func(t *testing.T) { 54 if err := validateRestartPolicy(test.podInfo.restart); (err != nil) != test.wantErr { 55 t.Errorf("ValidateRestartPolicy() error = %v, wantErr %v", err, test.wantErr) 56 } 57 }) 58 } 59 } 60 61 func TestCreatePodSystemdUnit(t *testing.T) { 62 serviceInfo := `# pod-123abc.service 63 ` 64 headerInfo := `# autogenerated by Podman CI 65 ` 66 podContent := ` 67 [Unit] 68 Description=Podman pod-123abc.service 69 Documentation=man:podman-generate-systemd(1) 70 Wants=network-online.target 71 After=network-online.target 72 RequiresMountsFor=/var/run/containers/storage 73 Requires=container-1.service container-2.service 74 Before=container-1.service container-2.service 75 76 [Service] 77 Environment=PODMAN_SYSTEMD_UNIT=%n 78 Restart=on-failure 79 TimeoutStopSec=102 80 ExecStart=/usr/bin/podman start jadda-jadda-infra 81 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 82 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 83 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 84 Type=forking 85 86 [Install] 87 WantedBy=default.target 88 ` 89 podGood := serviceInfo + headerInfo + podContent 90 podGoodNoHeaderInfo := serviceInfo + podContent 91 92 podGoodWithEmptyPrefix := `# 123abc.service 93 # autogenerated by Podman CI 94 95 [Unit] 96 Description=Podman 123abc.service 97 Documentation=man:podman-generate-systemd(1) 98 Wants=network-online.target 99 After=network-online.target 100 RequiresMountsFor=/var/run/containers/storage 101 Requires=container-1.service container-2.service 102 Before=container-1.service container-2.service 103 104 [Service] 105 Environment=PODMAN_SYSTEMD_UNIT=%n 106 Restart=on-failure 107 TimeoutStopSec=102 108 ExecStart=/usr/bin/podman start jadda-jadda-infra 109 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 110 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 111 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 112 Type=forking 113 114 [Install] 115 WantedBy=default.target 116 ` 117 118 podGoodCustomWants := `# pod-123abc.service 119 # autogenerated by Podman CI 120 121 [Unit] 122 Description=Podman pod-123abc.service 123 Documentation=man:podman-generate-systemd(1) 124 Wants=network-online.target 125 After=network-online.target 126 RequiresMountsFor=/var/run/containers/storage 127 Requires=container-1.service container-2.service 128 Before=container-1.service container-2.service 129 130 # User-defined dependencies 131 Wants=a.service b.service c.target 132 133 [Service] 134 Environment=PODMAN_SYSTEMD_UNIT=%n 135 Restart=on-failure 136 TimeoutStopSec=102 137 ExecStart=/usr/bin/podman start jadda-jadda-infra 138 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 139 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 140 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 141 Type=forking 142 143 [Install] 144 WantedBy=default.target 145 ` 146 podGoodCustomAfter := `# pod-123abc.service 147 # autogenerated by Podman CI 148 149 [Unit] 150 Description=Podman pod-123abc.service 151 Documentation=man:podman-generate-systemd(1) 152 Wants=network-online.target 153 After=network-online.target 154 RequiresMountsFor=/var/run/containers/storage 155 Requires=container-1.service container-2.service 156 Before=container-1.service container-2.service 157 158 # User-defined dependencies 159 After=a.service b.service c.target 160 161 [Service] 162 Environment=PODMAN_SYSTEMD_UNIT=%n 163 Restart=on-failure 164 TimeoutStopSec=102 165 ExecStart=/usr/bin/podman start jadda-jadda-infra 166 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 167 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 168 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 169 Type=forking 170 171 [Install] 172 WantedBy=default.target 173 ` 174 podGoodCustomRequires := `# pod-123abc.service 175 # autogenerated by Podman CI 176 177 [Unit] 178 Description=Podman pod-123abc.service 179 Documentation=man:podman-generate-systemd(1) 180 Wants=network-online.target 181 After=network-online.target 182 RequiresMountsFor=/var/run/containers/storage 183 Requires=container-1.service container-2.service 184 Before=container-1.service container-2.service 185 186 # User-defined dependencies 187 Requires=a.service b.service c.target 188 189 [Service] 190 Environment=PODMAN_SYSTEMD_UNIT=%n 191 Restart=on-failure 192 TimeoutStopSec=102 193 ExecStart=/usr/bin/podman start jadda-jadda-infra 194 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 195 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 196 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 197 Type=forking 198 199 [Install] 200 WantedBy=default.target 201 ` 202 podGoodCustomDependencies := `# pod-123abc.service 203 # autogenerated by Podman CI 204 205 [Unit] 206 Description=Podman pod-123abc.service 207 Documentation=man:podman-generate-systemd(1) 208 Wants=network-online.target 209 After=network-online.target 210 RequiresMountsFor=/var/run/containers/storage 211 Requires=container-1.service container-2.service 212 Before=container-1.service container-2.service 213 214 # User-defined dependencies 215 Wants=a.service b.service c.target 216 After=a.service b.service c.target 217 Requires=a.service b.service c.target 218 219 [Service] 220 Environment=PODMAN_SYSTEMD_UNIT=%n 221 Restart=on-failure 222 TimeoutStopSec=102 223 ExecStart=/usr/bin/podman start jadda-jadda-infra 224 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 225 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 226 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 227 Type=forking 228 229 [Install] 230 WantedBy=default.target 231 ` 232 233 podGoodRestartSec := `# pod-123abc.service 234 # autogenerated by Podman CI 235 236 [Unit] 237 Description=Podman pod-123abc.service 238 Documentation=man:podman-generate-systemd(1) 239 Wants=network-online.target 240 After=network-online.target 241 RequiresMountsFor=/var/run/containers/storage 242 Requires=container-1.service container-2.service 243 Before=container-1.service container-2.service 244 245 [Service] 246 Environment=PODMAN_SYSTEMD_UNIT=%n 247 Restart=on-failure 248 RestartSec=15 249 TimeoutStopSec=102 250 ExecStart=/usr/bin/podman start jadda-jadda-infra 251 ExecStop=/usr/bin/podman stop -t 42 jadda-jadda-infra 252 ExecStopPost=/usr/bin/podman stop -t 42 jadda-jadda-infra 253 PIDFile=/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid 254 Type=forking 255 256 [Install] 257 WantedBy=default.target 258 ` 259 260 podGoodNamedNew := `# pod-123abc.service 261 # autogenerated by Podman CI 262 263 [Unit] 264 Description=Podman pod-123abc.service 265 Documentation=man:podman-generate-systemd(1) 266 Wants=network-online.target 267 After=network-online.target 268 RequiresMountsFor=/var/run/containers/storage 269 Requires=container-1.service container-2.service 270 Before=container-1.service container-2.service 271 272 [Service] 273 Environment=PODMAN_SYSTEMD_UNIT=%n 274 Restart=on-failure 275 TimeoutStopSec=70 276 ExecStartPre=/bin/rm -f %t/pod-123abc.pid %t/pod-123abc.pod-id 277 ExecStartPre=/usr/bin/podman pod create --infra-conmon-pidfile %t/pod-123abc.pid --pod-id-file %t/pod-123abc.pod-id --name foo "bar=arg with space" --replace --exit-policy=stop 278 ExecStart=/usr/bin/podman pod start --pod-id-file %t/pod-123abc.pod-id 279 ExecStop=/usr/bin/podman pod stop --ignore --pod-id-file %t/pod-123abc.pod-id -t 10 280 ExecStopPost=/usr/bin/podman pod rm --ignore -f --pod-id-file %t/pod-123abc.pod-id 281 PIDFile=%t/pod-123abc.pid 282 Type=forking 283 284 [Install] 285 WantedBy=default.target 286 ` 287 288 podGoodNamedNewWithRootArgs := `# pod-123abc.service 289 # autogenerated by Podman CI 290 291 [Unit] 292 Description=Podman pod-123abc.service 293 Documentation=man:podman-generate-systemd(1) 294 Wants=network-online.target 295 After=network-online.target 296 RequiresMountsFor=/var/run/containers/storage 297 Requires=container-1.service container-2.service 298 Before=container-1.service container-2.service 299 300 [Service] 301 Environment=PODMAN_SYSTEMD_UNIT=%n 302 Restart=on-failure 303 TimeoutStopSec=70 304 ExecStartPre=/bin/rm -f %t/pod-123abc.pid %t/pod-123abc.pod-id 305 ExecStartPre=/usr/bin/podman --events-backend none --runroot /root pod create --infra-conmon-pidfile %t/pod-123abc.pid --pod-id-file %t/pod-123abc.pod-id --name foo "bar=arg with space" --replace --exit-policy=stop 306 ExecStart=/usr/bin/podman --events-backend none --runroot /root pod start --pod-id-file %t/pod-123abc.pod-id 307 ExecStop=/usr/bin/podman --events-backend none --runroot /root pod stop --ignore --pod-id-file %t/pod-123abc.pod-id -t 10 308 ExecStopPost=/usr/bin/podman --events-backend none --runroot /root pod rm --ignore -f --pod-id-file %t/pod-123abc.pod-id 309 PIDFile=%t/pod-123abc.pid 310 Type=forking 311 312 [Install] 313 WantedBy=default.target 314 ` 315 316 podGoodNamedNewWithReplaceFalse := `# pod-123abc.service 317 # autogenerated by Podman CI 318 319 [Unit] 320 Description=Podman pod-123abc.service 321 Documentation=man:podman-generate-systemd(1) 322 Wants=network-online.target 323 After=network-online.target 324 RequiresMountsFor=/var/run/containers/storage 325 Requires=container-1.service container-2.service 326 Before=container-1.service container-2.service 327 328 [Service] 329 Environment=PODMAN_SYSTEMD_UNIT=%n 330 Restart=on-failure 331 TimeoutStopSec=70 332 ExecStartPre=/bin/rm -f %t/pod-123abc.pid %t/pod-123abc.pod-id 333 ExecStartPre=/usr/bin/podman pod create --infra-conmon-pidfile %t/pod-123abc.pid --pod-id-file %t/pod-123abc.pod-id --name foo --replace --exit-policy=stop 334 ExecStart=/usr/bin/podman pod start --pod-id-file %t/pod-123abc.pod-id 335 ExecStop=/usr/bin/podman pod stop --ignore --pod-id-file %t/pod-123abc.pod-id -t 10 336 ExecStopPost=/usr/bin/podman pod rm --ignore -f --pod-id-file %t/pod-123abc.pod-id 337 PIDFile=%t/pod-123abc.pid 338 Type=forking 339 340 [Install] 341 WantedBy=default.target 342 ` 343 344 podNewLabelWithCurlyBraces := `# pod-123abc.service 345 # autogenerated by Podman CI 346 347 [Unit] 348 Description=Podman pod-123abc.service 349 Documentation=man:podman-generate-systemd(1) 350 Wants=network-online.target 351 After=network-online.target 352 RequiresMountsFor=/var/run/containers/storage 353 Requires=container-1.service container-2.service 354 Before=container-1.service container-2.service 355 356 [Service] 357 Environment=PODMAN_SYSTEMD_UNIT=%n 358 Restart=on-failure 359 TimeoutStopSec=70 360 ExecStartPre=/bin/rm -f %t/pod-123abc.pid %t/pod-123abc.pod-id 361 ExecStartPre=/usr/bin/podman pod create --infra-conmon-pidfile %t/pod-123abc.pid --pod-id-file %t/pod-123abc.pod-id --name foo --label key={{someval}} --exit-policy=continue --replace 362 ExecStart=/usr/bin/podman pod start --pod-id-file %t/pod-123abc.pod-id 363 ExecStop=/usr/bin/podman pod stop --ignore --pod-id-file %t/pod-123abc.pod-id -t 10 364 ExecStopPost=/usr/bin/podman pod rm --ignore -f --pod-id-file %t/pod-123abc.pod-id 365 PIDFile=%t/pod-123abc.pid 366 Type=forking 367 368 [Install] 369 WantedBy=default.target 370 ` 371 372 tests := []struct { 373 name string 374 info podInfo 375 want string 376 new bool 377 noHeader bool 378 wantErr bool 379 }{ 380 {"pod", 381 podInfo{ 382 Executable: "/usr/bin/podman", 383 ServiceName: "pod-123abc", 384 InfraNameOrID: "jadda-jadda-infra", 385 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 386 StopTimeout: 42, 387 PodmanVersion: "CI", 388 GraphRoot: "/var/lib/containers/storage", 389 RunRoot: "/var/run/containers/storage", 390 RequiredServices: []string{"container-1", "container-2"}, 391 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "bar=arg with space"}, 392 }, 393 podGood, 394 false, 395 false, 396 false, 397 }, 398 {"pod", 399 podInfo{ 400 Executable: "/usr/bin/podman", 401 ServiceName: "pod-123abc", 402 InfraNameOrID: "jadda-jadda-infra", 403 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 404 StopTimeout: 42, 405 PodmanVersion: "CI", 406 GraphRoot: "/var/lib/containers/storage", 407 RunRoot: "/var/run/containers/storage", 408 RequiredServices: []string{"container-1", "container-2"}, 409 Wants: []string{"a.service", "b.service", "c.target"}, 410 CreateCommand: []string{ 411 "podman", "pod", "create", "--name", "foo", "--wants", "a.service", 412 "--wants", "b.service", "--wants", "c.target", "bar=arg with space"}, 413 }, 414 podGoodCustomWants, 415 false, 416 false, 417 false, 418 }, 419 {"pod", 420 podInfo{ 421 Executable: "/usr/bin/podman", 422 ServiceName: "pod-123abc", 423 InfraNameOrID: "jadda-jadda-infra", 424 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 425 StopTimeout: 42, 426 PodmanVersion: "CI", 427 GraphRoot: "/var/lib/containers/storage", 428 RunRoot: "/var/run/containers/storage", 429 RequiredServices: []string{"container-1", "container-2"}, 430 After: []string{"a.service", "b.service", "c.target"}, 431 CreateCommand: []string{ 432 "podman", "pod", "create", "--name", "foo", "--after", "a.service", 433 "--after", "b.service", "--after", "c.target", "bar=arg with space"}, 434 }, 435 podGoodCustomAfter, 436 false, 437 false, 438 false, 439 }, 440 {"pod", 441 podInfo{ 442 Executable: "/usr/bin/podman", 443 ServiceName: "pod-123abc", 444 InfraNameOrID: "jadda-jadda-infra", 445 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 446 StopTimeout: 42, 447 PodmanVersion: "CI", 448 GraphRoot: "/var/lib/containers/storage", 449 RunRoot: "/var/run/containers/storage", 450 RequiredServices: []string{"container-1", "container-2"}, 451 Requires: []string{"a.service", "b.service", "c.target"}, 452 CreateCommand: []string{ 453 "podman", "pod", "create", "--name", "foo", "--requires", "a.service", 454 "--requires", "b.service", "--requires", "c.target", "bar=arg with space"}, 455 }, 456 podGoodCustomRequires, 457 false, 458 false, 459 false, 460 }, 461 {"pod", 462 podInfo{ 463 Executable: "/usr/bin/podman", 464 ServiceName: "pod-123abc", 465 InfraNameOrID: "jadda-jadda-infra", 466 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 467 StopTimeout: 42, 468 PodmanVersion: "CI", 469 GraphRoot: "/var/lib/containers/storage", 470 RunRoot: "/var/run/containers/storage", 471 RequiredServices: []string{"container-1", "container-2"}, 472 Wants: []string{"a.service", "b.service", "c.target"}, 473 After: []string{"a.service", "b.service", "c.target"}, 474 Requires: []string{"a.service", "b.service", "c.target"}, 475 CreateCommand: []string{ 476 "podman", "pod", "create", "--name", "foo", "--wants", "a.service", 477 "--wants", "b.service", "--wants", "c.target", "--after", "a.service", 478 "--after", "b.service", "--after", "c.target", "--requires", "a.service", 479 "--requires", "b.service", "--requires", "c.target", "bar=arg with space"}, 480 }, 481 podGoodCustomDependencies, 482 false, 483 false, 484 false, 485 }, 486 {"pod restartSec", 487 podInfo{ 488 Executable: "/usr/bin/podman", 489 ServiceName: "pod-123abc", 490 InfraNameOrID: "jadda-jadda-infra", 491 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 492 StopTimeout: 42, 493 PodmanVersion: "CI", 494 GraphRoot: "/var/lib/containers/storage", 495 RunRoot: "/var/run/containers/storage", 496 RequiredServices: []string{"container-1", "container-2"}, 497 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "bar=arg with space"}, 498 RestartSec: 15, 499 }, 500 podGoodRestartSec, 501 false, 502 false, 503 false, 504 }, 505 {"pod noHeader", 506 podInfo{ 507 Executable: "/usr/bin/podman", 508 ServiceName: "pod-123abc", 509 InfraNameOrID: "jadda-jadda-infra", 510 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 511 StopTimeout: 42, 512 PodmanVersion: "CI", 513 GraphRoot: "/var/lib/containers/storage", 514 RunRoot: "/var/run/containers/storage", 515 RequiredServices: []string{"container-1", "container-2"}, 516 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "bar=arg with space"}, 517 }, 518 podGoodNoHeaderInfo, 519 false, 520 true, 521 false, 522 }, 523 {"pod with root args", 524 podInfo{ 525 Executable: "/usr/bin/podman", 526 ServiceName: "pod-123abc", 527 InfraNameOrID: "jadda-jadda-infra", 528 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 529 StopTimeout: 42, 530 PodmanVersion: "CI", 531 GraphRoot: "/var/lib/containers/storage", 532 RunRoot: "/var/run/containers/storage", 533 RequiredServices: []string{"container-1", "container-2"}, 534 CreateCommand: []string{"podman", "--events-backend", "none", "--runroot", "/root", "pod", "create", "--name", "foo", "bar=arg with space"}, 535 }, 536 podGood, 537 false, 538 false, 539 false, 540 }, 541 {"pod --new", 542 podInfo{ 543 Executable: "/usr/bin/podman", 544 ServiceName: "pod-123abc", 545 InfraNameOrID: "jadda-jadda-infra", 546 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 547 StopTimeout: 10, 548 PodmanVersion: "CI", 549 GraphRoot: "/var/lib/containers/storage", 550 RunRoot: "/var/run/containers/storage", 551 RequiredServices: []string{"container-1", "container-2"}, 552 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "bar=arg with space"}, 553 }, 554 podGoodNamedNew, 555 true, 556 false, 557 false, 558 }, 559 {"pod --new with root args", 560 podInfo{ 561 Executable: "/usr/bin/podman", 562 ServiceName: "pod-123abc", 563 InfraNameOrID: "jadda-jadda-infra", 564 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 565 StopTimeout: 10, 566 PodmanVersion: "CI", 567 GraphRoot: "/var/lib/containers/storage", 568 RunRoot: "/var/run/containers/storage", 569 RequiredServices: []string{"container-1", "container-2"}, 570 CreateCommand: []string{"podman", "--events-backend", "none", "--runroot", "/root", "pod", "create", "--name", "foo", "bar=arg with space"}, 571 }, 572 podGoodNamedNewWithRootArgs, 573 true, 574 false, 575 false, 576 }, 577 {"pod --new with --replace=false", 578 podInfo{ 579 Executable: "/usr/bin/podman", 580 ServiceName: "pod-123abc", 581 InfraNameOrID: "jadda-jadda-infra", 582 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 583 StopTimeout: 10, 584 PodmanVersion: "CI", 585 GraphRoot: "/var/lib/containers/storage", 586 RunRoot: "/var/run/containers/storage", 587 RequiredServices: []string{"container-1", "container-2"}, 588 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "--replace=false"}, 589 }, 590 podGoodNamedNewWithReplaceFalse, 591 true, 592 false, 593 false, 594 }, 595 {"pod --new with double curly braces", 596 podInfo{ 597 Executable: "/usr/bin/podman", 598 ServiceName: "pod-123abc", 599 InfraNameOrID: "jadda-jadda-infra", 600 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 601 StopTimeout: 10, 602 PodmanVersion: "CI", 603 GraphRoot: "/var/lib/containers/storage", 604 RunRoot: "/var/run/containers/storage", 605 RequiredServices: []string{"container-1", "container-2"}, 606 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "--label", "key={{someval}}", "--exit-policy=continue"}, 607 }, 608 podNewLabelWithCurlyBraces, 609 true, 610 false, 611 false, 612 }, 613 {"pod --new with ID files", 614 podInfo{ 615 Executable: "/usr/bin/podman", 616 ServiceName: "pod-123abc", 617 InfraNameOrID: "jadda-jadda-infra", 618 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 619 StopTimeout: 10, 620 PodmanVersion: "CI", 621 GraphRoot: "/var/lib/containers/storage", 622 RunRoot: "/var/run/containers/storage", 623 RequiredServices: []string{"container-1", "container-2"}, 624 CreateCommand: []string{"podman", "pod", "create", "--infra-conmon-pidfile", "/tmp/pod-123abc.pid", "--pod-id-file", "/tmp/pod-123abc.pod-id", "--name", "foo", "bar=arg with space"}, 625 }, 626 podGoodNamedNew, 627 true, 628 false, 629 false, 630 }, 631 {"pod with empty pod-prefix", 632 podInfo{ 633 Executable: "/usr/bin/podman", 634 ServiceName: "123abc", 635 InfraNameOrID: "jadda-jadda-infra", 636 PIDFile: "/run/containers/storage/overlay-containers/639c53578af4d84b8800b4635fa4e680ee80fd67e0e6a2d4eea48d1e3230f401/userdata/conmon.pid", 637 StopTimeout: 42, 638 PodmanVersion: "CI", 639 GraphRoot: "/var/lib/containers/storage", 640 RunRoot: "/var/run/containers/storage", 641 RequiredServices: []string{"container-1", "container-2"}, 642 CreateCommand: []string{"podman", "pod", "create", "--name", "foo", "bar=arg with space"}, 643 }, 644 podGoodWithEmptyPrefix, 645 false, 646 false, 647 false, 648 }, 649 } 650 651 for _, tt := range tests { 652 test := tt 653 t.Run(tt.name, func(t *testing.T) { 654 opts := entities.GenerateSystemdOptions{ 655 New: test.new, 656 NoHeader: test.noHeader, 657 } 658 got, err := executePodTemplate(&test.info, opts) 659 if (err != nil) != test.wantErr { 660 t.Errorf("CreatePodSystemdUnit() error = \n%v, wantErr \n%v", err, test.wantErr) 661 return 662 } 663 assert.Equal(t, test.want, got) 664 }) 665 } 666 }