Search in sources :

Example 6 with Connection

use of org.apache.geode.cache.client.internal.Connection in project geode by apache.

the class ClientHealthMonitorJUnitTest method testDeadClientRemovalByServer.

/**
   * This test performs the following:<br>
   * 1)create server<br>
   * 2)initialize proxy object and create region for client<br>
   * 3)perform a PUT on client by acquiring Connection through proxy<br>
   * 4)stop server monitor threads in client to ensure that server treats this as dead client <br>
   * 5)wait for some time to allow server to clean up the dead client artifacts<br>
   * 6)again perform a PUT on client through same Connection and verify after the put that the
   * Connection object used was new one.
   */
@Test
public void testDeadClientRemovalByServer() throws Exception {
    PORT = createServer();
    createProxyAndRegionForClient();
    // String connection2String = null;
    StatisticsType st = this.system.findType("CacheServerStats");
    final Statistics s = this.system.findStatisticsByType(st)[0];
    assertEquals(0, s.getInt("currentClients"));
    assertEquals(0, s.getInt("currentClientConnections"));
    this.system.getLogWriter().info("beforeAcquireConnection clients=" + s.getInt("currentClients") + " cnxs=" + s.getInt("currentClientConnections"));
    Connection connection1 = proxy.acquireConnection();
    this.system.getLogWriter().info("afterAcquireConnection clients=" + s.getInt("currentClients") + " cnxs=" + s.getInt("currentClientConnections"));
    this.system.getLogWriter().info("acquired connection " + connection1);
    WaitCriterion ev = new WaitCriterion() {

        public boolean done() {
            return s.getInt("currentClients") != 0;
        }

        public String description() {
            return null;
        }
    };
    Wait.waitForCriterion(ev, 20 * 1000, 200, true);
    assertEquals(1, s.getInt("currentClients"));
    assertEquals(1, s.getInt("currentClientConnections"));
    // String connection1String = connection1.toString();
    ServerRegionProxy srp = new ServerRegionProxy("region1", proxy);
    srp.putOnForTestsOnly(connection1, "key-1", "value-1", new EventID(new byte[] { 1 }, 1, 1), null);
    this.system.getLogWriter().info("did put 1");
    // proxy.testfinalizeServerConnectionMonitor();
    ev = new WaitCriterion() {

        public boolean done() {
            return s.getInt("currentClients") == 0;
        }

        public String description() {
            return null;
        }
    };
    Wait.waitForCriterion(ev, TIME_BETWEEN_PINGS * 5, 200, true);
    {
        this.system.getLogWriter().info("currentClients=" + s.getInt("currentClients") + " currentClientConnections=" + s.getInt("currentClientConnections"));
        assertEquals(0, s.getInt("currentClients"));
        assertEquals(0, s.getInt("currentClientConnections"));
    }
    addExceptions();
    // the connection should now fail since the server timed it out
    try {
        srp.putOnForTestsOnly(connection1, "key-1", "fail", new EventID(new byte[] { 1 }, 1, 2), null);
        fail("expected EOF");
    } catch (ServerConnectivityException expected) {
    }
// The rest of this test no longer works.
// connection1.finalizeConnection();
// proxy.release();
// connection1 = proxy.acquireConnection();
// connection2String = connection1.toString();
// this.system.getLogWriter().info("connection is now " + connection2String);
// if (connection1String.equals(connection2String)) {
// fail("New connection object was not obtained");
// }
// connection1.putObject("region1", "key-1", "value-2", new EventID(new byte[] {1},1,3), null);
// this.system.getLogWriter().info("did put 2");
// assertIndexDetailsEquals(1, s.getInt("currentClients"));
// assertIndexDetailsEquals(1, s.getInt("currentClientConnections"));
// // now lets see what happens when we close our connection
// // note we use a nasty close which just closes the socket instead
// // of sending a nice message to the server telling him we are going away
// ((ConnectionImpl)connection1).finalizeConnection();
// {
// int retry = (TIME_BETWEEN_PINGS*5) / 100;
// while (s.getInt("currentClients") > 0 && retry-- > 0) {
// Thread.sleep(100);
// }
// this.system.getLogWriter().info("currentClients="
// + s.getInt("currentClients")
// + " currentClientConnections="
// + s.getInt("currentClientConnections"));
// assertIndexDetailsEquals(0, s.getInt("currentClients"));
// assertIndexDetailsEquals(0, s.getInt("currentClientConnections"));
// }
}
Also used : ServerConnectivityException(org.apache.geode.cache.client.ServerConnectivityException) WaitCriterion(org.apache.geode.test.dunit.WaitCriterion) StatisticsType(org.apache.geode.StatisticsType) ServerRegionProxy(org.apache.geode.cache.client.internal.ServerRegionProxy) Connection(org.apache.geode.cache.client.internal.Connection) EventID(org.apache.geode.internal.cache.EventID) Statistics(org.apache.geode.Statistics) ClientServerTest(org.apache.geode.test.junit.categories.ClientServerTest) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Example 7 with Connection

