Skip to content

Commit 619f8d4

Browse files
Merge pull request #49 from echen-98/maintenance-window
e2e tests to cover most replication group update scenarios
2 parents f9de752 + 3210019 commit 619f8d4

10 files changed

+658
-65
lines changed

Diff for: test/e2e/bootstrap_resources.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,17 @@
2121

2222
@dataclass
2323
class TestBootstrapResources:
24-
SnsTopicARN: str
25-
SecurityGroupID: str
26-
UserGroupID: str
24+
SnsTopic1: str
25+
SnsTopic2: str
26+
SecurityGroup1: str
27+
SecurityGroup2: str
28+
UserGroup1: str
29+
UserGroup2: str
2730
KmsKeyID: str
2831
SnapshotName: str
2932
NonDefaultUser: str
30-
CWLogGroup: str
33+
CWLogGroup1: str
34+
CWLogGroup2: str
3135
CPGName: str
3236

3337
_bootstrap_resources = None

Diff for: test/e2e/resources/replicationgroup_cme_misc.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# CME replication group with some optional fields specified. The modification of these fields is typically quicker
2+
# than other actions (such as scaling) which require provisioning/deletion of nodes.
3+
apiVersion: elasticache.services.k8s.aws/v1alpha1
4+
kind: ReplicationGroup
5+
metadata:
6+
name: $RG_ID
7+
spec:
8+
cacheNodeType: cache.t3.micro
9+
engine: redis
10+
numNodeGroups: 2
11+
preferredMaintenanceWindow: $PMW
12+
replicasPerNodeGroup: 1
13+
replicationGroupDescription: $DESCRIPTION
14+
replicationGroupID: $RG_ID
15+
snapshotRetentionLimit: $SRL
16+
snapshotWindow: $SW

Diff for: test/e2e/resources/replicationgroup_cme_ngc.yaml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# CME replication group. "NGC" means that the field nodeGroupConfiguration is specified, with a detailed configuration
2+
# for each shard
3+
apiVersion: elasticache.services.k8s.aws/v1alpha1
4+
kind: ReplicationGroup
5+
metadata:
6+
name: $RG_ID
7+
spec:
8+
cacheNodeType: cache.t3.micro
9+
engine: redis
10+
nodeGroupConfiguration:
11+
- nodeGroupID: $NGID1
12+
primaryAvailabilityZone: us-west-2a
13+
replicaAvailabilityZones:
14+
- us-west-2b
15+
- us-west-2c
16+
replicaCount: 2
17+
- nodeGroupID: $NGID2
18+
primaryAvailabilityZone: us-west-2b
19+
replicaAvailabilityZones:
20+
- us-west-2c
21+
- us-west-2a
22+
replicaCount: 2
23+
replicationGroupDescription: cluster-mode enabled RG
24+
replicationGroupID: $RG_ID
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# CMD replication group for testing modification fault tolerance features (multi AZ, auto failover, primary promotion)
2+
apiVersion: elasticache.services.k8s.aws/v1alpha1
3+
kind: ReplicationGroup
4+
metadata:
5+
name: $RG_ID
6+
spec:
7+
automaticFailoverEnabled: $AF_ENABLED
8+
cacheNodeType: cache.t3.micro
9+
engine: redis
10+
multiAZEnabled: $MAZ_ENABLED
11+
numNodeGroups: 1
12+
replicasPerNodeGroup: 1
13+
replicationGroupDescription: description
14+
replicationGroupID: $RG_ID
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# CMD replication group manifest for specifying an existing node to use as primary
2+
apiVersion: elasticache.services.k8s.aws/v1alpha1
3+
kind: ReplicationGroup
4+
metadata:
5+
name: $RG_ID
6+
spec:
7+
# cache node type and engine cannot be used when specifying existing primary node, even if DNE
8+
numNodeGroups: 1
9+
replicasPerNodeGroup: 1
10+
replicationGroupDescription: cluster-mode disabled RG
11+
replicationGroupID: $RG_ID
12+
primaryClusterID: $PRIMARY_NODE

