@Test
  public void testCreateDestroyGatewaySenderWithGatewayEventFilters() {
    int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
    String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
        + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
        + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --"
        + CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER
        + "=org.apache.geode.cache30.MyGatewayEventFilter1,org.apache.geode.cache30.MyGatewayEventFilter2";

    gfsh.executeAndAssertThat(command).statusIsSuccess()
        .doesNotContainOutput("Did not complete waiting")
        .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly(
            "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"",
            "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"",
            "GatewaySender \"ln\" created on \"" + SERVER_5 + "\"");

    List<String> eventFilters = new ArrayList<>();
    eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter1");
    eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter2");

    VMProvider.invokeInEveryMember(() -> {
      verifySenderState("ln", false, false);
      verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true, 1000, 5000, true,
          false, 1000, 100, 2, GatewaySender.OrderPolicy.THREAD, eventFilters, null, false);
    }, server1, server2, server3);

    // destroy gateway sender and verify AEQs cleaned up
    gfsh.executeAndAssertThat(DESTROY).statusIsSuccess()
        .doesNotContainOutput("Did not complete waiting")
        .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly(
            "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"",
            "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"",
            "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\"");

    VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2,
        server3);
  }
GatewaySender with given attribute values and event filters.
geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java