use of org.apache.geode.cache.client.internal.Connection in project geode by apache.

the class ClientServerMiscDUnitTest method testCCPDestroyOnLastDestroyRegion.

/**
   * Test two regions: notify by subscription is true. Both the regions have registered interest in
   * all the keys. Destroy region1 on the client. It should reach the server , kill the region on
   * the server , propagate it to the interested clients , but it should keep CacheClient Proxy
   * alive. Destroy Region2 . It should reach server , close conenction proxy , destroy the region2
   * on the server , remove the cache client proxy from the cache client notifier & propagate it to
   * the clients. Then create third region and verify that no CacheClientProxy is created on server
   */
@Test
public void testCCPDestroyOnLastDestroyRegion() throws Exception {
    PORT1 = initServerCache(true);
    PoolImpl pool = (PoolImpl) createClientCache(NetworkUtils.getServerHostName(Host.getHost(0)), PORT1);
    destroyRegion1();
    // pause(5000);
    server1.invoke(() -> ClientServerMiscDUnitTest.verifyCacheClientProxyOnServer(new String(REGION_NAME1)));
    Connection conn = pool.acquireConnection();
    assertNotNull(conn);
    assertEquals(1, pool.getConnectedServerCount());
    assertEquals(false, pool.isDestroyed());
    destroyRegion2();
    assertEquals(false, pool.isDestroyed());
    destroyPRRegion();
    assertEquals(false, pool.isDestroyed());
    pool.destroy();
    assertEquals(true, pool.isDestroyed());
    // pause(5000);
    server1.invoke(() -> ClientServerMiscDUnitTest.verifyNoCacheClientProxyOnServer());
    try {
        getCache().createRegion(REGION_NAME2, attrs);
        fail("expected IllegalStateException");
    } catch (IllegalStateException expected) {
    }
}
Also used : Connection(org.apache.geode.cache.client.internal.Connection) PoolImpl(org.apache.geode.cache.client.internal.PoolImpl) DistributedTest(org.apache.geode.test.junit.categories.DistributedTest) ClientServerTest(org.apache.geode.test.junit.categories.ClientServerTest) Test(org.junit.Test)

Example 8 with Connection

use of org.apache.geode.cache.client.internal.Connection in project geode by apache.

the class ClientServerMiscDUnitTest method testLargeMessageIsRejected.

/**
   * GEODE-478 - large payloads are rejected by client->server
   */
@Test
public void testLargeMessageIsRejected() throws Exception {
    PORT1 = initServerCache(false);
    createClientCache(NetworkUtils.getServerHostName(Host.getHost(0)), PORT1);
    Region region = static_cache.getRegion(REGION_NAME1);
    Op operation = new Op() {

        @Override
        public Object attempt(Connection cnx) throws Exception {
            throw new MessageTooLargeException("message is too big");
        }

        @Override
        public boolean useThreadLocalConnection() {
            return false;
        }
    };
    try {
        ((LocalRegion) region).getServerProxy().getPool().execute(operation);
    } catch (GemFireIOException e) {
        assertTrue(e.getCause() instanceof MessageTooLargeException);
        return;
    }
    fail("expected an exception to be thrown");
}
Also used : Op(org.apache.geode.cache.client.internal.Op) Connection(org.apache.geode.cache.client.internal.Connection) LocalRegion(org.apache.geode.internal.cache.LocalRegion) Region(org.apache.geode.cache.Region) GemFireIOException(org.apache.geode.GemFireIOException) LocalRegion(org.apache.geode.internal.cache.LocalRegion) DistributedTest(org.apache.geode.test.junit.categories.DistributedTest) ClientServerTest(org.apache.geode.test.junit.categories.ClientServerTest) Test(org.junit.Test)

Example 9 with Connection

