Search in sources :

Example 6 with WeaveRunResources

use of com.continuuity.weave.api.WeaveRunResources in project weave by continuuity.

the class ResourceReportTestRun method testResourceReport.

@Test
public void testResourceReport() throws InterruptedException, ExecutionException, IOException, URISyntaxException, TimeoutException {
    WeaveRunner runner = YarnTestSuite.getWeaveRunner();
    WeaveController controller = runner.prepare(new ResourceApplication()).addLogHandler(new PrinterLogHandler(new PrintWriter(System.out, true))).withApplicationArguments("echo").withArguments("echo1", "echo1").withArguments("echo2", "echo2").start();
    final CountDownLatch running = new CountDownLatch(1);
    controller.addListener(new ServiceListenerAdapter() {

        @Override
        public void running() {
            running.countDown();
        }
    }, Threads.SAME_THREAD_EXECUTOR);
    Assert.assertTrue(running.await(30, TimeUnit.SECONDS));
    // wait for 3 echo servers to come up
    Iterable<Discoverable> echoServices = controller.discoverService("echo");
    Assert.assertTrue(YarnTestSuite.waitForSize(echoServices, 3, 60));
    ResourceReport report = controller.getResourceReport();
    // make sure resources for echo1 and echo2 are there
    Map<String, Collection<WeaveRunResources>> usedResources = report.getResources();
    Assert.assertEquals(2, usedResources.keySet().size());
    Assert.assertTrue(usedResources.containsKey("echo1"));
    Assert.assertTrue(usedResources.containsKey("echo2"));
    Collection<WeaveRunResources> echo1Resources = usedResources.get("echo1");
    // 2 instances of echo1
    Assert.assertEquals(2, echo1Resources.size());
    // TODO: check cores after hadoop-2.1.0
    for (WeaveRunResources resources : echo1Resources) {
        Assert.assertEquals(128, resources.getMemoryMB());
    }
    Collection<WeaveRunResources> echo2Resources = usedResources.get("echo2");
    // 2 instances of echo1
    Assert.assertEquals(1, echo2Resources.size());
    // TODO: check cores after hadoop-2.1.0
    for (WeaveRunResources resources : echo2Resources) {
        Assert.assertEquals(256, resources.getMemoryMB());
    }
    // Decrease number of instances of echo1 from 2 to 1
    controller.changeInstances("echo1", 1);
    echoServices = controller.discoverService("echo1");
    Assert.assertTrue(YarnTestSuite.waitForSize(echoServices, 1, 60));
    report = controller.getResourceReport();
    // make sure resources for echo1 and echo2 are there
    usedResources = report.getResources();
    Assert.assertEquals(2, usedResources.keySet().size());
    Assert.assertTrue(usedResources.containsKey("echo1"));
    Assert.assertTrue(usedResources.containsKey("echo2"));
    echo1Resources = usedResources.get("echo1");
    // 1 instance of echo1 now
    Assert.assertEquals(1, echo1Resources.size());
    // TODO: check cores after hadoop-2.1.0
    for (WeaveRunResources resources : echo1Resources) {
        Assert.assertEquals(128, resources.getMemoryMB());
    }
    echo2Resources = usedResources.get("echo2");
    // 2 instances of echo1
    Assert.assertEquals(1, echo2Resources.size());
    // TODO: check cores after hadoop-2.1.0
    for (WeaveRunResources resources : echo2Resources) {
        Assert.assertEquals(256, resources.getMemoryMB());
    }
    controller.stop().get(30, TimeUnit.SECONDS);
    // Sleep a bit before exiting.
    TimeUnit.SECONDS.sleep(2);
}
Also used : WeaveRunner(com.continuuity.weave.api.WeaveRunner) Discoverable(com.continuuity.weave.discovery.Discoverable) ServiceListenerAdapter(com.continuuity.weave.common.ServiceListenerAdapter) CountDownLatch(java.util.concurrent.CountDownLatch) WeaveRunResources(com.continuuity.weave.api.WeaveRunResources) PrinterLogHandler(com.continuuity.weave.api.logging.PrinterLogHandler) Collection(java.util.Collection) WeaveController(com.continuuity.weave.api.WeaveController) ResourceReport(com.continuuity.weave.api.ResourceReport) PrintWriter(java.io.PrintWriter) Test(org.junit.Test)

Aggregations

WeaveRunResources (com.continuuity.weave.api.WeaveRunResources)6 DefaultWeaveRunResources (com.continuuity.weave.internal.DefaultWeaveRunResources)2 JsonObject (com.google.gson.JsonObject)2 Collection (java.util.Collection)2 ResourceReport (com.continuuity.weave.api.ResourceReport)1 RunId (com.continuuity.weave.api.RunId)1 WeaveController (com.continuuity.weave.api.WeaveController)1 WeaveRunner (com.continuuity.weave.api.WeaveRunner)1 PrinterLogHandler (com.continuuity.weave.api.logging.PrinterLogHandler)1 ServiceListenerAdapter (com.continuuity.weave.common.ServiceListenerAdapter)1 Discoverable (com.continuuity.weave.discovery.Discoverable)1 DefaultResourceReport (com.continuuity.weave.internal.DefaultResourceReport)1 WeaveContainerController (com.continuuity.weave.internal.WeaveContainerController)1 TypeToken (com.google.gson.reflect.TypeToken)1 PrintWriter (java.io.PrintWriter)1 Map (java.util.Map)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Test (org.junit.Test)1