Search in sources :

Example 31 with HttpExchange

use of com.sun.net.httpserver.HttpExchange in project heron by twitter.

the class NetworkUtilsTest method testSendHttpResponse.

@Test
public void testSendHttpResponse() throws Exception {
    HttpExchange exchange = Mockito.mock(HttpExchange.class);
    Mockito.doNothing().when(exchange).sendResponseHeaders(Matchers.anyInt(), Matchers.anyLong());
    OutputStream os = Mockito.mock(OutputStream.class);
    Mockito.doReturn(os).when(exchange).getResponseBody();
    Mockito.doNothing().when(os).write(Matchers.any(byte[].class));
    Mockito.doNothing().when(os).close();
    Assert.assertTrue(NetworkUtils.sendHttpResponse(exchange, new byte[0]));
    Mockito.verify(exchange).getResponseBody();
    Mockito.verify(os, Mockito.atLeastOnce()).write(Matchers.any(byte[].class));
    Mockito.verify(os, Mockito.atLeastOnce()).close();
}
Also used : OutputStream(java.io.OutputStream) HttpExchange(com.sun.net.httpserver.HttpExchange) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Example 32 with HttpExchange

use of com.sun.net.httpserver.HttpExchange in project jdk8u_jdk by JetBrains.

the class HeadTest method server.

static void server() throws Exception {
    InetSocketAddress inetAddress = new InetSocketAddress(0);
    HttpServer server = HttpServer.create(inetAddress, 5);
    try {
        server.setExecutor(Executors.newFixedThreadPool(5));
        HttpContext chunkedContext = server.createContext("/chunked");
        chunkedContext.setHandler(new HttpHandler() {

            @Override
            public void handle(HttpExchange msg) {
                try {
                    try {
                        if (msg.getRequestMethod().equals("HEAD")) {
                            msg.getRequestBody().close();
                            msg.getResponseHeaders().add("Transfer-encoding", "chunked");
                            msg.sendResponseHeaders(200, -1);
                        }
                    } catch (IOException ioe) {
                        ioe.printStackTrace();
                    }
                } finally {
                    msg.close();
                }
            }
        });
        HttpContext clContext = server.createContext("/content");
        clContext.setHandler(new HttpHandler() {

            @Override
            public void handle(HttpExchange msg) {
                try {
                    try {
                        if (msg.getRequestMethod().equals("HEAD")) {
                            msg.getRequestBody().close();
                            msg.getResponseHeaders().add("Content-length", "1024");
                            msg.sendResponseHeaders(200, -1);
                        }
                    } catch (IOException ioe) {
                        ioe.printStackTrace();
                    }
                } finally {
                    msg.close();
                }
            }
        });
        server.start();
        String urlStr = "http://localhost:" + server.getAddress().getPort() + "/";
        System.out.println("Server is at " + urlStr);
        // Run the chunked client
        for (int i = 0; i < 10; i++) {
            runClient(urlStr + "chunked/");
        }
        // Run the content length client
        for (int i = 0; i < 10; i++) {
            runClient(urlStr + "content/");
        }
    } finally {
        // Stop the server
        ((ExecutorService) server.getExecutor()).shutdown();
        server.stop(0);
    }
}
Also used : HttpHandler(com.sun.net.httpserver.HttpHandler) InetSocketAddress(java.net.InetSocketAddress) HttpServer(com.sun.net.httpserver.HttpServer) HttpContext(com.sun.net.httpserver.HttpContext) HttpExchange(com.sun.net.httpserver.HttpExchange) ExecutorService(java.util.concurrent.ExecutorService) IOException(java.io.IOException)

Example 33 with HttpExchange

use of com.sun.net.httpserver.HttpExchange in project jdk8u_jdk by JetBrains.

the class MissingTrailingSpace method main.

public static void main(String[] args) throws Exception {
    HttpServer server = HttpServer.create(new InetSocketAddress(0), 0);
    try {
        server.setExecutor(Executors.newFixedThreadPool(1));
        server.createContext(someContext, new HttpHandler() {

            @Override
            public void handle(HttpExchange msg) {
                try {
                    try {
                        msg.sendResponseHeaders(noMsgCode, -1);
                    } catch (IOException ioe) {
                        ioe.printStackTrace();
                    }
                } finally {
                    msg.close();
                }
            }
        });
        server.start();
        System.out.println("Server started at port " + server.getAddress().getPort());
        runRawSocketHttpClient("localhost", server.getAddress().getPort());
    } finally {
        ((ExecutorService) server.getExecutor()).shutdown();
        server.stop(0);
    }
    System.out.println("Server finished.");
}
Also used : HttpHandler(com.sun.net.httpserver.HttpHandler) InetSocketAddress(java.net.InetSocketAddress) HttpServer(com.sun.net.httpserver.HttpServer) HttpExchange(com.sun.net.httpserver.HttpExchange) ExecutorService(java.util.concurrent.ExecutorService) IOException(java.io.IOException)

