# Tests the behaviour of the `cluster_setting[*]` mutator.

add-mutators cluster_setting[test_cluster_setting]
----
ok

mixed-version-test predecessors=(22.2.3, 23.1.10, 23.2.4) num_upgrades=3 mutator_probabilities=(cluster_setting[test_cluster_setting], 1)
----
ok

in-mixed-version name=(my mixed-version feature)
----
ok

on-startup name=(do something)
----
ok

plan
----
Seed:               12345
Upgrades:           v22.2.3 → v23.1.10 → v23.2.4 → <current>
Deployment mode:    system-only
Mutators:           cluster_setting[test_cluster_setting]
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)
├── run "do something" (4)
├── upgrade cluster from "v22.2.3" to "v23.1.10"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (5)
│   ├── upgrade nodes :1-4 from "v22.2.3" to "v23.1.10"
│   │   ├── restart node 1 with binary version v23.1.10 (6)
│   │   ├── restart node 3 with binary version v23.1.10 (7)
│   │   ├── run "my mixed-version feature" (8)
│   │   ├── restart node 2 with binary version v23.1.10 (9)
│   │   └── restart node 4 with binary version v23.1.10 (10)
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (11)
│   ├── run "my mixed-version feature" (12)
│   └── wait for all nodes (:1-4) to acknowledge cluster version '23.1' on system tenant (13)
├── upgrade cluster from "v23.1.10" to "v23.2.4"
│   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (14)
│   ├── upgrade nodes :1-4 from "v23.1.10" to "v23.2.4"
│   │   ├── restart node 4 with binary version v23.2.4 (15)
│   │   ├── restart node 3 with binary version v23.2.4 (16)
│   │   ├── set cluster setting "test_cluster_setting" to '1' on system tenant (17)
│   │   ├── run "my mixed-version feature" (18)
│   │   ├── restart node 2 with binary version v23.2.4 (19)
│   │   └── restart node 1 with binary version v23.2.4 (20)
│   ├── set cluster setting "test_cluster_setting" to '3' on system tenant (21)
│   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (22)
│   ├── run "my mixed-version feature" (23)
│   ├── reset cluster setting "test_cluster_setting" on system tenant (24)
│   └── wait for all nodes (:1-4) to acknowledge cluster version '23.2' on system tenant (25)
└── upgrade cluster from "v23.2.4" to "<current>"
   ├── prevent auto-upgrades on system tenant by setting `preserve_downgrade_option` (26)
   ├── upgrade nodes :1-4 from "v23.2.4" to "<current>"
   │   ├── restart node 3 with binary version <current> (27)
   │   ├── restart node 1 with binary version <current> (28)
   │   ├── run "my mixed-version feature" (29)
   │   ├── set cluster setting "test_cluster_setting" to '2' on system tenant (30)
   │   ├── restart node 4 with binary version <current> (31)
   │   └── restart node 2 with binary version <current> (32)
   ├── downgrade nodes :1-4 from "<current>" to "v23.2.4"
   │   ├── restart node 1 with binary version v23.2.4 (33)
   │   ├── restart node 3 with binary version v23.2.4 (34)
   │   ├── run following steps concurrently
   │   │   ├── run "my mixed-version feature", after 0s delay (35)
   │   │   └── set cluster setting "test_cluster_setting" to '3' on system tenant, after 100ms delay (36)
   │   ├── restart node 2 with binary version v23.2.4 (37)
   │   └── restart node 4 with binary version v23.2.4 (38)
   ├── upgrade nodes :1-4 from "v23.2.4" to "<current>"
   │   ├── restart node 1 with binary version <current> (39)
   │   ├── restart node 3 with binary version <current> (40)
   │   ├── restart node 2 with binary version <current> (41)
   │   ├── run "my mixed-version feature" (42)
   │   ├── reset cluster setting "test_cluster_setting" on system tenant (43)
   │   └── restart node 4 with binary version <current> (44)
   ├── allow upgrade to happen on system tenant by resetting `preserve_downgrade_option` (45)
   ├── set cluster setting "test_cluster_setting" to '1' on system tenant (46)
   ├── reset cluster setting "test_cluster_setting" on system tenant (47)
   └── wait for all nodes (:1-4) to acknowledge cluster version <current> on system tenant (48)
