# Test that we are able to generate test plans for tests using a
# shared-process deployment mode.

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

on-startup name=(create tables)
----
ok

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

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

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