Search in sources :

Example 1 with AssertUtils.replaceInFile

use of com.predic8.membrane.test.AssertUtils.replaceInFile 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();
    }
}
Also used : Process2(com.predic8.membrane.examples.Process2) BufferLogger(com.predic8.membrane.examples.util.BufferLogger) File(java.io.File) Test(org.junit.Test)

Example 2 with AssertUtils.replaceInFile

use of com.predic8.membrane.test.AssertUtils.replaceInFile in project service-proxy by membrane.

the class LoadBalancerMultiple4Test method test.

@Test
public void test() throws IOException, InterruptedException {
    File base = getExampleDir("loadbalancer-multiple-4");
    AssertUtils.replaceInFile(new File(base, "proxies.xml"), "8080", "3023");
    AssertUtils.replaceInFile(new File(base, "proxies.xml"), "8081", "3024");
    Process2 sl = new Process2.Builder().in(base).script("service-proxy").waitForMembrane().start();
    try {
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(3, LoadBalancerUtil.getRespondingNode("http://localhost:3024/service"));
        assertEquals(4, LoadBalancerUtil.getRespondingNode("http://localhost:3024/service"));
        assertEquals(3, LoadBalancerUtil.getRespondingNode("http://localhost:3024/service"));
        assertEquals(4, LoadBalancerUtil.getRespondingNode("http://localhost:3024/service"));
        String status = getAndAssert200("http://localhost:9000/admin/clusters/show?balancer=balancer1&cluster=Default");
        assertNodeStatus(status, "localhost", 4000, "UP");
        assertNodeStatus(status, "localhost", 4001, "UP");
        getAndAssert(204, "http://localhost:9010/clustermanager/down?balancer=balancer1&host=localhost&port=4001");
        Thread.sleep(1000);
        status = getAndAssert200("http://localhost:9000/admin/clusters/show?balancer=balancer1&cluster=Default");
        assertNodeStatus(status, "localhost", 4000, "UP");
        assertNodeStatus(status, "localhost", 4001, "DOWN");
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
    } finally {
        sl.killScript();
    }
}
Also used : Process2(com.predic8.membrane.examples.Process2) File(java.io.File) Test(org.junit.Test)

Example 3 with AssertUtils.replaceInFile

use of com.predic8.membrane.test.AssertUtils.replaceInFile in project service-proxy by membrane.

the class SSLClient method test.

@Test
public void test() throws IOException, InterruptedException, NoSuchAlgorithmException, KeyManagementException {
    File baseDir = getExampleDir("ssl-client");
    AssertUtils.replaceInFile(new File(baseDir, "proxies.xml"), "8080", "3023");
    Process2 sl = new Process2.Builder().in(baseDir).script("service-proxy").waitForMembrane().start();
    try {
        AssertUtils.assertContains("<title>Google", getAndAssert200("http://localhost:3023/"));
    } finally {
        sl.killScript();
    }
}
Also used : Process2(com.predic8.membrane.examples.Process2) File(java.io.File) Test(org.junit.Test)

Example 4 with AssertUtils.replaceInFile

use of com.predic8.membrane.test.AssertUtils.replaceInFile in project service-proxy by membrane.

the class REST2SOAPJSONTest method test.

@Test
public void test() throws IOException, InterruptedException {
    File baseDir = getExampleDir("rest2soap-json");
    AssertUtils.replaceInFile(new File(baseDir, "proxies.xml"), "2000", "2043");
    Process2 sl = new Process2.Builder().in(baseDir).script("service-proxy").waitForMembrane().start();
    try {
        assertContains("\"bic\":\"COLSDE33XXX\"", getAndAssert200("http://localhost:2043/bank/37050198", new String[] { "Accept", "application/json" }));
        assertContains("\"bic\":\"GENODE61KIR\"", getAndAssert200("http://localhost:2043/bank/66762332", new String[] { "Accept", "application/json" }));
    } finally {
        sl.killScript();
    }
}
Also used : Process2(com.predic8.membrane.examples.Process2) File(java.io.File) Test(org.junit.Test)

Example 5 with AssertUtils.replaceInFile

use of com.predic8.membrane.test.AssertUtils.replaceInFile in project service-proxy by membrane.

the class LoadBalancerBasic1Test method test.

@Test
public void test() throws IOException, InterruptedException {
    File base = getExampleDir("loadbalancer-basic-1");
    AssertUtils.replaceInFile(new File(base, "proxies.xml"), "8080", "3023");
    Process2 sl = new Process2.Builder().in(base).script("service-proxy").waitForMembrane().start();
    try {
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:4000/"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:4001/"));
        assertEquals(3, LoadBalancerUtil.getRespondingNode("http://localhost:4002/"));
        addLBNodeViaHTML("http://localhost:9000/admin/", "localhost", 4000);
        addLBNodeViaHTML("http://localhost:9000/admin/", "localhost", 4001);
        Thread.sleep(1000);
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        getAndAssert(204, "http://localhost:9010/clustermanager/up?host=localhost&port=4002");
        AssertUtils.assertContains("localhost:4002", getAndAssert200("http://localhost:9000/admin/clusters/show?cluster=Default"));
        assertEquals(3, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(1, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(2, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
        assertEquals(3, LoadBalancerUtil.getRespondingNode("http://localhost:3023/service"));
    } finally {
        sl.killScript();
    }
}
Also used : Process2(com.predic8.membrane.examples.Process2) File(java.io.File) Test(org.junit.Test)

Aggregations

Process2 (com.predic8.membrane.examples.Process2)8 File (java.io.File)8 Test (org.junit.Test)8 BufferLogger (com.predic8.membrane.examples.util.BufferLogger)1 FileUtils.writeStringToFile (org.apache.commons.io.FileUtils.writeStringToFile)1