var file string testPodWithExecHook := func(podWithHook *v1.Pod) { podCheckHook := getExecHookTestPod("pod-check-hook", // Wait until the file is created. []string{"sh", "-c", fmt.Sprintf("while [ ! -e %s ]; do sleep 1; done", file)}, ) By("create the pod with lifecycle hook") podClient.CreateSync(podWithHook) if podWithHook.Spec.Containers[0].Lifecycle.PostStart != nil { By("create the hook check pod") podClient.Create(podCheckHook) By("wait for the hook check pod to success") podClient.WaitForSuccess(podCheckHook.Name, postStartWaitTimeout) } By("delete the pod with lifecycle hook") podClient.DeleteSync(podWithHook.Name, v1.NewDeleteOptions(15), podWaitTimeout) if podWithHook.Spec.Containers[0].Lifecycle.PreStop != nil { By("create the hook check pod") podClient.Create(podCheckHook) By("wait for the prestop check pod to success") podClient.WaitForSuccess(podCheckHook.Name, preStopWaitTimeout) } } BeforeEach(func() { file = "/tmp/test-" + string(uuid.NewUUID()) }) AfterEach(func() { By("cleanup the temporary file created in the test.") cleanupPod := getExecHookTestPod("pod-clean-up", []string{"rm", file})
Name: busyPodName, // Filling the disk Command: []string{"sh", "-c", fmt.Sprintf("for NUM in `seq 1 1 100000`; do dd if=/dev/urandom of=%s.$NUM bs=50000000 count=10; sleep 0.5; done", dummyFile)}, }, }, }, }) }) AfterEach(func() { if !isImageSupported() || !evictionOptionIsSet() { // Skip the after each return } podClient.DeleteSync(busyPodName, &api.DeleteOptions{}, podDisappearTimeout) podClient.DeleteSync(idlePodName, &api.DeleteOptions{}, podDisappearTimeout) podClient.DeleteSync(verifyPodName, &api.DeleteOptions{}, podDisappearTimeout) // Wait for 2 container gc loop to ensure that the containers are deleted. The containers // created in this test consume a lot of disk, we don't want them to trigger disk eviction // again after the test. time.Sleep(containerGCPeriod * 2) if framework.TestContext.PrepullImages { // The disk eviction test may cause the prepulled images to be evicted, // prepull those images again to ensure this test not affect following tests. PrePullAllImages() } })