Ejemplo n.º 1
0
		})

		Context("when it is exec hook", func() {
			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())
			})
	var podClient *framework.PodClient
	var file string
	const podWaitTimeout = 2 * time.Minute

	testPodWithHook := func(podWithHook *api.Pod) {
		podCheckHook := getLifecycleHookTestPod("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, podWaitTimeout)
		}
		By("delete the pod with lifecycle hook")
		podClient.DeleteSync(podWithHook.Name, api.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, podWaitTimeout)
		}
	}

	Context("when create a pod with lifecycle hook", func() {
		BeforeEach(func() {
			podClient = f.PodClient()
			file = "/tmp/test-" + string(uuid.NewUUID())