Example 34 with HttpExchange

use of com.sun.net.httpserver.HttpExchange in project cdap by caskdata.

the class RuntimeMonitorTest method testRunTimeMonitor.

@Test
public void testRunTimeMonitor() throws Exception {
    Map<String, String> topics = new HashMap<>();
    topics.put(Constants.AppFabric.PROGRAM_STATUS_RECORD_EVENT_TOPIC, "status");
    httpServer.createContext("/v3/runtime/monitor/topics", new HttpHandler() {

        public void handle(HttpExchange exchange) throws IOException {
            byte[] response = GSON.toJson(topics).getBytes();
            exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length);
            exchange.getResponseBody().write(response);
            exchange.close();
        }
    });
    ConnectionConfig connectionConfig = ConnectionConfig.builder().setHostname(address.getHostName()).setPort(1234).setSSLEnabled(false).build();
    ClientConfig.Builder clientConfigBuilder = ClientConfig.builder().setDefaultReadTimeout(20000).setConnectionConfig(connectionConfig);
    int limit = 2;
    MessagingContext messagingContext = new MultiThreadMessagingContext(messagingService);
    RuntimeMonitor runtimeMonitor = new RuntimeMonitor(new ProgramRunId("test", "app1", ProgramType.WORKFLOW, "p1", "run1"), cConf, messagingContext.getMessagePublisher(), clientConfigBuilder.build());
    Map<String, List<MonitorMessage>> messages = new LinkedHashMap<>();
    ArrayList<MonitorMessage> list = new ArrayList<>();
    list.add(new MonitorMessage("1", "message1"));
    list.add(new MonitorMessage("2", "message2"));
    list.add(new MonitorMessage("3", "message3"));
    list.add(new MonitorMessage("4", "message4"));
    list.add(new MonitorMessage("5", "message5"));
    list.add(new MonitorMessage("6", "message6"));
    list.add(new MonitorMessage("7", "message7"));
    list.add(new MonitorMessage("8", "message8"));
    list.add(new MonitorMessage("9", "message9"));
    list.add(new MonitorMessage("10", "message10"));
    messages.put("status", list);
    httpServer.createContext("/v3/runtime/metadata", new HttpHandler() {

        int count = 0;

        public void handle(HttpExchange exchange) throws IOException {
            Map<String, List<MonitorMessage>> toSend = new LinkedHashMap<>();
            ArrayList<MonitorMessage> list = new ArrayList<>();
            int start = count;
            int i = 0;
            for (MonitorMessage message : messages.get("status")) {
                if (start <= i && i < start + limit) {
                    list.add(message);
                    count++;
                }
                i++;
            }
            toSend.put("status", list);
            byte[] response = GSON.toJson(toSend).getBytes();
            exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length);
            exchange.getResponseBody().write(response);
            exchange.close();
        }
    });
    HashSet<String> expected = new LinkedHashSet<>();
    expected.add("message1");
    expected.add("message2");
    expected.add("message3");
    expected.add("message4");
    expected.add("message5");
    expected.add("message6");
    expected.add("message7");
    expected.add("message8");
    expected.add("message9");
    expected.add("message10");
    HashSet<String> actual = new LinkedHashSet<>();
    final String[] messageId = { null };
    runtimeMonitor.startAndWait();
    Tasks.waitFor(true, new Callable<Boolean>() {

        @Override
        public Boolean call() throws Exception {
            MessageFetcher messageFetcher = messagingContext.getMessageFetcher();
            try (CloseableIterator<Message> iter = messageFetcher.fetch(NamespaceId.SYSTEM.getNamespace(), cConf.get(Constants.AppFabric.PROGRAM_STATUS_EVENT_TOPIC), 2, messageId[0])) {
                while (iter.hasNext()) {
                    Message message = iter.next();
                    messageId[0] = message.getId();
                    actual.add(message.getPayloadAsString());
                }
            }
            return expected.size() == actual.size() && expected.equals(actual);
        }
    }, 5, TimeUnit.MINUTES);
    runtimeMonitor.stopAndWait();
}
Also used : LinkedHashSet(java.util.LinkedHashSet) MessageFetcher(co.cask.cdap.api.messaging.MessageFetcher) Message(co.cask.cdap.api.messaging.Message) MonitorMessage(co.cask.cdap.internal.app.runtime.monitor.MonitorMessage) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) MultiThreadMessagingContext(co.cask.cdap.internal.app.runtime.messaging.MultiThreadMessagingContext) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) List(java.util.List) ClientConfig(co.cask.cdap.client.config.ClientConfig) ConnectionConfig(co.cask.cdap.client.config.ConnectionConfig) HttpHandler(com.sun.net.httpserver.HttpHandler) CloseableIterator(co.cask.cdap.api.dataset.lib.CloseableIterator) RuntimeMonitor(co.cask.cdap.internal.app.runtime.monitor.RuntimeMonitor) HttpExchange(com.sun.net.httpserver.HttpExchange) MonitorMessage(co.cask.cdap.internal.app.runtime.monitor.MonitorMessage) IOException(java.io.IOException) UnsupportedTypeException(co.cask.cdap.api.data.schema.UnsupportedTypeException) IOException(java.io.IOException) MessagingContext(co.cask.cdap.api.messaging.MessagingContext) MultiThreadMessagingContext(co.cask.cdap.internal.app.runtime.messaging.MultiThreadMessagingContext) ProgramRunId(co.cask.cdap.proto.id.ProgramRunId) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Test(org.junit.Test)