Diff for: test/e2e/resources/replicationgroup_rpng.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# "RPNG" means that the field replicasPerNodeGroup is set (instead of nodeGroupConfiguration),
2+
# meaning that this replication group has a uniform configuration across all shards. This is one of the more
3+
# basic configurations as very few fields are specified and the resulting RG can either be CME or CMD
4+
# (depending on the number of specified node groups).
5+
apiVersion: elasticache.services.k8s.aws/v1alpha1
6+
kind: ReplicationGroup
7+
metadata:
8+
name: $RG_ID
9+
spec:
10+
cacheNodeType: cache.t3.micro
11+
engine: redis
12+
numNodeGroups: $NUM_NODE_GROUPS
13+
replicasPerNodeGroup: $REPLICAS_PER_NODE_GROUP
14+
replicationGroupDescription: cluster-mode enabled RG
15+
replicationGroupID: $RG_ID

Diff for: test/e2e/service_bootstrap.py

+4
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,16 @@ def service_bootstrap() -> dict:
136136

137137
return TestBootstrapResources(
138138
create_sns_topic(),
139+
create_sns_topic(),
140+
create_security_group(),
139141
create_security_group(),
140142
create_user_group(),
143+
create_user_group(),
141144
create_kms_key(),
142145
create_cc_snapshot(),
143146
create_non_default_user(),
144147
create_log_group(),
148+
create_log_group(),
145149
create_cpg()
146150
).__dict__
147151

Diff for: test/e2e/service_cleanup.py

+28-8
Original file line numberDiff line numberDiff line change
@@ -86,19 +86,34 @@ def service_cleanup(config: dict):
8686
)
8787

8888
try:
89-
delete_sns_topic(resources.SnsTopicARN)
89+
delete_sns_topic(resources.SnsTopic1)
9090
except:
91-
logging.exception(f"Unable to delete SNS topic {resources.SnsTopicARN}")
91+
logging.exception(f"Unable to delete SNS topic {resources.SnsTopic1}")
9292

9393
try:
94-
delete_security_group(resources.SecurityGroupID)
94+
delete_sns_topic(resources.SnsTopic2)
9595
except:
96-
logging.exception(f"Unable to delete VPC Security Group {resources.SecurityGroupID}")
96+
logging.exception(f"Unable to delete SNS topic {resources.SnsTopic2}")
9797

9898
try:
99-
delete_user_group(resources.UserGroupID)
99+
delete_security_group(resources.SecurityGroup1)
100100
except:
101-
logging.exception(f"Unable to delete ElastiCache User Group {resources.UserGroupID}")
101+
logging.exception(f"Unable to delete VPC Security Group {resources.SecurityGroup1}")
102+
103+
try:
104+
delete_security_group(resources.SecurityGroup2)
105+
except:
106+
logging.exception(f"Unable to delete VPC Security Group {resources.SecurityGroup2}")
107+
108+
try:
109+
delete_user_group(resources.UserGroup1)
110+
except:
111+
logging.exception(f"Unable to delete ElastiCache User Group {resources.UserGroup1}")
112+
113+
try:
114+
delete_user_group(resources.UserGroup2)
115+
except:
116+
logging.exception(f"Unable to delete ElastiCache User Group {resources.UserGroup2}")
102117

103118
try:
104119
delete_kms_key(resources.KmsKeyID)
@@ -116,9 +131,14 @@ def service_cleanup(config: dict):
116131
logging.exception(f"Unable to delete user {resources.NonDefaultUser}")
117132

118133
try:
119-
delete_log_group(resources.CWLogGroup)
134+
delete_log_group(resources.CWLogGroup1)
135+
except:
136+
logging.exception(f"Unable to delete CW log group {resources.CWLogGroup1}")
137+
138+
try:
139+
delete_log_group(resources.CWLogGroup2)
120140
except:
121-
logging.exception(f"Unable to delete CW log group {resources.CWLogGroup}")
141+
logging.exception(f"Unable to delete CW log group {resources.CWLogGroup2}")
122142

123143
try:
124144
delete_cpg(resources.CPGName)

0 commit comments

Comments
 (0)