@BeforeClass
  public static void beforeClass() {
    // start up server/locator processes and initialize the server cache
    docker.execForService("geode", "gfsh", "run", "--file=/geode/scripts/geode-starter.gfsh");

    final String trustStorePath =
        createTempFileFromResource(SingleServerSNIAcceptanceTest.class,
            "geode-config/truststore.jks")
                .getAbsolutePath();

    // set up client cache properties so it can connect to the server
    Properties clientCacheProperties = new Properties();
    clientCacheProperties.setProperty(SSL_ENABLED_COMPONENTS, "all");
    clientCacheProperties.setProperty(SSL_KEYSTORE_TYPE, "jks");
    clientCacheProperties.setProperty(SSL_REQUIRE_AUTHENTICATION, "false");

    clientCacheProperties.setProperty(SSL_TRUSTSTORE, trustStorePath);
    clientCacheProperties.setProperty(SSL_TRUSTSTORE_PASSWORD, "geode");
    clientCacheProperties.setProperty(SSL_ENDPOINT_IDENTIFICATION_ENABLED, "true");
    cache = getClientCache(clientCacheProperties);

    // the gfsh startup script created a server-side region named "jellyfish"
    region = cache.<String, String>createClientRegionFactory(ClientRegionShortcut.PROXY)
        .create("jellyfish");
    bulkData = getBulkDataMap();
    region.putAll(bulkData);
  }
This test runs against a 1-server, 1-locator Geode cluster. The server and locator run inside
a (single) Docker container and are not route-able from the host (where this JUnit test is
running). Another Docker container is running the HAProxy image and it's set up as an SNI
gateway. The test connects to the gateway via SNI and the gateway (in one Docker container)
forwards traffic to Geode members (running in the other Docker container).

This test connects to the server and verifies it can write and read data in the region.
geode-assembly/src/acceptanceTest/java/org/apache/geode/client/sni/SingleServerSNIAcceptanceTest.java