| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.activemq.karaf.itest; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertTrue; |
| import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut; |
| import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile; |
| |
| import java.io.File; |
| import java.util.concurrent.Callable; |
| |
| import org.junit.Ignore; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.ops4j.pax.exam.Configuration; |
| import org.ops4j.pax.exam.Option; |
| import org.ops4j.pax.exam.junit.PaxExam; |
| |
| @RunWith(PaxExam.class) |
| public class ActiveMQBrokerNdExternalCamelFeatureTest extends AbstractFeatureTest { |
| |
| @Configuration |
| public static Option[] configure() { |
| return new Option[] // |
| { |
| configure("activemq"), |
| // copy camel.xml into a temporary directory in karaf, so we later can hot-deploy it |
| replaceConfigurationFile("data/tmp/camel.xml", new File(RESOURCE_BASE + "camel.xml")), |
| editConfigurationFilePut("etc/system.properties", "camel.version", camelVersion()) |
| }; |
| } |
| |
| @Ignore("camel.xml from auto deploy directory does not seem to get picked up, no idea why atm") |
| @Test(timeout = 2 * 60 * 1000) |
| public void test() throws Throwable { |
| assertFeatureInstalled("activemq"); |
| installAndAssertFeature("camel"); |
| installAndAssertFeature("camel-jms"); |
| |
| assertBrokerStarted(); |
| withinReason(new Runnable() { |
| @Override |
| public void run() { |
| getBundle("org.apache.camel.camel-jms"); |
| } |
| }); |
| |
| // hot deploy the camel.xml file by copying it to the deploy directory |
| String karafDir = System.getProperty("karaf.base"); |
| System.err.println("Karaf is running in dir: " + karafDir); |
| System.err.println("Hot deploying Camel application"); |
| copyFile(new File(karafDir + "/data/tmp/camel.xml"), new File(karafDir + "/deploy/camel.xml")); |
| |
| withinReason(new Callable<Boolean>(){ |
| @Override |
| public Boolean call() throws Exception { |
| assertTrue("we have camel consumers", executeCommand("activemq:dstat").trim().contains("camel_in")); |
| return true; |
| } |
| }); |
| |
| // produce and consume |
| JMSTester tester = new JMSTester(); |
| tester.produceMessage("camel_in"); |
| assertEquals("got our message", "camel_in", tester.consumeMessage("camel_out")); |
| tester.close(); |
| } |
| |
| } |