use of io.undertow.client.ClientResponse in project light-rest-4j by networknt.
the class ValidatorHandlerTest method testDeleteWithoutHeader.
@Test
public void testDeleteWithoutHeader() throws Exception {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI("http://localhost:8080"), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/v2/pet/111").setMethod(Methods.DELETE);
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
Assert.assertEquals(400, statusCode);
if (statusCode == 400) {
Status status = Config.getInstance().getMapper().readValue(reference.get().getAttachment(Http2Client.RESPONSE_BODY), Status.class);
Assert.assertNotNull(status);
Assert.assertEquals("ERR11017", status.getCode());
}
}
use of io.undertow.client.ClientResponse in project light-rest-4j by networknt.
the class OpenApiHandlerTest method testWrongPath.
@Test
public void testWrongPath() throws Exception {
// this path is not in petstore swagger specification. get error
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI("http://localhost:8080"), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/get").setMethod(Methods.GET);
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
Assert.assertEquals(404, statusCode);
if (statusCode == 404) {
Status status = Config.getInstance().getMapper().readValue(reference.get().getAttachment(Http2Client.RESPONSE_BODY), Status.class);
Assert.assertNotNull(status);
Assert.assertEquals("ERR10007", status.getCode());
}
}
use of io.undertow.client.ClientResponse in project light-4j by networknt.
the class Server method loadConfig.
/**
* Load config files from light-config-server instance. This is normally only
* used when you run light-4j server as standalone java process. If the server
* is dockerized and orchestrated by Kubernetes, the config files and secret will
* be mapped to Kubernetes ConfigMap and Secret and passed into the container.
*
* Of course, you can still use it with standalone docker container but it is not
* recommended.
*/
private static void loadConfig() {
// if it is necessary to load config files from config server
// Here we expect at least env(dev/sit/uat/prod) and optional config server url
String env = System.getProperty(LIGHT_ENV);
if (env == null) {
logger.warn("Warning! No light-env has been passed in from command line. Default to dev");
env = DEFAULT_ENV;
}
String configUri = System.getProperty(LIGHT_CONFIG_SERVER_URI);
if (configUri != null) {
// try to get config files from the server.
String targetMergeDirectory = System.getProperty(Config.LIGHT_4J_CONFIG_DIR);
if (targetMergeDirectory == null) {
logger.warn("Warning! No light-4j-config-dir has been passed in from command line.");
return;
}
String version = Util.getJarVersion();
String service = config.getServiceId();
String tempDir = System.getProperty("java.io.tmpdir");
String zipFile = tempDir + "/config.zip";
// /v1/config/1.2.4/dev/com.networknt.petstore-1.0.0
String path = "/v1/config/" + version + "/" + env + "/" + service;
Http2Client client = Http2Client.getInstance();
ClientConnection connection = null;
try {
connection = client.connect(new URI(configUri), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.create(UndertowOptions.ENABLE_HTTP2, true)).get();
} catch (Exception e) {
logger.error("Exeption:", e);
}
final CountDownLatch latch = new CountDownLatch(1);
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setMethod(Methods.GET).setPath(path);
request.getRequestHeaders().put(Headers.HOST, "localhost");
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
int statusCode = reference.get().getResponseCode();
if (statusCode >= 300) {
logger.error("Failed to load config from config server" + statusCode + ":" + reference.get().getAttachment(Http2Client.RESPONSE_BODY));
throw new Exception("Failed to load config from config server: " + statusCode);
} else {
// TODO test it out
FileOutputStream fos = new FileOutputStream(zipFile);
fos.write(reference.get().getAttachment(Http2Client.RESPONSE_BODY).getBytes());
fos.close();
unzipFile(zipFile, targetMergeDirectory);
}
} catch (Exception e) {
logger.error("Exception:", e);
} finally {
IoUtils.safeClose(connection);
}
} else {
logger.info("light-config-server-uri is missing in the command line. Use local config files");
}
}
use of io.undertow.client.ClientResponse in project light-4j by networknt.
the class PrometheusHandlerTest method testMetrics.
@Test
public void testMetrics() throws Exception {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI("http://localhost:8080"), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/v2/pet/111").setMethod(Methods.GET);
request.getRequestHeaders().put(Headers.AUTHORIZATION, "Bearer eyJraWQiOiIxMDAiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJ1cm46Y29tOm5ldHdvcmtudDpvYXV0aDI6djEiLCJhdWQiOiJ1cm46Y29tLm5ldHdvcmtudCIsImV4cCI6MTc5MDAzNTcwOSwianRpIjoiSTJnSmdBSHN6NzJEV2JWdUFMdUU2QSIsImlhdCI6MTQ3NDY3NTcwOSwibmJmIjoxNDc0Njc1NTg5LCJ2ZXJzaW9uIjoiMS4wIiwidXNlcl9pZCI6InN0ZXZlIiwidXNlcl90eXBlIjoiRU1QTE9ZRUUiLCJjbGllbnRfaWQiOiJmN2Q0MjM0OC1jNjQ3LTRlZmItYTUyZC00YzU3ODc0MjFlNzIiLCJzY29wZSI6WyJ3cml0ZTpwZXRzIiwicmVhZDpwZXRzIl19.mue6eh70kGS3Nt2BCYz7ViqwO7lh_4JSFwcHYdJMY6VfgKTHhsIGKq2uEDt3zwT56JFAePwAxENMGUTGvgceVneQzyfQsJeVGbqw55E9IfM_uSM-YcHwTfR7eSLExN4pbqzVDI353sSOvXxA98ZtJlUZKgXNE1Ngun3XFORCRIB_eH8B0FY_nT_D1Dq2WJrR-re-fbR6_va95vwoUdCofLRa4IpDfXXx19ZlAtfiVO44nw6CS8O87eGfAm7rCMZIzkWlCOFWjNHnCeRsh7CVdEH34LF-B48beiG5lM7h4N12-EME8_VDefgMjZ8eqs1ICvJMxdIut58oYbdnkwTjkA");
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
Assert.assertEquals(200, statusCode);
Assert.assertEquals("test", body);
}
use of io.undertow.client.ClientResponse in project light-4j by networknt.
the class ServerTest method getHandlerTest.
@Test
public void getHandlerTest() throws ClientException, ApiException {
final Http2Client client = Http2Client.getInstance();
final CountDownLatch latch = new CountDownLatch(1);
final ClientConnection connection;
try {
connection = client.connect(new URI(url), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true) : OptionMap.EMPTY).get();
} catch (Exception e) {
throw new ClientException(e);
}
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
try {
ClientRequest request = new ClientRequest().setPath("/test").setMethod(Methods.GET);
request.getRequestHeaders().put(Headers.HOST, "localhost");
connection.sendRequest(request, client.createClientCallback(reference, latch));
latch.await();
} catch (Exception e) {
logger.error("Exception: ", e);
throw new ClientException(e);
} finally {
IoUtils.safeClose(connection);
}
int statusCode = reference.get().getResponseCode();
String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
Assert.assertEquals(200, statusCode);
Assert.assertNotNull(body);
}
Aggregations