Skip to content

Commit 3eb6b15

Browse files
committed
improvement(treewide): Remove Nemesis, which filter by flags
LimitedChaosMonkey, GeminiNonDisruptiveChaosMonkey, GeminiChaosMonkey, NetworkMonkey, NonDisruptiveMonkey, DisruptiveMonkey, FreeTierSetMonkey
1 parent 0347b24 commit 3eb6b15

18 files changed

+53
-143
lines changed

Diff for: configurations/rf1-non-disruptive.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ stress_cmd:
66
- "cassandra-stress write cl=ONE duration=240m -schema 'replication(strategy=NetworkTopologyStrategy,replication_factor=1)' -mode cql3 native -rate threads=250 -col 'size=FIXED(1024) n=FIXED(1)' -pop seq=400200300..600200300 -log interval=15"
77
run_fullscan: ['{"mode": "table_and_aggregate", "ks_cf": "keyspace1.standard1", "interval": 5}']
88

9-
nemesis_class_name: 'NonDisruptiveMonkey'
9+
nemesis_class_name: 'SisyphusMonkey'
10+
nemesis_selector: "not disruptive"
1011
nemesis_seed: '24325345'
1112
user_prefix: 'longevity-200gb-48h-rf1'
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
nemesis_class_name: 'ZeroTokenSetMonkey'
1+
nemesis_class_name: 'SisyphusMonkey'
2+
nemesis_selector: "zero_node_changes"
23
use_zero_nodes: true
34
zero_token_instance_type_db: 'i4i.large'

Diff for: docs/configuration_options.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -962,7 +962,7 @@ More arguments to append to scylla-node-exporter command line
962962

963963
## **nemesis_class_name** / SCT_NEMESIS_CLASS_NAME
964964

965-
Nemesis class to use (possible types in sdcm.nemesis).<br>Next syntax supporting:<br>- nemesis_class_name: "NemesisName" Run one nemesis in single thread<br>- nemesis_class_name: "<NemesisName>:<num>" Run <NemesisName> in <num><br>parallel threads on different nodes. Ex.: "ChaosMonkey:2"<br>- nemesis_class_name: "<NemesisName1>:<num1> <NemesisName2>:<num2>" Run<br><NemesisName1> in <num1> parallel threads and <NemesisName2> in <num2><br>parallel threads. Ex.: "DisruptiveMonkey:1 NonDisruptiveMonkey:2"
965+
Nemesis class to use (possible types in sdcm.nemesis).<br>Next syntax supporting:<br>- nemesis_class_name: "NemesisName" Run one nemesis in single thread<br>- nemesis_class_name: "<NemesisName>:<num>" Run <NemesisName> in <num><br>parallel threads on different nodes. Ex.: "ChaosMonkey:2"<br>- nemesis_class_name: "<NemesisName1>:<num1> <NemesisName2>:<num2>" Run<br><NemesisName1> in <num1> parallel threads and <NemesisName2> in <num2><br>parallel threads. Ex.: "ScyllaOperatorBasicOperationsMonkey:1 NonDisruptiveMonkey:2"
966966

967967
**default:** NoOpMonkey
968968

Diff for: sdcm/nemesis.py

+3-120
Original file line numberDiff line numberDiff line change
@@ -5627,11 +5627,9 @@ def wrapper(*args, **kwargs): # pylint: disable=too-many-statements # noqa: PL
56275627

56285628

56295629
class SisyphusMonkey(Nemesis):
5630-
NEMESIS_SELECTOR = None
5631-
56325630
def __init__(self, *args, **kwargs):
56335631
super().__init__(*args, **kwargs)
5634-
self.build_list_of_disruptions_to_execute(nemesis_selector=self.nemesis_selector)
5632+
self.build_list_of_disruptions_to_execute()
56355633
self.shuffle_list_of_disruptions()
56365634

56375635
def disrupt(self):
@@ -6068,35 +6066,6 @@ def _random_disrupt(self):
60686066
self.execute_disrupt_method(bound_method)
60696067

