/** * 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.camel.component.infinispan.processor.aggregate; import java.util.Set; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; import org.apache.camel.impl.DefaultExchangeHolder; import org.infinispan.configuration.cache.Configuration; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; /** * Unite test for {@link InfinispanLocalAggregationRepository} */ public class InfinispanLocalAggregationRepositoryOperationsTest { private static InfinispanLocalAggregationRepository aggregationRepository; private CamelContext camelContext = new DefaultCamelContext(); @BeforeClass public static void starting() throws Exception { Configuration conf = new ConfigurationBuilder().build(); aggregationRepository = new InfinispanLocalAggregationRepository(); aggregationRepository.setConfiguration(conf); aggregationRepository.start(); } @AfterClass public static void stopping() throws Exception { aggregationRepository.stop(); } private boolean exists(String key) { DefaultExchangeHolder holder = aggregationRepository.getCache().get(key); if (holder == null) { return false; } return true; } @Test public void testAdd() { // Given String key = "Add"; assertFalse(exists(key)); Exchange exchange = new DefaultExchange(camelContext); // When aggregationRepository.add(camelContext, key, exchange); // Then assertTrue(exists(key)); } @Test public void testGetExists() { // Given String key = "Get_Exists"; Exchange exchange = new DefaultExchange(camelContext); aggregationRepository.add(camelContext, key, exchange); assertTrue(exists(key)); // When Exchange exchange2 = aggregationRepository.get(camelContext, key); // Then assertNotNull(exchange2); assertEquals(exchange.getExchangeId(), exchange2.getExchangeId()); } @Test public void testGetNotExists() { // Given String key = "Get_NotExists"; assertFalse(exists(key)); // When Exchange exchange2 = aggregationRepository.get(camelContext, key); // Then assertNull(exchange2); } @Test public void testRemoveExists() { // Given String key = "Remove_Exists"; Exchange exchange = new DefaultExchange(camelContext); aggregationRepository.add(camelContext, key, exchange); assertTrue(exists(key)); // When aggregationRepository.remove(camelContext, key, exchange); // Then assertFalse(exists(key)); } @Test public void testRemoveNotExists() { // Given String key = "RemoveNotExists"; Exchange exchange = new DefaultExchange(camelContext); assertFalse(exists(key)); // When aggregationRepository.remove(camelContext, key, exchange); // Then assertFalse(exists(key)); } @Test public void testGetKeys() { // Given String[] keys = {"GetKeys1", "GetKeys2"}; addExchanges(keys); // When Set<String> keySet = aggregationRepository.getKeys(); // Then for (String key : keys) { assertTrue(keySet.contains(key)); } } @Test public void testConfirmExist() { // Given for (int i = 1; i < 4; i++) { String key = "Confirm_" + i; Exchange exchange = new DefaultExchange(camelContext); exchange.setExchangeId("Exchange_" + i); aggregationRepository.add(camelContext, key, exchange); assertTrue(exists(key)); } // When aggregationRepository.confirm(camelContext, "Confirm_2"); // Then assertTrue(exists("Confirm_1")); assertFalse(exists("Confirm_2")); assertTrue(exists("Confirm_3")); } @Test public void testConfirmNotExist() { // Given String[] keys = new String[3]; for (int i = 1; i < 4; i++) { keys[i - 1] = "Confirm" + i; } addExchanges(keys); for (String key : keys) { assertTrue(exists(key)); } // When aggregationRepository.confirm(camelContext, "Exchange-Confirm5"); // Then for (String key : keys) { assertTrue(exists(key)); } } private void addExchanges(String... keys) { for (String key : keys) { Exchange exchange = new DefaultExchange(camelContext); exchange.setExchangeId("Exchange-" + key); aggregationRepository.add(camelContext, key, exchange); } } @Test public void testScan() { // Given String[] keys = {"Scan1", "Scan2"}; addExchanges(keys); // When Set<String> exchangeIdSet = aggregationRepository.scan(camelContext); // Then for (String key : keys) { assertTrue(exchangeIdSet.contains(key)); } } @Test public void testRecover() { // Given String[] keys = {"Recover1", "Recover2"}; addExchanges(keys); // When Exchange exchange2 = aggregationRepository.recover(camelContext, "Recover2"); Exchange exchange3 = aggregationRepository.recover(camelContext, "Recover3"); // Then assertNotNull(exchange2); assertNull(exchange3); } }