/************************************************************************************** * Copyright (C) 2009 Progress Software, Inc. All rights reserved. * * http://fusesource.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the AGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package org.fusesource.cloudmix.testing.samples; import java.util.List; import java.util.Map; import java.util.Properties; import com.sun.jersey.api.client.UniformInterfaceException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.fusesource.cloudmix.common.ProcessClient; import org.fusesource.cloudmix.common.dto.AgentDetails; import org.fusesource.cloudmix.common.dto.FeatureDetails; import org.fusesource.cloudmix.testing.TestController; import org.junit.Test; import static org.junit.Assert.*; /** * @version $Revision$ */ public class ActiveMQMopTest extends TestController { private static final transient Log LOG = LogFactory.getLog(ActiveMQMopTest.class); protected FeatureDetails broker; protected FeatureDetails producer; protected FeatureDetails consumer; @Test public void testScenarioDeploys() throws Exception { System.out.println("TEST NAME: " + getTestName()); checkProvisioned(); System.out.println("Worked!!!"); List<AgentDetails> agents = getAgentsFor(broker); assertTrue("has some agents", !agents.isEmpty()); for (AgentDetails agent : agents) { System.out.println("Broker agent: " + agent.getHostname()); } System.out.println("Configuration Properties = {"); Properties properties = getConfigurationProperties(); for (Map.Entry<Object, Object> entry : properties.entrySet()) { System.out.println(" " + entry.getKey() + " " + entry.getValue()); } System.out.println("}"); assertEquals("Number of configuration properties", 1, properties.size()); String brokerUrl = properties.getProperty("broker.url"); assertNotNull("should have broker.url configuration property", brokerUrl); System.out.println("BrokerURL: " + brokerUrl); // show the processes List<? extends ProcessClient> producerProcesses = getProcessClientsFor(producer); assertEquals("size of producer processes", 1, producerProcesses.size()); ProcessClient processClient = producerProcesses.get(0); assertNotNull("Should have a processClient for a producer", processClient); System.out.println("ProcessClient: " + processClient); // now lets get the log so far! String log = null; for (int i = 0; i < 20; i++) { if (i > 0) { Thread.sleep(5000); LOG.info("Reattempting to get the log"); } try { log = processClient.directoryResource("output.log").get(String.class); if (log != null) { break; } } catch (UniformInterfaceException e) { LOG.warn("Failed to find log " + e); } } assertNotNull("Should not have a null log!", log); System.out.println("Process Log >>>>"); System.out.println(log); Thread.sleep(10000); } public Properties getConfigurationProperties() { return gridClient.getProperties(profileId); } protected void installFeatures() { /* Properties properties = System.getProperties(); for (Map.Entry<Object, Object> entry : properties.entrySet()) { System.out.println(" " + entry.getKey() + " = " + entry.getValue()); } */ // TODO get this from system properties? String version = "1.3-SNAPSHOT"; broker = createFeatureDetails("amq-test-broker", "mop:jar org.fusesource.cloudmix:org.fusesource.cloudmix.tests.broker:" + version) .maximumInstances("1") .property("broker.url", "Strings.mkString(('tcp://' + hostname + ':61616' in agents), 'failover:(', ',', ')?maxReconnectAttempts=2')"); producer = createFeatureDetails("amq-test-producer", "mop:jar org.fusesource.cloudmix:org.fusesource.cloudmix.tests.producer:" + version) .depends(broker).maximumInstances("2"); consumer = createFeatureDetails("amq-test-consumer", "mop:jar org.fusesource.cloudmix:org.fusesource.cloudmix.tests.consumer:" + version) .depends(broker).maximumInstances("3"); addFeatures(broker, producer, consumer); } }