Example usage for org.apache.hadoop.ipc Server stop

List of usage examples for org.apache.hadoop.ipc Server stop

Introduction

In this page you can find the example usage for org.apache.hadoop.ipc Server stop.

Prototype

public synchronized void stop() 

Source Link

Document

Stops the service.

Usage

From source file:rpc.TestRPC.java

License:Apache License

@Test
public void testServerAddress() throws IOException {
    Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true).build();
    InetSocketAddress bindAddr = null;
    try {/*from   w w  w .j a  va  2  s  .c  o  m*/
        bindAddr = NetUtils.getConnectAddress(server);
    } finally {
        server.stop();
    }
    assertEquals(InetAddress.getLocalHost(), bindAddr.getAddress());
}

From source file:rpc.TestRPC.java

License:Apache License

@Test
public void testErrorMsgForInsecureClient() throws IOException {
    Configuration serverConf = new Configuration(conf);
    SecurityUtil.setAuthenticationMethod(AuthenticationMethod.KERBEROS, serverConf);
    UserGroupInformation.setConfiguration(serverConf);

    final Server server = new RPC.Builder(serverConf).setProtocol(TestProtocol.class)
            .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true)
            .build();//from ww  w . j  a v  a 2s .c o  m
    server.start();

    UserGroupInformation.setConfiguration(conf);
    boolean succeeded = false;
    final InetSocketAddress addr = NetUtils.getConnectAddress(server);
    TestProtocol proxy = null;
    try {
        proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID, addr, conf);
        proxy.echo("");
    } catch (RemoteException e) {
        LOG.info("LOGGING MESSAGE: " + e.getLocalizedMessage());
        assertTrue(e.unwrapRemoteException() instanceof AccessControlException);
        succeeded = true;
    } finally {
        server.stop();
        if (proxy != null) {
            RPC.stopProxy(proxy);
        }
    }
    assertTrue(succeeded);

    conf.setInt(CommonConfigurationKeys.IPC_SERVER_RPC_READ_THREADS_KEY, 2);

    UserGroupInformation.setConfiguration(serverConf);
    final Server multiServer = new RPC.Builder(serverConf).setProtocol(TestProtocol.class)
            .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true)
            .build();
    multiServer.start();
    succeeded = false;
    final InetSocketAddress mulitServerAddr = NetUtils.getConnectAddress(multiServer);
    proxy = null;
    try {
        UserGroupInformation.setConfiguration(conf);
        proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID, mulitServerAddr, conf);
        proxy.echo("");
    } catch (RemoteException e) {
        LOG.info("LOGGING MESSAGE: " + e.getLocalizedMessage());
        assertTrue(e.unwrapRemoteException() instanceof AccessControlException);
        succeeded = true;
    } finally {
        multiServer.stop();
        if (proxy != null) {
            RPC.stopProxy(proxy);
        }
    }
    assertTrue(succeeded);
}

From source file:rpc.TestRPC.java

License:Apache License

/**
 * Test that server.stop() properly stops all threads
 *///from   w w w.  jav a 2s  . c om
@Test
public void testStopsAllThreads() throws IOException, InterruptedException {
    int threadsBefore = countThreads("Server$Listener$Reader");
    assertEquals("Expect no Reader threads running before test", 0, threadsBefore);

    final Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true).build();
    server.start();
    try {
        // Wait for at least one reader thread to start
        int threadsRunning = 0;
        long totalSleepTime = 0;
        do {
            totalSleepTime += 10;
            Thread.sleep(10);
            threadsRunning = countThreads("Server$Listener$Reader");
        } while (threadsRunning == 0 && totalSleepTime < 5000);

        // Validate that at least one thread started (we didn't timeout)
        threadsRunning = countThreads("Server$Listener$Reader");
        assertTrue(threadsRunning > 0);
    } finally {
        server.stop();
    }
    int threadsAfter = countThreads("Server$Listener$Reader");
    assertEquals("Expect no Reader threads left running after test", 0, threadsAfter);
}

From source file:rpc.TestRPC.java

License:Apache License

