# Test that steps have the expected upgrade stage associated to their
# context.

mixed-version-test predecessors=(21.2.11, 22.1.8, 22.2.3, 23.1.4, 23.2.0) num_upgrades=5
----
ok

in-mixed-version name=(mixed-version 1)
----
ok

in-mixed-version name=(mixed-version 2)
----
ok

workload name=bank
----
ok

background-command name=(csv server)
----
ok

after-upgrade-finalized name=(validate upgrade)
----
ok

plan debug=true
----
Seed:               12345
Upgrades:           v21.2.11 → v22.1.8 → v22.2.3 → v23.1.4 → v23.2.0 → <current>
Deployment mode:    system-only
Plan:
├── install fixtures for version "v21.2.11" (1) [stage=system-setup]
├── start cluster at version "v21.2.11" (2) [stage=system-setup]
├── wait for all nodes (:1-4) to acknowledge cluster version '21.2' on system tenant (3) [stage=system-setup]
├── upgrade cluster from "v21.2.11" to "v22.1.8"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (4) [stage=init]
│   ├── upgrade nodes :1-4 from "v21.2.11" to "v22.1.8"
│   │   ├── restart node 3 with binary version v22.1.8 (5) [stage=last-upgrade]
│   │   ├── restart node 1 with binary version v22.1.8 (6) [stage=last-upgrade]
│   │   ├── wait for 10m0s (7) [stage=last-upgrade]
│   │   ├── restart node 4 with binary version v22.1.8 (8) [stage=last-upgrade]
│   │   └── restart node 2 with binary version v22.1.8 (9) [stage=last-upgrade]
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (10) [stage=running-upgrade-migrations,finalizing]
│   └── wait for all nodes (:1-4) to acknowledge cluster version '22.1' on system tenant (11) [stage=running-upgrade-migrations,finalizing]
├── upgrade cluster from "v22.1.8" to "v22.2.3"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (12) [stage=init]
│   ├── upgrade nodes :1-4 from "v22.1.8" to "v22.2.3"
│   │   ├── restart node 1 with binary version v22.2.3 (13) [stage=last-upgrade]
│   │   ├── restart node 3 with binary version v22.2.3 (14) [stage=last-upgrade]
│   │   ├── restart node 4 with binary version v22.2.3 (15) [stage=last-upgrade]
│   │   └── restart node 2 with binary version v22.2.3 (16) [stage=last-upgrade]
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (17) [stage=running-upgrade-migrations,finalizing]
│   └── wait for all nodes (:1-4) to acknowledge cluster version '22.2' on system tenant (18) [stage=running-upgrade-migrations,finalizing]
├── run "initialize bank workload" (19) [stage=on-startup]
├── start background hooks concurrently
│   ├── run "bank workload", after 30s delay (20) [stage=background]
│   └── run "csv server", after 100ms delay (21) [stage=background]
├── upgrade cluster from "v22.2.3" to "v23.1.4"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (22) [stage=init]
│   ├── upgrade nodes :1-4 from "v22.2.3" to "v23.1.4"
│   │   ├── restart node 1 with binary version v23.1.4 (23) [stage=last-upgrade]
│   │   ├── restart node 4 with binary version v23.1.4 (24) [stage=last-upgrade]
│   │   ├── restart node 2 with binary version v23.1.4 (25) [stage=last-upgrade]
│   │   ├── run "mixed-version 1" (26) [stage=last-upgrade]
│   │   ├── restart node 3 with binary version v23.1.4 (27) [stage=last-upgrade]
│   │   └── run "mixed-version 2" (28) [stage=last-upgrade]
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (29) [stage=running-upgrade-migrations,finalizing]
│   ├── run "mixed-version 2" (30) [stage=running-upgrade-migrations,finalizing]
│   ├── wait for all nodes (:1-4) to acknowledge cluster version '23.1' on system tenant (31) [stage=running-upgrade-migrations,finalizing]
│   └── run "validate upgrade" (32) [stage=after-upgrade-finished]
├── upgrade cluster from "v23.1.4" to "v23.2.0"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (33) [stage=init]
│   ├── upgrade nodes :1-4 from "v23.1.4" to "v23.2.0"
│   │   ├── restart node 3 with binary version v23.2.0 (34) [stage=last-upgrade]
│   │   ├── restart node 2 with binary version v23.2.0 (35) [stage=last-upgrade]
│   │   ├── restart node 1 with binary version v23.2.0 (36) [stage=last-upgrade]
│   │   ├── run "mixed-version 1" (37) [stage=last-upgrade]
│   │   ├── restart node 4 with binary version v23.2.0 (38) [stage=last-upgrade]
│   │   └── run "mixed-version 2" (39) [stage=last-upgrade]
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (40) [stage=running-upgrade-migrations,finalizing]
│   ├── run mixed-version hooks concurrently
│   │   ├── run "mixed-version 1", after 0s delay (41) [stage=running-upgrade-migrations,finalizing]
│   │   └── run "mixed-version 2", after 5s delay (42) [stage=running-upgrade-migrations,finalizing]
│   ├── wait for all nodes (:1-4) to acknowledge cluster version '23.2' on system tenant (43) [stage=running-upgrade-migrations,finalizing]
│   └── run "validate upgrade" (44) [stage=after-upgrade-finished]
└── upgrade cluster from "v23.2.0" to "<current>"
   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (45) [stage=init]
   ├── upgrade nodes :1-4 from "v23.2.0" to "<current>"
   │   ├── restart node 3 with binary version <current> (46) [stage=temporary-upgrade]
   │   ├── run "mixed-version 2" (47) [stage=temporary-upgrade]
   │   ├── restart node 2 with binary version <current> (48) [stage=temporary-upgrade]
   │   ├── restart node 4 with binary version <current> (49) [stage=temporary-upgrade]
   │   ├── run "mixed-version 1" (50) [stage=temporary-upgrade]
   │   └── restart node 1 with binary version <current> (51) [stage=temporary-upgrade]
   ├── downgrade nodes :1-4 from "<current>" to "v23.2.0"
   │   ├── restart node 3 with binary version v23.2.0 (52) [stage=rollback-upgrade]
   │   ├── restart node 4 with binary version v23.2.0 (53) [stage=rollback-upgrade]
   │   ├── run "mixed-version 2" (54) [stage=rollback-upgrade]
   │   ├── restart node 2 with binary version v23.2.0 (55) [stage=rollback-upgrade]
   │   ├── run "mixed-version 1" (56) [stage=rollback-upgrade]
   │   └── restart node 1 with binary version v23.2.0 (57) [stage=rollback-upgrade]
   ├── upgrade nodes :1-4 from "v23.2.0" to "<current>"
   │   ├── restart node 1 with binary version <current> (58) [stage=last-upgrade]
   │   ├── restart node 3 with binary version <current> (59) [stage=last-upgrade]
   │   ├── restart node 2 with binary version <current> (60) [stage=last-upgrade]
   │   ├── run mixed-version hooks concurrently
   │   │   ├── run "mixed-version 1", after 5s delay (61) [stage=last-upgrade]
   │   │   └── run "mixed-version 2", after 5s delay (62) [stage=last-upgrade]
   │   └── restart node 4 with binary version <current> (63) [stage=last-upgrade]
   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (64) [stage=running-upgrade-migrations,finalizing]
   ├── wait for all nodes (:1-4) to acknowledge cluster version <current> on system tenant (65) [stage=running-upgrade-migrations,finalizing]
   └── run "validate upgrade" (66) [stage=after-upgrade-finished]
