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();
}
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);
}
}
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.");
}
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();
}
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();
}
Aggregations