/* * #%L * Wildfly Camel :: Testsuite * %% * Copyright (C) 2013 - 2015 RedHat * %% * Licensed 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. * #L% */ package org.wildfly.camel.test.cassandra; import java.util.List; import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.cassandraunit.CassandraCQLUnit; import org.cassandraunit.dataset.CQLDataSet; import org.cassandraunit.dataset.cql.ClassPathCQLDataSet; import org.cassandraunit.utils.EmbeddedCassandraServerHelper; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.as.arquillian.api.ServerSetup; import org.jboss.as.arquillian.api.ServerSetupTask; import org.jboss.as.arquillian.container.ManagementClient; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Assert; import org.junit.Assume; import org.junit.Test; import org.junit.runner.RunWith; import org.wildfly.camel.test.common.utils.EnvironmentUtils; import org.wildfly.extension.camel.CamelAware; @CamelAware @RunWith(Arquillian.class) @ServerSetup({ CassandraIntegrationTest.CassandraServerSetup.class }) public class CassandraIntegrationTest { static final String HOST = "127.0.0.1"; static final String KEYSPACE = "camel_ks"; static final String CQL = "select login, first_name, last_name from camel_user"; static class CassandraServerSetup implements ServerSetupTask { @Override public void setup(ManagementClient managementClient, String containerId) throws Exception { if (!EnvironmentUtils.isAIX()) { EmbeddedCassandraServerHelper.startEmbeddedCassandra("/camel-cassandra.yaml", "target/camel-cassandra", 30000); new LoadableCassandraCQLUnit(new ClassPathCQLDataSet("cassandra/BasicDataSet.cql", KEYSPACE), "/camel-cassandra.yaml").setup(); } } @Override public void tearDown(ManagementClient managementClient, String containerId) throws Exception { if (!EnvironmentUtils.isAIX()) { EmbeddedCassandraServerHelper.cleanEmbeddedCassandra(); } } static class LoadableCassandraCQLUnit extends CassandraCQLUnit { LoadableCassandraCQLUnit(CQLDataSet dataSet, String configFile) { super(dataSet, configFile); } void setup() { super.load(); } } } @Deployment public static JavaArchive createdeployment() { return ShrinkWrap.create(JavaArchive.class, "cassandra-tests") .addClasses(EnvironmentUtils.class); } @Test public void testConsumeAll() throws Exception { Assume.assumeFalse("[#1622] Cassandra crashes build on AIX", EnvironmentUtils.isAIX()); CamelContext camelctx = new DefaultCamelContext(); camelctx.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from("cql://localhost/camel_ks?cql=" + CQL).to("seda:end"); } }); camelctx.start(); try { ConsumerTemplate consumer = camelctx.createConsumerTemplate(); List<?> result = consumer.receiveBody("seda:end", 3000, List.class); Assert.assertNotNull("Result not null", result); Assert.assertEquals("Two records selected", 2, result.size()); } finally { camelctx.stop(); } } }