@Test
  public void testInstantiatorsWith2ClientsN2Servers() throws Exception {
    PORT1 = initServerCache(server1);
    PORT2 = initServerCache(server2);

    Wait.pause(3000);

    client1.invoke(() -> InstantiatorPropagationDUnitTest
        .createClientCache(NetworkUtils.getServerHostName(server1.getHost()), PORT1));
    client2.invoke(() -> InstantiatorPropagationDUnitTest
        .createClientCache(NetworkUtils.getServerHostName(server1.getHost()), PORT2));

    unregisterInstantiatorsInAllVMs();

    // wait for client2 to come online
    Wait.pause(2000);


    client1.invoke(InstantiatorPropagationDUnitTest::registerTestObject3);
    Wait.pause(4000);

    client1.invoke(() -> InstantiatorPropagationDUnitTest.verifyInstantiators(1));

    server1.invoke(() -> InstantiatorPropagationDUnitTest.verifyInstantiators(1));

    server2.invoke(() -> InstantiatorPropagationDUnitTest.verifyInstantiators(1));

    client2.invoke(() -> InstantiatorPropagationDUnitTest.verifyInstantiators(1));

    unregisterInstantiatorsInAllVMs();
  }
In this test there are 2 clients and 2 servers.Registered one instantiator on one client.
Verified, if that instantiator gets propagated to the server the client is connected
to(server1), to the other server(server2) in the DS and the client(client2) that is connected
to server2.
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/InstantiatorPropagationDUnitTest.java