public static void verifyRegisterK4toK5Retry() {
    WaitCriterion ev = new WaitCriterion() {
      @Override
      public boolean done() {
        try {
          verifyRegisterK4toK5();
          return true;
        } catch (VirtualMachineError e) {
          initiateFailure(e);
          throw e;
        } catch (Error e) {
          return false;
        } catch (RuntimeException re) {
          return false;
        }
      }

      @Override
      public String description() {
        return "verifyRegisterK4toK5Retry";
      }
    };
    GeodeAwaitility.await().untilAsserted(ev);
  }
Test Scenario :

one client(c1) two servers(s1,s2) s1,s2 ----> available c1: register k1,k2,k3,k4,k5 s1 ---->
unavailable // fail over should happen to server s2 see all keys k1,k2,k3,k4,k5 are registered on
s2 c1: unregister k1,k2,k3 see interest list on s1 contains only s4, s5 s2 ----> unavaliable //
fail over should to s1 with intrest list s4,s5 see only k4 and k5 are registerd on s1
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/InterestListRecoveryDUnitTest.java