Skip to content

Commit 3fe5abd

Browse files
authored
OSD-30032: To Add E2E test for InsightsOperatorDown (#455)
* Added e2e test for Cluster has gone missing - InsightsOperatorDown * fixed feedback issues * fixed feedback issues
1 parent 87e0956 commit 3fe5abd

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

test/e2e/configuration_anomaly_detection_test.go

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,5 +581,95 @@ var _ = Describe("Configuration Anomaly Detection", Ordered, func() {
581581
Expect(logsAfter).To(HaveLen(len(logsBefore)), "Service logs count changed after scale down/up")
582582
}
583583
})
584+
585+
It("AWS CCS: InsightsOperatorDown (blocked egress)", Label("aws", "ccs", "insights-operator", "blocking-egress"), func(ctx context.Context) {
586+
if provider == "aws" {
587+
awsAccessKey := os.Getenv("AWS_ACCESS_KEY_ID")
588+
awsSecretKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
589+
Expect(awsAccessKey).NotTo(BeEmpty(), "AWS access key not found")
590+
Expect(awsSecretKey).NotTo(BeEmpty(), "AWS secret key not found")
591+
592+
awsCfg, err := config.LoadDefaultConfig(ctx,
593+
config.WithRegion(region),
594+
config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
595+
awsAccessKey,
596+
awsSecretKey,
597+
"",
598+
)),
599+
)
600+
Expect(err).NotTo(HaveOccurred(), "Failed to create AWS config")
601+
602+
ec2Client := ec2.NewFromConfig(awsCfg)
603+
ec2Wrapper := utils.NewEC2ClientWrapper(ec2Client)
604+
605+
awsCad, err := awsinternal.NewClient(awsCfg)
606+
Expect(err).NotTo(HaveOccurred(), "Failed to create AWS client")
607+
608+
clusterResource, err := ocme2eCli.ClustersMgmt().V1().Clusters().Cluster(clusterID).Get().Send()
609+
Expect(err).NotTo(HaveOccurred(), "Failed to fetch cluster from OCM")
610+
611+
cluster := clusterResource.Body()
612+
infraID := cluster.InfraID()
613+
Expect(infraID).NotTo(BeEmpty(), "InfraID missing from cluster")
614+
615+
sgID, err := awsCad.GetSecurityGroupID(infraID)
616+
Expect(err).NotTo(HaveOccurred(), "Failed to get security group ID")
617+
618+
// Step 1: Get logs before action
619+
logsBefore, err := utils.GetServiceLogs(ocmCli, cluster)
620+
Expect(err).ToNot(HaveOccurred(), "Failed to get service logs before action")
621+
622+
existingLogIDs := map[string]bool{}
623+
for _, item := range logsBefore.Items().Slice() {
624+
existingLogIDs[item.ID()] = true
625+
}
626+
627+
// Step 2: Block egress
628+
Expect(utils.BlockEgress(ctx, ec2Wrapper, sgID)).To(Succeed(), "Failed to block egress")
629+
630+
// Clean up: restore egress
631+
defer func() {
632+
err := utils.RestoreEgress(ctx, ec2Wrapper, sgID)
633+
if err != nil {
634+
ginkgo.GinkgoWriter.Printf("Failed to restore egress: %v\n", err)
635+
} else {
636+
ginkgo.GinkgoWriter.Printf("Egress restored\n")
637+
}
638+
}()
639+
640+
// Step 3: Scale down insights-operator
641+
var zero int32 = 0
642+
var originalIOReplicas int32
643+
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
644+
io := &appsv1.Deployment{}
645+
err := k8s.Get(ctx, "insights-operator", "openshift-insights", io)
646+
if err != nil {
647+
return err
648+
}
649+
originalIOReplicas = *io.Spec.Replicas
650+
io.Spec.Replicas = &zero
651+
return k8s.Update(ctx, io)
652+
})
653+
Expect(err).ToNot(HaveOccurred(), "failed to scale down insights-operator")
654+
fmt.Printf("Scaled down insights-operator from %d to 0 replicas\n", originalIOReplicas)
655+
656+
_, err = testPdClient.TriggerIncident("InsightsOperatorDown", clusterID)
657+
Expect(err).NotTo(HaveOccurred(), "Failed to trigger silent PagerDuty alert")
658+
659+
// Step 4: Get logs again and find new entries
660+
logsAfter, err := utils.GetServiceLogs(ocmCli, cluster)
661+
Expect(err).ToNot(HaveOccurred(), "Failed to get service logs after action")
662+
663+
newLogs := []interface{}{}
664+
for _, item := range logsAfter.Items().Slice() {
665+
if !existingLogIDs[item.ID()] {
666+
newLogs = append(newLogs, item)
667+
}
668+
}
669+
670+
// Step 4: Verify no new logs were created
671+
Expect(len(newLogs)).To(BeZero(), "Expected no new service logs after blocking egress and scaling down")
672+
}
673+
})
584674

585675
}, ginkgo.ContinueOnFailure)

0 commit comments

Comments
 (0)