use of com.predic8.membrane.core.interceptor.oauth2.Client in project service-proxy by membrane.
the class DynamicRegistration method registerWithCallbackAt.
public Client registerWithCallbackAt(String callbackUri, String registrationEndpoint) throws Exception {
Exchange exc = new Request.Builder().post(registrationEndpoint).header(Header.CONTENT_TYPE, MimeType.APPLICATION_JSON_UTF8).body(getRegistrationBody(callbackUri)).buildExchange();
Response response = doRequest(exc);
HashMap<String, String> json = Util.parseSimpleJSONResponse(response);
if (!json.containsKey("client_id") || !json.containsKey("client_secret"))
throw new RuntimeException("Registration endpoint didn't return clientId/clientSecret");
return new Client(json.get("client_id"), json.get("client_secret"), "");
}
use of com.predic8.membrane.core.interceptor.oauth2.Client in project service-proxy by membrane.
the class LoadBalancingInterceptorTest method testFailOverOnConnectionRefused.
@Test
public void testFailOverOnConnectionRefused() throws Exception {
balancingInterceptor.setDispatchingStrategy(roundRobinStrategy);
HttpClient client = new HttpClient();
client.getParams().setParameter(HttpProtocolParams.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(0, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(1, mockInterceptor2.getCount());
service1.shutdown();
Thread.sleep(1000);
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(2, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(3, mockInterceptor2.getCount());
}
use of com.predic8.membrane.core.interceptor.oauth2.Client in project service-proxy by membrane.
the class LoadBalancingInterceptorTest method testFailOverOnStatus500.
@Test
public void testFailOverOnStatus500() throws Exception {
balancingInterceptor.setDispatchingStrategy(roundRobinStrategy);
HttpClient client = new HttpClient();
client.getParams().setParameter(HttpProtocolParams.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(0, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(1, mockInterceptor2.getCount());
((ServiceProxy) service1.getRuleManager().getRules().get(0)).getInterceptors().add(0, new AbstractInterceptor() {
@Override
public Outcome handleRequest(Exchange exc) throws Exception {
exc.setResponse(Response.internalServerError().build());
return Outcome.ABORT;
}
});
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(2, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(3, mockInterceptor2.getCount());
}
use of com.predic8.membrane.core.interceptor.oauth2.Client in project service-proxy by membrane.
the class LoadBalancerSession3Test method test.
/**
* The test as described in README.txt, but "wsimport" (previously called by ant)
* was removed and is run directly from this test before everything else. Thereby
* we can use a Maven dependency on wsimport and do not have to download it ourselves.
*/
@Test
public void test() throws IOException, InterruptedException {
File base = getExampleDir("loadbalancer-session-3");
AssertUtils.replaceInFile(new File(base, "proxies.xml"), "8080", "3023");
AssertUtils.replaceInFile(new File(base, "src/com/predic8/chat/Client.java"), "8080", "3023");
AssertUtils.replaceInFile(new File(base, "data/ChatService.wsdl"), "8080", "3023");
Process2 sl = new Process2.Builder().in(base).script("service-proxy").waitForMembrane().start();
try {
File buildXML = new File(base, "build.xml");
// remove <exec...</exec> from build.xml
String s = Pattern.compile("<exec.*</exec>", Pattern.DOTALL).matcher(FileUtils.readFileToString(buildXML)).replaceAll("");
FileUtils.writeStringToFile(buildXML, s);
File classes = new File(base, "build" + File.separator + "classes");
classes.mkdirs();
File source = new File(base, "src");
source.mkdirs();
// run "wsimport" generating java sources
Assert.assertTrue(new com.sun.tools.ws.wscompile.WsimportTool(System.out).run(new String[] { "-quiet", "-Xnocompile", new File(base, "data" + File.separator + "ChatService.wsdl").getAbsolutePath(), "-s", source.getAbsolutePath() }));
// call "ant compile" now so that both antNodeX processes do call it at the same time
BufferLogger loggerCompile = new BufferLogger();
Process2 antCompile = new Process2.Builder().in(base).withWatcher(loggerCompile).executable("ant compile").start();
try {
int result = antCompile.waitFor(60000);
if (result != 0)
throw new AssertionError("'ant compile' returned non-zero " + result + ":\r\n" + loggerCompile.toString());
} finally {
antCompile.killScript();
}
BufferLogger loggerNode1 = new BufferLogger();
BufferLogger loggerNode2 = new BufferLogger();
Process2 antNode1 = new Process2.Builder().in(base).withWatcher(loggerNode1).executable("ant run-node1").start();
try {
Process2 antNode2 = new Process2.Builder().in(base).withWatcher(loggerNode2).executable("ant run-node2").start();
try {
LoadBalancerUtil.addLBNodeViaHTML("http://localhost:9000/admin/", "localhost", 4000);
LoadBalancerUtil.addLBNodeViaHTML("http://localhost:9000/admin/", "localhost", 4001);
// wait for nodes to come up
Thread.sleep(1000);
Process2 antClient = new Process2.Builder().in(base).executable("ant run-client -Dlogin=jim").start();
try {
antClient.waitFor(60000);
} finally {
antClient.killScript();
}
} finally {
antNode2.killScript();
}
} finally {
antNode1.killScript();
}
AssertUtils.assertContains("Hallo World", loggerNode1.toString());
AssertUtils.assertContainsNot("Hallo World", loggerNode2.toString());
} finally {
sl.killScript();
}
}
use of com.predic8.membrane.core.interceptor.oauth2.Client in project service-proxy by membrane.
the class LoadBalancingInterceptorTest method testExpect100Continue.
@Test
public void testExpect100Continue() throws Exception {
balancingInterceptor.setDispatchingStrategy(roundRobinStrategy);
HttpClient client = new HttpClient();
Http11Test.initExpect100ContinueWithFastFail(client);
PostMethod vari = getPostMethod();
int status = client.executeMethod(vari);
assertEquals(200, status);
assertEquals(1, mockInterceptor1.getCount());
assertEquals(0, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(1, mockInterceptor1.getCount());
assertEquals(1, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(2, mockInterceptor1.getCount());
assertEquals(1, mockInterceptor2.getCount());
assertEquals(200, client.executeMethod(getPostMethod()));
assertEquals(2, mockInterceptor1.getCount());
assertEquals(2, mockInterceptor2.getCount());
}
Aggregations