List of usage examples for org.apache.thrift.server TServer stop
public void stop()
From source file:com.liveramp.hank.client.TestHankSmartClient.java
License:Apache License
@Test public void testIt() throws Exception { int server1Port = 12345; int server2Port = 12346; int server3Port = 12347; // launch server 1 final MockPartitionServerHandler iface1 = new MockPartitionServerHandler(VALUE_1); TNonblockingServerTransport transport1 = createPartitionServerTransport(server1Port); final TServer server1 = createPartitionServer(transport1, iface1); Thread thread1 = new Thread(new ServerRunnable(server1), "mock partition server thread 1"); thread1.start();/*from w w w. j a va 2 s.c o m*/ // launch server 2; final MockPartitionServerHandler iface2 = new MockPartitionServerHandler(VALUE_2); TNonblockingServerTransport transport2 = createPartitionServerTransport(server2Port); final TServer server2 = createPartitionServer(transport2, iface2); Thread thread2 = new Thread(new ServerRunnable(server2), "mock partition server thread 2"); thread2.start(); // launch server 3; final MockPartitionServerHandler iface3 = new MockPartitionServerHandler(VALUE_3); TNonblockingServerTransport transport3 = createPartitionServerTransport(server3Port); final TServer server3 = createPartitionServer(transport3, iface3); Thread thread3 = new Thread(new ServerRunnable(server3), "mock partition server thread 3"); thread3.start(); final MockDomain existentDomain = new MockDomain("existent_domain", 0, 2, new MapPartitioner(KEY_1, 0, KEY_2, 1, KEY_NOT_FOUND, 0), null, null, null); final MockDomain newDomain = new MockDomain("new_domain", 1, 1, new MapPartitioner(KEY_3, 0), null, null, null); final Host host1 = getHost(existentDomain, new PartitionServerAddress("localhost", server1Port), 0); final Host host2 = getHost(existentDomain, new PartitionServerAddress("localhost", server2Port), 1); final Host host3 = getHost(newDomain, new PartitionServerAddress("localhost", server3Port), 0); final Set<Host> mockRingHosts = new HashSet<Host>(); mockRingHosts.add(host1); mockRingHosts.add(host2); final MockRing mockRing = new MockRing(null, null, 1) { @Override public Set<Host> getHosts() { return mockRingHosts; } }; MockDomainGroup mockDomainGroup = new MockDomainGroup("myDomainGroup") { @Override public Set<DomainAndVersion> getDomainVersions() { return new HashSet<DomainAndVersion>(Arrays.asList(new DomainAndVersion(existentDomain, 1))); } }; final MockRingGroup mockRingGroup = new MockRingGroup(mockDomainGroup, "myRingGroup", Sets.newHashSet()) { @Override public Set<Ring> getRings() { return Collections.singleton((Ring) mockRing); } }; Coordinator mockCoord = new MockCoordinator() { @Override public RingGroup getRingGroup(String ringGroupName) { return mockRingGroup; } @Override public Domain getDomain(String domainName) { if (domainName.equals("existent_domain")) { return existentDomain; } else if (domainName.equals("new_domain")) { return newDomain; } else { return null; } } }; WaitUntil.orDie(() -> server1.isServing() && server2.isServing() && server3.isServing()); try { final HankSmartClient client = new HankSmartClient(mockCoord, "myRingGroup", new HankSmartClientOptions().setQueryTimeoutMs(1000)); final HankSmartClient cachingClient = new HankSmartClient(mockCoord, "myRingGroup", new HankSmartClientOptions().setResponseCacheEnabled(true).setResponseCacheNumItemsCapacity(1) .setResponseCacheNumBytesCapacity(-1).setResponseCacheExpirationSeconds(1)); // Test invalid get assertEquals(HankResponse.xception(HankException.no_such_domain(true)), client.get("nonexistent_domain", null)); // Test get assertEquals(HankResponse.value(VALUE_1), client.get("existent_domain", KEY_1)); assertEquals(HankResponse.value(VALUE_2), client.get("existent_domain", KEY_2)); // Test invalid getBulk assertEquals(HankBulkResponse.xception(HankException.no_such_domain(true)), client.getBulk("nonexistent_domain", null)); // Test getBulk HankBulkResponse bulkResponse1 = HankBulkResponse.responses(new ArrayList<>()); bulkResponse1.get_responses().add(HankResponse.value(VALUE_1)); bulkResponse1.get_responses().add(HankResponse.value(VALUE_2)); List<ByteBuffer> bulkRequest1 = new ArrayList<>(); bulkRequest1.add(KEY_1); bulkRequest1.add(KEY_2); assertEquals(bulkResponse1, client.getBulk("existent_domain", bulkRequest1)); // Test get with null key try { client.get("existent_domain", null); fail("Should throw an exception."); } catch (NullKeyException e) { // Good } // Test get with empty key try { client.get("existent_domain", ByteBuffer.wrap(new byte[0])); fail("Should throw an exception."); } catch (EmptyKeyException e) { // Good } // Host is not available host1.setState(HostState.UPDATING); assertEquals(HankResponse.xception(HankException.no_connection_available(true)), client.get("existent_domain", KEY_1)); // Host is offline but it's the only one, use it opportunistically host2.setState(HostState.OFFLINE); assertEquals(HankResponse.value(VALUE_2), client.get("existent_domain", KEY_2)); host1.setState(HostState.SERVING); host2.setState(HostState.SERVING); // Test location changes // Add new host that has new domain mockRingHosts.add(host3); // Should not be able to query new domain assertTrue(client.get("new_domain", KEY_3).get_xception().is_set_no_replica()); // Notify client of data location change client.onDataLocationChange(mockCoord.getRingGroup("myRingGroup")); // Should be able to query new domain when the client has done updating its cache WaitUntil.orDie(() -> HankResponse.value(VALUE_3).equals(client.get("new_domain", KEY_3))); assertEquals(HankResponse.value(VALUE_3), client.get("new_domain", KEY_3)); // TODO: Test not querying deletable partitions // Simulate servers that fail to perform gets iface1.setMode(MockPartitionServerHandler.Mode.FAILING); iface2.setMode(MockPartitionServerHandler.Mode.FAILING); assertTrue(client.get("existent_domain", KEY_1).get_xception().get_failed_retries() > 0); assertTrue(client.get("existent_domain", KEY_2).get_xception().get_failed_retries() > 0); // Simulate servers that throws an error iface1.setMode(MockPartitionServerHandler.Mode.THROWING_ERROR); iface2.setMode(MockPartitionServerHandler.Mode.THROWING_ERROR); assertTrue(client.get("existent_domain", KEY_1).get_xception().get_failed_retries() > 0); assertTrue(client.get("existent_domain", KEY_2).get_xception().get_failed_retries() > 0); // Simulate servers that hangs iface1.setMode(MockPartitionServerHandler.Mode.HANGING); iface2.setMode(MockPartitionServerHandler.Mode.HANGING); assertTrue(client.get("existent_domain", KEY_1).get_xception().get_failed_retries() > 0); assertTrue(client.get("existent_domain", KEY_2).get_xception().get_failed_retries() > 0); // Test caching iface1.setMode(MockPartitionServerHandler.Mode.NORMAL); iface2.setMode(MockPartitionServerHandler.Mode.NORMAL); iface3.setMode(MockPartitionServerHandler.Mode.NORMAL); iface1.clearNumRequests(); // One request assertEquals(HankResponse.value(VALUE_1), cachingClient.get("existent_domain", KEY_1)); assertEquals(1, iface1.getNumRequests()); // One cached request assertEquals(HankResponse.value(VALUE_1), cachingClient.get("existent_domain", KEY_1)); assertEquals(1, iface1.getNumRequests()); iface1.clearNumRequests(); // One not found request assertEquals(HankResponse.not_found(true), cachingClient.get("existent_domain", KEY_NOT_FOUND)); assertEquals(1, iface1.getNumRequests()); // One not found cached request assertEquals(HankResponse.not_found(true), cachingClient.get("existent_domain", KEY_NOT_FOUND)); assertEquals(1, iface1.getNumRequests()); // Wait for cache to expire Thread.sleep(2000); // Should not be in cache anymore assertEquals(HankResponse.not_found(true), cachingClient.get("existent_domain", KEY_NOT_FOUND)); assertEquals(2, iface1.getNumRequests()); } finally { server1.stop(); server2.stop(); thread1.join(); thread2.join(); transport1.close(); transport2.close(); } }
From source file:com.rapleaf.hank.client.TestHankSmartClient.java
License:Apache License
public void testIt() throws Exception { // launch server 1 final PartDaemon.Iface iface1 = new MockPartDaemonHandler(0, VALUE_1); TNonblockingServerSocket trans1 = null; while (true) { try {//from w ww .j a v a 2 s . c om trans1 = new TNonblockingServerSocket(server1Port); LOG.debug("succeeded in binding server 1 to port " + server1Port); break; } catch (TTransportException e) { LOG.debug("failed to bind to port " + server1Port); server1Port++; } } Args args = new Args(trans1); args.processor(new PartDaemon.Processor(iface1)); args.protocolFactory(new TCompactProtocol.Factory()); TServer server1 = new THsHaServer(args); Thread thread1 = new Thread(new ServerRunnable(server1), "mock part daemon #1"); thread1.start(); // launch server 2; final PartDaemon.Iface iface2 = new MockPartDaemonHandler(0, VALUE_2); server2Port = server1Port + 1; TNonblockingServerSocket trans2 = null; while (true) { try { trans2 = new TNonblockingServerSocket(server2Port); LOG.debug("succeeded in binding server 2 to port " + server2Port); break; } catch (TTransportException e) { LOG.debug("failed to bind to port " + server2Port); server2Port++; } } args = new Args(trans2); args.processor(new PartDaemon.Processor(iface2)); args.protocolFactory(new TCompactProtocol.Factory()); final TServer server2 = new THsHaServer(args); Thread thread2 = new Thread(new ServerRunnable(server2), "mock part daemon #2"); thread2.start(); final Host hostConfig1 = getHostConfig(new PartDaemonAddress("localhost", server1Port), 0); final Host hostConfig2 = getHostConfig(new PartDaemonAddress("localhost", server2Port), 1); final MockRing mockRingConfig = new MockRing(null, null, 1, RingState.UP) { @Override public Set<Host> getHostsForDomainPartition(int domainId, int partition) throws IOException { assertEquals(1, domainId); if (partition == 0) { return Collections.singleton(hostConfig1); } else if (partition == 1) { return Collections.singleton(hostConfig2); } fail("got partition id " + partition + " which is invalid"); throw new IllegalStateException(); } @Override public Set<Host> getHosts() { return new HashSet<Host>(Arrays.asList(hostConfig1, hostConfig2)); } }; final MockDomain existentDomain = new MockDomain("existent_domain", 2, new MapPartitioner(KEY_1, 0, KEY_2, 1), null, null, null); MockDomainGroup mockDomainGroupConfig = new MockDomainGroup("myDomainGroup") { private final Map<Integer, Domain> domains = new HashMap<Integer, Domain>() { { put(1, existentDomain); } }; @Override public Domain getDomain(int domainId) { return domains.get(domainId); } @Override public Integer getDomainId(String domainName) { if (domainName.equals("existent_domain")) { return 1; } else { return null; } } @Override public DomainGroupVersion getLatestVersion() { return new MockDomainGroupVersion( new HashSet<DomainGroupVersionDomainVersion>( Arrays.asList(new MockDomainGroupVersionDomainVersion(existentDomain, 1))), this, 1); } }; final MockRingGroup mockRingGroupConfig = new MockRingGroup(mockDomainGroupConfig, "myRingGroup", null) { @Override public Set<Ring> getRings() { return Collections.singleton((Ring) mockRingConfig); } }; Coordinator mockCoord = new MockCoordinator() { @Override public RingGroup getRingGroupConfig(String ringGroupName) { return mockRingGroupConfig; } }; Thread.sleep(1000); try { HankSmartClient c = new HankSmartClient(mockCoord, "myRingGroup", 1); assertEquals(HankResponse.xception(HankExceptions.no_such_domain(true)), c.get("nonexistent_domain", null)); assertEquals(HankResponse.value(VALUE_1), c.get("existent_domain", KEY_1)); assertEquals(HankResponse.value(VALUE_2), c.get("existent_domain", KEY_2)); } finally { server1.stop(); server2.stop(); thread1.join(); thread2.join(); trans1.close(); trans2.close(); } }
From source file:com.wmz7year.thrift.pool.BasicAbstractTest.java
License:Apache License
/** * thrift? */ protected void stopAllServers() { for (TServer tServer : servers) { tServer.stop(); } }
From source file:ezbake.thrift.ThriftServerPool.java
License:Apache License
/** * Shutdown all the running servers/*from w w w . ja v a2 s. c o m*/ */ public void shutdown() { for (TServer server : thriftServers) { server.stop(); } try { zookeeper.shutdown(); discovery.close(); } catch (IOException ex) { //don't care } }
From source file:io.airlift.drift.integration.TestClientsWithApacheServer.java
License:Apache License
private static int testApacheServer(boolean secure, Transport transport, Protocol protocol, TProcessor processor, List<ToIntFunction<HostAndPort>> clients) throws Exception { // Apache server does not support header transport if (transport == HEADER || protocol == FB_COMPACT) { return 0; }/*from www .j av a 2s .c o m*/ TTransportFactory transportFactory; switch (transport) { case UNFRAMED: transportFactory = new TTransportFactory(); break; case FRAMED: transportFactory = new TFramedTransport.Factory(); break; default: throw new IllegalArgumentException("Unsupported transport " + transport); } TProtocolFactory protocolFactory; switch (protocol) { case BINARY: protocolFactory = new TBinaryProtocol.Factory(); break; case COMPACT: protocolFactory = new TCompactProtocol.Factory(); break; default: throw new IllegalArgumentException("Unsupported protocol " + protocol); } try (TServerSocket serverSocket = createServerTransport(secure)) { TServer server = new TSimpleServer(new Args(serverSocket).protocolFactory(protocolFactory) .transportFactory(transportFactory).processor(processor)); Thread serverThread = new Thread(server::serve); try { serverThread.start(); int localPort = serverSocket.getServerSocket().getLocalPort(); HostAndPort address = HostAndPort.fromParts("localhost", localPort); int sum = 0; for (ToIntFunction<HostAndPort> client : clients) { sum += client.applyAsInt(address); } return sum; } finally { server.stop(); serverThread.interrupt(); } } }
From source file:io.airlift.drift.transport.apache.TestApacheThriftMethodInvoker.java
License:Apache License
private static int testProcessor(TProcessor processor, List<ToIntFunction<HostAndPort>> clients) throws Exception { try (TServerSocket serverTransport = new TServerSocket(0)) { TProtocolFactory protocolFactory = new Factory(); TTransportFactory transportFactory = new TFramedTransport.Factory(); TServer server = new TSimpleServer(new Args(serverTransport).protocolFactory(protocolFactory) .transportFactory(transportFactory).processor(processor)); Thread serverThread = new Thread(server::serve); try {//from w w w . j a v a 2 s . c o m serverThread.start(); int localPort = serverTransport.getServerSocket().getLocalPort(); HostAndPort address = HostAndPort.fromParts("localhost", localPort); int sum = 0; for (ToIntFunction<HostAndPort> client : clients) { sum += client.applyAsInt(address); } return sum; } finally { server.stop(); serverThread.interrupt(); } } }
From source file:io.airlift.drift.transport.netty.client.TestDriftNettyMethodInvoker.java
License:Apache License
private static int testProcessor(TProcessor processor, List<ToIntFunction<HostAndPort>> clients) throws Exception { try (TServerSocket serverTransport = new TServerSocket(0)) { TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); TTransportFactory transportFactory = new TFramedTransport.Factory(); TServer server = new TSimpleServer(new Args(serverTransport).protocolFactory(protocolFactory) .transportFactory(transportFactory).processor(processor)); Thread serverThread = new Thread(server::serve); try {/*from ww w . ja v a2 s.co m*/ serverThread.start(); int localPort = serverTransport.getServerSocket().getLocalPort(); HostAndPort address = HostAndPort.fromParts("localhost", localPort); int sum = 0; for (ToIntFunction<HostAndPort> client : clients) { sum += client.applyAsInt(address); } return sum; } finally { server.stop(); serverThread.interrupt(); } } }
From source file:org.apache.accumulo.cloudtrace.instrument.TracerTest.java
License:Apache License
@Test public void testThrift() throws Exception { TestReceiver tracer = new TestReceiver(); Tracer.getInstance().addReceiver(tracer); ServerSocket socket = new ServerSocket(0); TServerSocket transport = new TServerSocket(socket); transport.listen();/*from ww w . j a v a 2s . c o m*/ TThreadPoolServer.Args args = new TThreadPoolServer.Args(transport); args.processor(new TestService.Processor(TraceWrap.service(new Service()))); final TServer tserver = new TThreadPoolServer(args); Thread t = new Thread() { public void run() { tserver.serve(); } }; t.start(); TTransport clientTransport = new TSocket(new Socket("localhost", socket.getLocalPort())); TestService.Iface client = new TestService.Client(new TBinaryProtocol(clientTransport), new TBinaryProtocol(clientTransport)); client = TraceWrap.client(client); assertFalse(client.checkTrace(null, "test")); Span start = Trace.on("start"); assertTrue(client.checkTrace(null, "my test")); start.stop(); assertNotNull(tracer.traces.get(start.traceId())); String traces[] = { "my test", "checkTrace", "client:checkTrace", "start" }; assertTrue(tracer.traces.get(start.traceId()).size() == traces.length); for (int i = 0; i < traces.length; i++) assertEquals(traces[i], tracer.traces.get(start.traceId()).get(i).description); tserver.stop(); t.join(100); }
From source file:org.apache.accumulo.core.client.TestThrift1474.java
License:Apache License
@Test public void test() throws IOException, TException, InterruptedException { TServerSocket serverTransport = new TServerSocket(0); serverTransport.listen();/*from w ww.j a va 2s . c om*/ int port = serverTransport.getServerSocket().getLocalPort(); TestServer handler = new TestServer(); ThriftTest.Processor<ThriftTest.Iface> processor = new ThriftTest.Processor<ThriftTest.Iface>(handler); TThreadPoolServer.Args args = new TThreadPoolServer.Args(serverTransport); args.stopTimeoutVal = 10; args.stopTimeoutUnit = TimeUnit.MILLISECONDS; final TServer server = new TThreadPoolServer(args.processor(processor)); Thread thread = new Thread() { @Override public void run() { server.serve(); } }; thread.start(); while (!server.isServing()) { UtilWaitThread.sleep(10); } TTransport transport = new TSocket("localhost", port); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); ThriftTest.Client client = new ThriftTest.Client(protocol); assertTrue(client.success()); assertFalse(client.fails()); try { client.throwsError(); fail("no exception thrown"); } catch (ThriftSecurityException ex) { // expected } server.stop(); thread.join(); }
From source file:org.apache.accumulo.proxy.ProxyDurabilityIT.java
License:Apache License
@Test public void testDurability() throws Exception { Connector c = getConnector();/*w w w . j a v a 2 s. c o m*/ Properties props = new Properties(); props.put("instance", c.getInstance().getInstanceName()); props.put("zookeepers", c.getInstance().getZooKeepers()); props.put("tokenClass", PasswordToken.class.getName()); TJSONProtocol.Factory protocol = new TJSONProtocol.Factory(); int proxyPort = PortUtils.getRandomFreePort(); final TServer proxyServer = Proxy.createProxyServer(HostAndPort.fromParts("localhost", proxyPort), protocol, props).server; while (!proxyServer.isServing()) UtilWaitThread.sleep(100); Client client = new TestProxyClient("localhost", proxyPort, protocol).proxy(); Map<String, String> properties = new TreeMap<String, String>(); properties.put("password", ROOT_PASSWORD); ByteBuffer login = client.login("root", properties); String tableName = getUniqueNames(1)[0]; client.createTable(login, tableName, true, TimeType.MILLIS); assertTrue(c.tableOperations().exists(tableName)); WriterOptions options = new WriterOptions(); options.setDurability(Durability.NONE); String writer = client.createWriter(login, tableName, options); Map<ByteBuffer, List<ColumnUpdate>> cells = new TreeMap<ByteBuffer, List<ColumnUpdate>>(); ColumnUpdate column = new ColumnUpdate(bytes("cf"), bytes("cq")); column.setValue("value".getBytes()); cells.put(bytes("row"), Collections.singletonList(column)); client.update(writer, cells); client.closeWriter(writer); assertEquals(1, count(tableName)); restartTServer(); assertEquals(0, count(tableName)); ConditionalWriterOptions cfg = new ConditionalWriterOptions(); cfg.setDurability(Durability.LOG); String cwriter = client.createConditionalWriter(login, tableName, cfg); ConditionalUpdates updates = new ConditionalUpdates(); updates.addToConditions(new Condition(new Column(bytes("cf"), bytes("cq"), bytes("")))); updates.addToUpdates(column); Map<ByteBuffer, ConditionalStatus> status = client.updateRowsConditionally(cwriter, Collections.singletonMap(bytes("row"), updates)); assertEquals(ConditionalStatus.ACCEPTED, status.get(bytes("row"))); assertEquals(1, count(tableName)); restartTServer(); assertEquals(0, count(tableName)); proxyServer.stop(); }