Example 35 with HttpExchange

use of com.sun.net.httpserver.HttpExchange in project incubator-heron by apache.

the class NetworkUtilsTest method testReadHttpRequestBodyFail.

@Test
public void testReadHttpRequestBodyFail() throws Exception {
    HttpExchange exchange = Mockito.mock(HttpExchange.class);
    Headers headers = Mockito.mock(Headers.class);
    Mockito.doReturn(headers).when(exchange).getRequestHeaders();
    Mockito.doReturn("-1").when(headers).getFirst(Matchers.anyString());
    Assert.assertArrayEquals(new byte[0], NetworkUtils.readHttpRequestBody(exchange));
    Mockito.doReturn("10").when(headers).getFirst(Matchers.anyString());
    InputStream inputStream = Mockito.mock(InputStream.class);
    Mockito.doReturn(inputStream).when(exchange).getRequestBody();
    Mockito.doThrow(new IOException("Designed IO exception for testing")).when(inputStream).read(Matchers.any(byte[].class), Matchers.anyInt(), Matchers.anyInt());
    Assert.assertArrayEquals(new byte[0], NetworkUtils.readHttpRequestBody(exchange));
    Mockito.verify(inputStream, Mockito.atLeastOnce()).close();
}
Also used : Headers(com.sun.net.httpserver.Headers) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) HttpExchange(com.sun.net.httpserver.HttpExchange) IOException(java.io.IOException) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Aggregations

HttpExchange (com.sun.net.httpserver.HttpExchange)56 Test (org.junit.Test)36 IOException (java.io.IOException)25 HttpHandler (com.sun.net.httpserver.HttpHandler)22 InetSocketAddress (java.net.InetSocketAddress)19 OutputStream (java.io.OutputStream)18 Mockito.doAnswer (org.mockito.Mockito.doAnswer)16 InvocationOnMock (org.mockito.invocation.InvocationOnMock)16 Answer (org.mockito.stubbing.Answer)16 CountDownLatch (java.util.concurrent.CountDownLatch)12 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)12 HttpServer (com.sun.net.httpserver.HttpServer)11 Matchers.anyString (org.mockito.Matchers.anyString)11 Headers (com.sun.net.httpserver.Headers)10 AtomicReference (java.util.concurrent.atomic.AtomicReference)10 StreamQueryDescriptor (com.urbanairship.connect.client.model.StreamQueryDescriptor)9 InputStream (java.io.InputStream)9 JsonObject (com.google.gson.JsonObject)8 ByteArrayInputStream (java.io.ByteArrayInputStream)6 ByteArrayOutputStream (java.io.ByteArrayOutputStream)4