60706068

6071-
class LimitedChaosMonkey(SisyphusMonkey):
6072-
# Limit the nemesis scope:
6073-
# - NodeToolCleanupMonkey
6074-
# - DecommissionMonkey
6075-
# - DrainerMonkey
6076-
# - RefreshMonkey
6077-
# - StopStartMonkey
6078-
# - MajorCompactionMonkey
6079-
# - ModifyTableMonkey
6080-
# - EnospcMonkey
6081-
# - StopWaitStartMonkey
6082-
# - HardRebootNodeMonkey
6083-
# - SoftRebootNodeMonkey
6084-
# - TruncateMonkey
6085-
# - TopPartitions
6086-
# - MgmtCorruptThenRepair
6087-
# - MgmtRepair
6088-
# - NoCorruptRepairMonkey
6089-
# - SnapshotOperations
6090-
# - AbortRepairMonkey
6091-
# - MgmtBackup
6092-
# - MgmtBackupSpecificKeyspaces
6093-
# - AddDropColumnMonkey
6094-
# - PauseLdapNemesis
6095-
# - ToggleLdapConfiguration
6096-
6097-
NEMESIS_SELECTOR = "limited"
6098-
6099-
61006069
CLOUD_LIMITED_CHAOS_MONKEY = ['disrupt_nodetool_cleanup',
61016070
'disrupt_nodetool_drain', 'disrupt_nodetool_refresh',
61026071
'disrupt_stop_start_scylla_server', 'disrupt_major_compaction',
@@ -6491,59 +6460,6 @@ def disrupt(self):
64916460
self.disrupt_network_start_stop_interface()
64926461

64936462

6494-
class DisruptiveMonkey(SisyphusMonkey):
6495-
# Limit the nemesis scope:
6496-
# - ValidateHintedHandoffShortDowntime
6497-
# - CorruptThenRepairMonkey
6498-
# - CorruptThenRebuildMonkey
6499-
# - RestartThenRepairNodeMonkey
6500-
# - StopStartMonkey
6501-
# - MultipleHardRebootNodeMonkey
6502-
# - HardRebootNodeMonkey
6503-
# - SoftRebootNodeMonkey
6504-
# - StopWaitStartMonkey
6505-
# - NodeTerminateAndReplace
6506-
# - EnospcMonkey
6507-
# - DecommissionMonkey
6508-
# - NodeRestartWithResharding
6509-
# - DrainerMonkey
6510-
6511-
NEMESIS_SELECTOR = "disruptive"
6512-
6513-
6514-
class NonDisruptiveMonkey(Nemesis):
6515-
# Limit the nemesis scope:
6516-
# - NodeToolCleanupMonkey
6517-
# - SnapshotOperations
6518-
# - RefreshMonkey
6519-
# - RefreshBigMonkey -
6520-
# - NoCorruptRepairMonkey
6521-
# - MgmtRepair
6522-
NEMESIS_SELECTOR = "not disruptive"
6523-
6524-
6525-
class NetworkMonkey(SisyphusMonkey):
6526-
# Limit the nemesis scope:
6527-
# - RandomInterruptionNetworkMonkey
6528-
# - StopStartInterfacesNetworkMonkey
6529-
# - BlockNetworkMonkey
6530-
6531-
NEMESIS_SELECTOR = "networking"
6532-
6533-
6534-
class GeminiChaosMonkey(SisyphusMonkey):
6535-
# Limit the nemesis scope to use with gemini
6536-
# - StopStartMonkey
6537-
# - RestartThenRepairNodeMonkey
6538-
6539-
NEMESIS_SELECTOR = "run_with_gemini"
6540-
6541-
6542-
class GeminiNonDisruptiveChaosMonkey(SisyphusMonkey):
6543-
6544-
NEMESIS_SELECTOR = "run_with_gemini and not disruptive"
6545-
6546-
65476463
class ScyllaOperatorBasicOperationsMonkey(Nemesis):
65486464
"""
65496465
Selected number of nemesis that is focused on scylla-operator functionality
@@ -6638,12 +6554,8 @@ def disrupt(self):
66386554
self.disrupt_repair_streaming_err()
66396555

66406556

6641-
COMPLEX_NEMESIS = [NoOpMonkey, ChaosMonkey,
6642-
LimitedChaosMonkey,
6643-
ScyllaCloudLimitedChaosMonkey,
6644-
AllMonkey, MdcChaosMonkey,
6645-
DisruptiveMonkey, NonDisruptiveMonkey, GeminiNonDisruptiveChaosMonkey,
6646-
GeminiChaosMonkey, NetworkMonkey, SisyphusMonkey,
6557+
COMPLEX_NEMESIS = [NoOpMonkey, ChaosMonkey, ScyllaCloudLimitedChaosMonkey,
6558+
AllMonkey, MdcChaosMonkey, SisyphusMonkey,
66476559
DisruptKubernetesNodeThenReplaceScyllaNode,
66486560
DisruptKubernetesNodeThenDecommissionAndAddScyllaNode,
66496561
CategoricalMonkey]
@@ -6706,21 +6618,6 @@ def disrupt(self):
67066618
self.disrupt_start_stop_validation_compaction()
67076619

67086620

6709-
class FreeTierSetMonkey(SisyphusMonkey):
6710-
"""Nemesis set for testing Scylla Cloud free tier.
6711-
6712-
Disruptions that can be caused by random failures and user actions and human operator:
6713-
- doesn't include any topology changes (scale up/down, decommission)
6714-
- doesn't include manager backup/repairs
6715-
- doesn't include k8s nodes related (i.e. one title as exclusive)"""
6716-
6717-
def __init__(self, *args, **kwargs):
6718-
# skip SisyphusMonkey __init__ to not repeat build disruption logic, but still we want to run Nemesis class __init__
6719-
super(SisyphusMonkey, self).__init__(*args, **kwargs) # pylint: disable=bad-super-call
6720-
self.build_list_of_disruptions_to_execute(nemesis_selector='free_tier_set')
6721-
self.shuffle_list_of_disruptions()
6722-
6723-
67246621
class SlaIncreaseSharesDuringLoad(Nemesis):
67256622
disruptive = False
67266623
sla = True
@@ -6862,20 +6759,6 @@ def disrupt(self):
68626759
self.disrupt_grow_shrink_zero_nodes()
68636760

68646761

6865-
class ZeroTokenSetMonkey(SisyphusMonkey):
6866-
"""Nemesis set for testing Scylla with configured zero nodes
6867-
6868-
Disruptions that can be caused by random failures and user actions with
6869-
zero node configured
6870-
"""
6871-
6872-
def __init__(self, *args, **kwargs):
6873-
super(SisyphusMonkey, self).__init__(*args, **kwargs) # pylint: disable=bad-super-call
6874-
self.use_all_nodes_as_target = True
6875-
self.build_list_of_disruptions_to_execute(nemesis_selector='zero_node_changes')
6876-
self.shuffle_list_of_disruptions()
6877-
6878-
68796762
class SerialRestartOfElectedTopologyCoordinatorNemesis(Nemesis):
68806763

68816764
disruptive = True

Diff for: sdcm/sct_config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ class SCTConfiguration(dict):
651651
parallel threads on different nodes. Ex.: "ChaosMonkey:2"
652652
- nemesis_class_name: "<NemesisName1>:<num1> <NemesisName2>:<num2>" Run
653653
<NemesisName1> in <num1> parallel threads and <NemesisName2> in <num2>
654-
parallel threads. Ex.: "DisruptiveMonkey:1 NonDisruptiveMonkey:2"
654+
parallel threads. Ex.: "ScyllaOperatorBasicOperationsMonkey:1 NonDisruptiveMonkey:2"
655655
"""),
656656

657657
dict(name="nemesis_interval", env="SCT_NEMESIS_INTERVAL",

Diff for: test-cases/PR-provision-test-docker.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ n_db_nodes: 1
99

1010
instance_type_runner: c6i.2xlarge
1111

12-
nemesis_class_name: NonDisruptiveMonkey
12+
nemesis_class_name: SisyphusMonkey
13+
nemesis_selector: "not disruptive"
1314
nemesis_interval: 1
1415

1516
user_prefix: 'PR-provision-docker'

Diff for: test-cases/PR-provision-test.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ force_run_iotune: true
2121
n_monitor_nodes: 1
2222
n_db_nodes: 3
2323

24-
nemesis_class_name: NonDisruptiveMonkey
24+
nemesis_class_name: SisyphusMonkey
25+
nemesis_selector: "not disruptive"
2526
nemesis_interval: 1
2627

2728
user_prefix: 'PR-provision-test'

Diff for: test-cases/gemini/gemini-3h-ics-cdc-with-nemesis.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ instance_type_db: 'i4i.large'
88
user_prefix: 'ics-cdc-gemini-basic-3h'
99
ami_db_scylla_user: 'centos'
1010

11-
nemesis_class_name: 'GeminiChaosMonkey'
11+
nemesis_class_name: 'SisyphusMonkey'
12+
nemesis_selector: "run_with_gemini"
1213

1314
gemini_cmd: |
1415
--duration 3h

Diff for: test-cases/gemini/gemini-3h-ics-with-nondisruptive-nemesis.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ instance_type_db: 'i4i.large'
88
user_prefix: 'ics-gemini-nemesis-3h'
99
ami_db_scylla_user: 'centos'
1010

11-
nemesis_class_name: 'GeminiNonDisruptiveChaosMonkey'
11+
nemesis_class_name: 'SisyphusMonkey'
12+
nemesis_selector: "run_with_gemini and not disruptive"
1213

1314
gemini_cmd: |
1415
--duration 3h

Diff for: test-cases/gemini/gemini-3h-with-nondisruptive-nemesis.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ instance_type_db: 'i4i.xlarge'
77

88
user_prefix: 'gemini-basic-3h'
99

10-
nemesis_class_name: 'GeminiNonDisruptiveChaosMonkey'
10+
nemesis_class_name: 'SisyphusMonkey'
11+
nemesis_selector: "run_with_gemini and not disruptive"
1112

1213
gemini_cmd: |
1314
--duration 3h

Diff for: test-cases/longevity/longevity-1-rf-test-12h.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ round_robin: true
2626
instance_type_db: 'i4i.xlarge'
2727
instance_type_loader: 'c6i.4xlarge'
2828

29-
nemesis_class_name: 'NonDisruptiveMonkey'
29+
nemesis_class_name: 'SisyphusMonkey'
30+
nemesis_selector: "not disruptive"
3031

3132
user_prefix: 'longevity-1-rf-test-4h'
3233
space_node_threshold: 64424

Diff for: test-cases/longevity/longevity-2TB-48h-authorization-and-tls-ssl-1dis-2nondis-nemesis.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ instance_type_loader: 'c6i.2xlarge'
2929
instance_type_runner: 'r6i.2xlarge'
3030

3131
cluster_health_check: false
32-
nemesis_class_name: 'DisruptiveMonkey:1 NonDisruptiveMonkey:2'
33-
nemesis_selector: ["", "", "not manager_operation"]
32+
nemesis_class_name: 'SisyphusMonkey:1 SisyphusMonkey:2'
33+
nemesis_selector: ["disruptive", "not disruptive", "not disruptive and not manager_operation"]
3434
nemesis_interval: 30
3535
nemesis_during_prepare: false
3636
seeds_num: 3

Diff for: test-cases/longevity/longevity-lwt-basic-24h-1dis-2nondis.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ n_monitor_nodes: 1
99

1010
instance_type_db: 'i4i.2xlarge'
1111

12-
nemesis_class_name: 'DisruptiveMonkey:1 NonDisruptiveMonkey:2'
13-
nemesis_selector: ["", "", "not manager_operation"]
12+
nemesis_class_name: 'SisyphusMonkey:1 SisyphusMonkey:2'
13+
nemesis_selector: ["disruptive", "not disruptive", "not disruptive and not manager_operation"]
1414
nemesis_during_prepare: false
1515
space_node_threshold: 64424
1616

Diff for: test-cases/longevity/longevity-lwt-parallel-24h.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ round_robin: true
1212

1313
instance_type_db: 'i4i.2xlarge'
1414

15-
nemesis_class_name: 'DisruptiveMonkey:1 ModifyTableMonkey:1'
15+
nemesis_class_name: 'SisyphusMonkey:1 ModifyTableMonkey:1'
16+
nemesis_selector: ["disruptive", ""]
1617
nemesis_during_prepare: false
1718
space_node_threshold: 64424
1819

Diff for: test-cases/longevity/longevity-nosqlbench-3h.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ instance_type_db: 'i4i.4xlarge'
1212
gce_instance_type_db: 'n2-highmem-16'
1313
gce_instance_type_loader: 'e2-standard-4'
1414

15-
nemesis_class_name: 'NonDisruptiveMonkey'
15+
nemesis_class_name: 'SisyphusMonkey'
16+
nemesis_selector: "not disruptive"
1617
nemesis_interval: 10
1718

1819
user_prefix: 'longevity-nosqlbench-3h'

Diff for: test-cases/scylla-operator/longevity-scylla-operator-12h-multitenant-14-clients.yaml

+20-5
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ instance_type_loader: 'c6i.large'
3333
k8s_minio_storage_size: 1024Gi
3434

3535
nemesis_class_name:
36-
- 'FreeTierSetMonkey'
37-
- 'FreeTierSetMonkey'
38-
- 'FreeTierSetMonkey'
39-
- 'FreeTierSetMonkey'
40-
- 'FreeTierSetMonkey'
36+
- 'SisyphusMonkey'
37+
- 'SisyphusMonkey'
38+
- 'SisyphusMonkey'
39+
- 'SisyphusMonkey'
40+
- 'SisyphusMonkey'
4141
- 'NoOpMonkey'
4242
- 'NoOpMonkey'
4343
- 'NoOpMonkey'
@@ -47,6 +47,21 @@ nemesis_class_name:
4747
- 'NoOpMonkey'
4848
- 'NoOpMonkey'
4949
- 'NoOpMonkey'
50+
nemesis_selector:
51+
- "free_tier_set"
52+
- "free_tier_set"
53+
- "free_tier_set"
54+
- "free_tier_set"
55+
- "free_tier_set"
56+
- ""
57+
- ""
58+
- ""
59+
- ""
60+
- ""
61+
- ""
62+
- ""
63+
- ""
64+
- ""
5065
nemesis_seed: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14']
5166
nemesis_during_prepare: false
5267

Diff for: test-cases/scylla-operator/longevity-scylla-operator-3h-multitenant.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ k8s_n_loader_pods_per_cluster: 2
2828

2929
k8s_n_auxiliary_nodes: 3
3030

31-
nemesis_class_name: ['FreeTierSetMonkey', 'K8sSetMonkey']
31+
nemesis_class_name: ['SisyphusMonkey', 'K8sSetMonkey']
32+
nemesis_selector: ["free_tier_set", ""]
3233
nemesis_interval: [5, 6]
3334
nemesis_seed: ['385', '543']
3435
nemesis_during_prepare: false

Diff for: unit_tests/test_data/test_scylla_yaml_builders/PR-provision-test.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ force_run_iotune: true
2121
n_monitor_nodes: 1
2222
n_db_nodes: 3
2323

24-
nemesis_class_name: NonDisruptiveMonkey
24+
nemesis_class_name: SisyphusMonkey
25+
nemesis_selector: "not disruptive"
2526
nemesis_interval: 1
2627

2728
user_prefix: 'PR-provision-test'

0 commit comments

Comments
 (0)