use of org.apache.geode.cache.client.internal.Connection in project geode by apache.

the class ClearPropagationDUnitTest method acquireConnectionsAndDestroyRegion.

public static void acquireConnectionsAndDestroyRegion(String host) {
    try {
        Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
        assertNotNull(r1);
        String poolName = r1.getAttributes().getPoolName();
        assertNotNull(poolName);
        PoolImpl pool = (PoolImpl) PoolManager.find(poolName);
        assertNotNull(pool);
        Connection conn1 = pool.acquireConnection(new ServerLocation(host, PORT2));
        assertNotNull(conn1);
        assertEquals(PORT2, conn1.getServer().getPort());
        ServerRegionProxy srp = new ServerRegionProxy(Region.SEPARATOR + REGION_NAME, pool);
        srp.destroyRegionOnForTestsOnly(conn1, new EventID(new byte[] { 1 }, 1, 1), null);
    } catch (Exception ex) {
        ex.printStackTrace();
        fail("while setting acquireConnections  " + ex);
    }
}
Also used : ServerLocation(org.apache.geode.distributed.internal.ServerLocation) ServerRegionProxy(org.apache.geode.cache.client.internal.ServerRegionProxy) Connection(org.apache.geode.cache.client.internal.Connection) Region(org.apache.geode.cache.Region) EventID(org.apache.geode.internal.cache.EventID) PoolImpl(org.apache.geode.cache.client.internal.PoolImpl) CacheException(org.apache.geode.cache.CacheException)

Example 10 with Connection

use of org.apache.geode.cache.client.internal.Connection in project geode by apache.

the class EventIdOptimizationDUnitTest method generateEventsByDestroyEntryOperation.

/**
   * Generates events having specific values of threadId and sequenceId, via destroyEntry operation
   * through connection object
   * 
   * @throws Exception - thrown if any problem occurs in destroyEntry operation
   */
public static void generateEventsByDestroyEntryOperation() throws Exception {
    Connection connection = pool.acquireConnection();
    String regionName = Region.SEPARATOR + REGION_NAME;
    ServerRegionProxy srp = new ServerRegionProxy(regionName, pool);
    for (int i = 0; i < eventIds.length; i++) {
        String key = "KEY-" + i;
        srp.putOnForTestsOnly(connection, key, "value-" + i, eventIds[i], null);
        srp.destroyOnForTestsOnly(connection, key, null, Operation.DESTROY, new EventIDHolder(eventIds[i]), null);
    }
    srp.putOnForTestsOnly(connection, LAST_KEY, "lastValue", eventIdForLastKey, null);
    srp.destroyOnForTestsOnly(connection, LAST_KEY, null, Operation.DESTROY, new EventIDHolder(eventIdForLastKey), null);
}
Also used : ServerRegionProxy(org.apache.geode.cache.client.internal.ServerRegionProxy) EventIDHolder(org.apache.geode.internal.cache.EventIDHolder) Connection(org.apache.geode.cache.client.internal.Connection)

Aggregations

Connection (org.apache.geode.cache.client.internal.Connection)21 ServerRegionProxy (org.apache.geode.cache.client.internal.ServerRegionProxy)10 EventID (org.apache.geode.internal.cache.EventID)7 PoolImpl (org.apache.geode.cache.client.internal.PoolImpl)6 Region (org.apache.geode.cache.Region)5 Test (org.junit.Test)5 IOException (java.io.IOException)4 ServerLocation (org.apache.geode.distributed.internal.ServerLocation)4 ClientServerTest (org.apache.geode.test.junit.categories.ClientServerTest)4 CacheException (org.apache.geode.cache.CacheException)3 IntegrationTest (org.apache.geode.test.junit.categories.IntegrationTest)3 GemFireIOException (org.apache.geode.GemFireIOException)2 Statistics (org.apache.geode.Statistics)2 StatisticsType (org.apache.geode.StatisticsType)2 ServerConnectivityException (org.apache.geode.cache.client.ServerConnectivityException)2 ConnectionDestroyedException (org.apache.geode.cache.client.internal.pooling.ConnectionDestroyedException)2 EventIDHolder (org.apache.geode.internal.cache.EventIDHolder)2 LocalRegion (org.apache.geode.internal.cache.LocalRegion)2 WaitCriterion (org.apache.geode.test.dunit.WaitCriterion)2 DistributedTest (org.apache.geode.test.junit.categories.DistributedTest)2