示例#1
0
        public void TestShouldStartPodChaos()
        {
            var handler = new PodEventHandler(null, null, null);
            var pod     = CreatePod("testns", "pod-test-instance");

            pod.Status.Phase = "Pending";
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();
            pod.Status.Phase = "Deleting";
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();

            pod.Status.Phase = "Running";
            handler.ShouldStartPodChaos(WatchEventType.Added, pod).Should().BeTrue();
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeTrue();
            handler.ShouldStartPodChaos(WatchEventType.Deleted, pod).Should().BeFalse();
            handler.ShouldStartPodChaos(WatchEventType.Error, pod).Should().BeFalse();

            pod.Metadata.Annotations["stress/chaos.started"] = "true";
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();

            pod.Metadata.Annotations.Remove("stress/chaos.started");
            pod.Metadata.Annotations["stress/chaos.autoStart"] = "false";
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();

            pod = CreatePod("testns", "");
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();

            pod = CreatePod("testns", "pod-test-instance");
            pod.Metadata.Labels.Remove("chaos");
            handler.ShouldStartPodChaos(WatchEventType.Modified, pod).Should().BeFalse();
        }
示例#2
0
        public void TestGetResourceGroupName()
        {
            var handler = new PodEventHandler(null, null, null);
            var pod     = CreatePod("testns", "pod-test-instance");

            pod.Spec = new V1PodSpec();

            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("non-matching-container-name"),
                CreateContainer("init-azure-deployer")
            };
            handler.GetResourceGroupName(pod).Should().BeEmpty();

            var env = new List <V1EnvVar> {
                new V1EnvVar()
            };

            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("init-azure-deployer", env)
            };
            handler.GetResourceGroupName(pod).Should().BeEmpty();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME", "")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.GetResourceGroupName(pod).Should().BeEmpty();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.GetResourceGroupName(pod).Should().BeEmpty();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME", "testrg")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.GetResourceGroupName(pod).Should().Be("testrg");
        }
示例#3
0
        public void TestShouldStartChaos()
        {
            var handler = new PodEventHandler(null, null, null);
            var pod     = CreatePod("testns", "pod-test-instance");

            var noStart1 = CreateChaosResource("testnostart1", "test-no-start-1", false);

            handler.ShouldStartChaos(noStart1, pod).Should().BeFalse();

            var noStart2 = CreateChaosResource(pod.Namespace(), pod.TestInstance(), false);

            handler.ShouldStartChaos(noStart2, pod).Should().BeFalse();

            var start1 = CreateChaosResource(pod.Namespace(), pod.TestInstance(), true);

            handler.ShouldStartChaos(start1, pod).Should().BeTrue();
        }
示例#4
0
        public void TestShouldDeleteResources()
        {
            var handler = new PodEventHandler(null, null, null);
            var pod     = CreatePod("testns", "pod-test-instance");

            pod.Spec = new V1PodSpec();

            pod.Status.Phase = "Succeeded";
            handler.ShouldDeleteResources(pod).Should().BeFalse();

            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("non-matching-container-name")
            };
            handler.ShouldDeleteResources(pod).Should().BeFalse();

            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("non-matching-container-name"),
                CreateContainer("init-azure-deployer")
            };
            handler.ShouldDeleteResources(pod).Should().BeTrue();

            var env = new List <V1EnvVar> {
                new V1EnvVar()
            };

            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("init-azure-deployer", env)
            };
            handler.ShouldDeleteResources(pod).Should().BeTrue();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME", "")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.ShouldDeleteResources(pod).Should().BeTrue();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.ShouldDeleteResources(pod).Should().BeTrue();

            env = new List <V1EnvVar> {
                new V1EnvVar("RESOURCE_GROUP_NAME", "testrg")
            };
            pod.Spec.InitContainers = new List <V1Container>()
            {
                CreateContainer("other-init-container"),
                CreateContainer("init-azure-deployer", env)
            };
            handler.ShouldDeleteResources(pod).Should().BeTrue();

            pod.Status.Phase = "Pending";
            handler.ShouldDeleteResources(pod).Should().BeFalse();
            pod.Status.Phase = "Running";
            handler.ShouldDeleteResources(pod).Should().BeFalse();
            pod.Status.Phase = "Failed";
            handler.ShouldDeleteResources(pod).Should().BeTrue();
            pod.Status.Phase = "Unknown";
            handler.ShouldDeleteResources(pod).Should().BeFalse();
        }