# Test that wait times while upgrading from older versions is reduced
# in local runs.

mixed-version-test predecessors=(22.2.3, 23.1.4, 23.2.0) num_upgrades=3 minimum_supported_version=v23.1.0 is_local=true
----
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
----
Seed:               12345
Upgrades:           v22.2.3 → v23.1.4 → v23.2.0 → <current>
Deployment mode:    system-only
Plan:
├── install fixtures for version "v22.2.3" (1)
├── start cluster at version "v22.2.3" (2)
├── wait for all nodes (:1-4) to acknowledge cluster version '22.2' on system tenant (3)
├── upgrade cluster from "v22.2.3" to "v23.1.4"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (4)
│   ├── upgrade nodes :1-4 from "v22.2.3" to "v23.1.4"
│   │   ├── restart node 4 with binary version v23.1.4 (5)
│   │   ├── restart node 1 with binary version v23.1.4 (6)
│   │   ├── wait for 30s (7)
│   │   ├── restart node 2 with binary version v23.1.4 (8)
│   │   └── restart node 3 with binary version v23.1.4 (9)
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (10)
│   └── wait for all nodes (:1-4) to acknowledge cluster version '23.1' on system tenant (11)
├── run "initialize bank workload" (12)
├── start background hooks concurrently
│   ├── run "bank workload", after 500ms delay (13)
│   └── run "csv server", after 18s delay (14)
├── upgrade cluster from "v23.1.4" to "v23.2.0"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (15)
│   ├── upgrade nodes :1-4 from "v23.1.4" to "v23.2.0"
│   │   ├── restart node 3 with binary version v23.2.0 (16)
│   │   ├── restart node 1 with binary version v23.2.0 (17)
│   │   ├── restart node 4 with binary version v23.2.0 (18)
│   │   ├── run "mixed-version 1" (19)
│   │   ├── restart node 2 with binary version v23.2.0 (20)
│   │   └── run "mixed-version 2" (21)
│   ├── downgrade nodes :1-4 from "v23.2.0" to "v23.1.4"
│   │   ├── restart node 2 with binary version v23.1.4 (22)
│   │   ├── run mixed-version hooks concurrently
│   │   │   ├── run "mixed-version 1", after 500ms delay (23)
│   │   │   └── run "mixed-version 2", after 10ms delay (24)
│   │   ├── restart node 4 with binary version v23.1.4 (25)
│   │   ├── restart node 1 with binary version v23.1.4 (26)
│   │   └── restart node 3 with binary version v23.1.4 (27)
│   ├── upgrade nodes :1-4 from "v23.1.4" to "v23.2.0"
│   │   ├── restart node 1 with binary version v23.2.0 (28)
│   │   ├── run "mixed-version 1" (29)
│   │   ├── restart node 4 with binary version v23.2.0 (30)
│   │   ├── run "mixed-version 2" (31)
│   │   ├── restart node 2 with binary version v23.2.0 (32)
│   │   └── restart node 3 with binary version v23.2.0 (33)
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (34)
│   ├── wait for all nodes (:1-4) to acknowledge cluster version '23.2' on system tenant (35)
│   └── run "validate upgrade" (36)
└── upgrade cluster from "v23.2.0" to "<current>"
   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (37)
   ├── upgrade nodes :1-4 from "v23.2.0" to "<current>"
   │   ├── restart node 2 with binary version <current> (38)
   │   ├── run "mixed-version 2" (39)
   │   ├── restart node 3 with binary version <current> (40)
   │   ├── run "mixed-version 1" (41)
   │   ├── restart node 1 with binary version <current> (42)
   │   └── restart node 4 with binary version <current> (43)
   ├── downgrade nodes :1-4 from "<current>" to "v23.2.0"
   │   ├── restart node 3 with binary version v23.2.0 (44)
   │   ├── run "mixed-version 1" (45)
   │   ├── restart node 2 with binary version v23.2.0 (46)
   │   ├── restart node 4 with binary version v23.2.0 (47)
   │   ├── run "mixed-version 2" (48)
   │   └── restart node 1 with binary version v23.2.0 (49)
   ├── upgrade nodes :1-4 from "v23.2.0" to "<current>"
   │   ├── restart node 3 with binary version <current> (50)
   │   ├── run "mixed-version 1" (51)
   │   ├── restart node 4 with binary version <current> (52)
   │   ├── run "mixed-version 2" (53)
   │   ├── restart node 2 with binary version <current> (54)
   │   └── restart node 1 with binary version <current> (55)
   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (56)
   ├── wait for all nodes (:1-4) to acknowledge cluster version <current> on system tenant (57)
   └── run "validate upgrade" (58)
