@Test
  public void updatesArePropagatedToAllMembersWhenOneKilled() throws Exception {
    client1.invoke(
        () -> createClientCache(hostnameServer1, PORT1));
    client2.invoke(
        () -> createClientCache(hostnameServer3, PORT3));
    int entries = 20;
    AsyncInvocation invocation = client1.invokeAsync(() -> doPuts(entries));

    // Wait for some entries to be put
    server1.invoke(this::verifyMinEntriesInserted);

    // Simulate crash
    server2.invoke(() -> {
      MembershipManagerHelper.crashDistributedSystem(getSystemStatic());
    });

    invocation.await();

    int notNullEntriesIn1 = client1.invoke(() -> getNotNullEntriesNumber(entries));
    int notNullEntriesIn3 = client2.invoke(() -> getNotNullEntriesNumber(entries));
    assertThat(notNullEntriesIn3).isEqualTo(notNullEntriesIn1);
  }
Start client 1 Start client 2 Start Server 1 Start Server 2 Register interest for client 1 on
Server 1/2 Kill Server 1 Verify that interest fails over to Server 2 Restart Server 1 Do a put
which goes against Server 1 Verify that Client 1 does not get the update Verify that Client 2
does get the update

The key is to verify that the memberid being used by the client to register with the server is
the same across servers
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/UpdatePropagationDistributedTest.java