@Test(timeout = 90000)
public void testRPCInterruptedSimple() throws IOException {
    final Configuration conf = new Configuration();
    Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true).setSecretManager(null)
            .build();/*w w  w .  j  a  v  a  2 s.  co  m*/

    server.start();
    InetSocketAddress addr = NetUtils.getConnectAddress(server);

    final TestProtocol proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID, addr, conf);
    // Connect to the server
    proxy.ping();
    // Interrupt self, try another call
    Thread.currentThread().interrupt();
    try {
        proxy.ping();
        fail("Interruption did not cause IPC to fail");
    } catch (IOException ioe) {
        if (!ioe.toString().contains("InterruptedException")) {
            throw ioe;
        }
        // clear interrupt status for future tests
        Thread.interrupted();
    } finally {
        server.stop();
    }
}

From source file:rpc.TestRPC.java

License:Apache License

@Test(timeout = 30000)
public void testRPCInterrupted() throws IOException, InterruptedException {
    final Configuration conf = new Configuration();
    Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true).setSecretManager(null)
            .build();// w  w  w  . j av a  2  s  . co m

    server.start();

    int numConcurrentRPC = 200;
    InetSocketAddress addr = NetUtils.getConnectAddress(server);
    final CyclicBarrier barrier = new CyclicBarrier(numConcurrentRPC);
    final CountDownLatch latch = new CountDownLatch(numConcurrentRPC);
    final AtomicBoolean leaderRunning = new AtomicBoolean(true);
    final AtomicReference<Throwable> error = new AtomicReference<Throwable>();
    Thread leaderThread = null;

    for (int i = 0; i < numConcurrentRPC; i++) {
        final int num = i;
        final TestProtocol proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID, addr, conf);
        Thread rpcThread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    barrier.await();
                    while (num == 0 || leaderRunning.get()) {
                        proxy.slowPing(false);
                    }

                    proxy.slowPing(false);
                } catch (Exception e) {
                    if (num == 0) {
                        leaderRunning.set(false);
                    } else {
                        error.set(e);
                    }

                    LOG.error(e);
                } finally {
                    latch.countDown();
                }
            }
        });
        rpcThread.start();

        if (leaderThread == null) {
            leaderThread = rpcThread;
        }
    }
    // let threads get past the barrier
    Thread.sleep(1000);
    // stop a single thread
    while (leaderRunning.get()) {
        leaderThread.interrupt();
    }

    latch.await();

    // should not cause any other thread to get an error
    assertTrue("rpc got exception " + error.get(), error.get() == null);
    server.stop();
}

From source file:rpc.TestRPC.java

License:Apache License

@Test
public void testConnectionPing() throws Exception {
    Configuration conf = new Configuration();
    int pingInterval = 50;
    conf.setBoolean(CommonConfigurationKeys.IPC_CLIENT_PING_KEY, true);
    conf.setInt(CommonConfigurationKeys.IPC_PING_INTERVAL_KEY, pingInterval);
    final Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true).build();
    server.start();/*  ww  w.  j  av a2  s.  co  m*/

    final TestProtocol proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID,
            server.getListenerAddress(), conf);
    try {
        // this call will throw exception if server couldn't decode the ping
        proxy.sleep(pingInterval * 4);
    } finally {
        if (proxy != null)
            RPC.stopProxy(proxy);
        server.stop();
    }
}

From source file:rpc.TestRPC.java

License:Apache License

/**
 * Test RPC timeout.// ww w  .  j  a v  a 2  s  . c om
 */
@Test(timeout = 30000)
public void testClientRpcTimeout() throws Exception {
    final Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class).setInstance(new TestImpl())
            .setBindAddress(ADDRESS).setPort(0).setQueueSizePerHandler(1).setNumHandlers(1).setVerbose(true)
            .build();
    server.start();

    final Configuration conf = new Configuration();
    conf.setInt(CommonConfigurationKeys.IPC_CLIENT_RPC_TIMEOUT_KEY, 1000);
    final TestProtocol proxy = RPC.getProxy(TestProtocol.class, TestProtocol.versionID,
            NetUtils.getConnectAddress(server), conf);

    try {
        proxy.sleep(3000);
        fail("RPC should time out.");
    } catch (SocketTimeoutException e) {
        LOG.info("got expected timeout.", e);
    } finally {
        server.stop();
        RPC.stopProxy(proxy);
    }
}