@Test
  public void updatesAreProgegatedAfterFailover() {
    client1.invoke(
        () -> createClientCache(hostnameServer1, PORT1, PORT2));
    client2.invoke(
        () -> createClientCache(hostnameServer1, PORT1, PORT2));

    // First create entries on both servers via the two client
    client1.invoke(this::createEntriesK1andK2);
    client2.invoke(this::createEntriesK1andK2);
    client1.invoke(this::registerKeysK1andK2);
    client2.invoke(this::registerKeysK1andK2);
    // Induce fail over of InteretsList Endpoint to Server 2 by killing server1
    server1.invoke(() -> killServer(PORT1));
    // Wait for 10 seconds to allow fail over. This would mean that Interstist has failed
    // over to Server2.
    final CacheSerializableRunnable waitToDetectDeadServer =
        new CacheSerializableRunnable("Wait for server on port1 to be dead") {
          @Override
          public void run2() throws CacheException {
            Region r = getCache().getRegion(REGION_NAME);

            String poolName = r.getAttributes().getPoolName();
            final PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
            await()
                .until(() -> !hasEndPointWithPort(pool, PORT1));
          }
        };
    client1.invoke(waitToDetectDeadServer);
    client2.invoke(waitToDetectDeadServer);

    // Start Server1 again so that both clients1 & Client 2 will establish connection to server1
    // too.
    server1.invoke(() -> startServer(PORT1));

    final CacheSerializableRunnable waitToDetectLiveServer =
        new CacheSerializableRunnable("Wait for servers to be alive") {
          @Override
          public void run2() throws CacheException {
            Region r = getCache().getRegion(REGION_NAME);
            String poolName = r.getAttributes().getPoolName();
            final PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
            await()
                .until(() -> hasEndPointWithPort(pool, PORT1));
          }
        };
    client1.invoke(waitToDetectLiveServer);
    client2.invoke(waitToDetectLiveServer);

    // Do a put on Server1 via Connection object from client1.
    // Client1 should not receive updated value while client2 should receive
    client1.invoke(
        () -> acquireConnectionsAndPutonK1andK2(NetworkUtils.getServerHostName(client1.getHost())));
    // Check if both the puts ( on key1 & key2 ) have reached the servers
    server1.invoke(this::verifyUpdates);
    server2.invoke(this::verifyUpdates);
    // verify updates to other client
    client2.invoke(this::verifyUpdates);

    // verify no updates for update originator
    client1.invoke(this::verifySenderUpdateCount);
  }
This tests whether the updates are received by other clients or not , if there are situation of
Interest List fail over
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/UpdatePropagationDistributedTest.java