public CountDownLatch getCountDownLatch() {
    return countDownLatch;
  }
@Test
  void testPhase() throws InterruptedException {
    // CREATE
    client.pods().inNamespace("ns1")
        .create(new PodBuilder().withNewMetadata().withName("pod1").endMetadata().withNewStatus()
            .endStatus().build());
    await().until(isPodAvailable("pod1"));
    // READ
    PodList podList = client.pods().inNamespace("ns1").list();
    assertNotNull(podList);
    assertEquals(1, podList.getItems().size());
    Pod pod = podList.getItems().get(0);
    // WATCH
    PodPhaseWatcher podWatcher = new PodPhaseWatcher(
        phase -> StringUtils.equalsAnyIgnoreCase(phase, "Succeeded", "Failed", "Running"));
    try (Watch watch = client.pods().inNamespace("ns1").withName("pod1").watch(podWatcher)) {
      // Update Pod to "pending" phase
      pod.setStatus(new PodStatus(null, null, null, null, null, null, null, "Pending", null, null,
              null, null, null));
      pod = client.pods().inNamespace("ns1").replaceStatus(pod);

      // Wait a little bit, till update is applied
      await().pollDelay(Duration.ofSeconds(1))
          .until(isPodPhase(pod.getMetadata().getName(), "Pending"));
      // Update Pod to "Running" phase
      pod.setStatus(new PodStatusBuilder(new PodStatus(null, null, null, null, null, null, null,
              "Running", null, null, null, null, null)).build());
      client.pods().inNamespace("ns1").replaceStatus(pod);
      await().pollDelay(Duration.ofSeconds(1))
          .until(isPodPhase(pod.getMetadata().getName(), "Running"));
      assertTrue(podWatcher.getCountDownLatch().await(1, TimeUnit.SECONDS));
    }
  }