CAMEL-10925: fixing camel-ehcache test

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/29ef57ed
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/29ef57ed
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/29ef57ed

Branch: refs/heads/master
Commit: 29ef57ed7b6c30d04bf1bd6cad10a377cdc052b1
Parents: 0189547
Author: Nicola Ferraro <ni.ferr...@gmail.com>
Authored: Wed Mar 15 17:16:41 2017 +0100
Committer: Nicola Ferraro <ni.ferr...@gmail.com>
Committed: Wed Mar 15 17:53:31 2017 +0100

----------------------------------------------------------------------
 .../camel/itest/springboot/CamelCacheTest.java  |   1 +
 .../springboot/util/ArquillianPackager.java     |   4 +-
 .../itest/springboot/util/JarExporter.java      |   3 +-
 .../test/resources/components/cache-ehcache.xml | 286 +++++++++++++++++++
 4 files changed, 291 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/29ef57ed/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCacheTest.java
----------------------------------------------------------------------
diff --git 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCacheTest.java
 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCacheTest.java
index 770a973..958ee8a 100644
--- 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCacheTest.java
+++ 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelCacheTest.java
@@ -36,6 +36,7 @@ public class CamelCacheTest extends 
AbstractSpringBootTestSupport {
         return new ITestConfigBuilder()
                 .module(inferModuleName(CamelCacheTest.class))
                 
.unitTestExclusionPattern(".*(\\.integration\\..*|XXXTest$|BaseCacheTest$)")
+                .resource("components/cache-ehcache.xml", "ehcache.xml")
                 .build();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/29ef57ed/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
----------------------------------------------------------------------
diff --git 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
index f2c9d8f..f94f388 100644
--- 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
+++ 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
@@ -119,11 +119,11 @@ public final class ArquillianPackager {
         }
 
         if (config.getUseCustomLog()) {
-            ark = ark.addAsResource("spring-logback.xml", 
"/spring-logback.xml");
+            ark = ark.addAsResource("spring-logback.xml", CLASSES_FOLDER + 
"/spring-logback.xml");
         }
 
         for (Map.Entry<String, String> res : config.getResources().entrySet()) 
{
-            ark = ark.addAsResource(res.getKey(), "/" + res.getValue());
+            ark = ark.addAsResource(res.getKey(), CLASSES_FOLDER + "/" + 
res.getValue());
         }
 
         String version = 
System.getProperty("version_org.apache.camel:camel-core");

http://git-wip-us.apache.org/repos/asf/camel/blob/29ef57ed/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java
----------------------------------------------------------------------
diff --git 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java
 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java
index b68ac46..4f0de2e 100644
--- 
a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java
+++ 
b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java
@@ -32,7 +32,8 @@ public class JarExporter {
     public void exportJar() throws Exception {
 
         Archive<?> archive = ArquillianPackager.springBootPackage(new 
ITestConfigBuilder()
-                .module("camel-jetty9")
+                .module("camel-cache")
+                .resource("components/cache-ehcache.xml", "ehcache.xml")
                 .build());
 
         new ZipExporterImpl(archive).exportTo(new File("target/export.zip"), 
true);

http://git-wip-us.apache.org/repos/asf/camel/blob/29ef57ed/tests/camel-itest-spring-boot/src/test/resources/components/cache-ehcache.xml
----------------------------------------------------------------------
diff --git 
a/tests/camel-itest-spring-boot/src/test/resources/components/cache-ehcache.xml 
b/tests/camel-itest-spring-boot/src/test/resources/components/cache-ehcache.xml
new file mode 100644
index 0000000..c3afce7
--- /dev/null
+++ 
b/tests/camel-itest-spring-boot/src/test/resources/components/cache-ehcache.xml
@@ -0,0 +1,286 @@
+<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
+
+    <!--
+    The ehcache-failsafe.xml is a default configuration for ehcache, if an 
ehcache.xml is not configured.
+
+    The diskStore element is optional. It must be configured if you have 
overflowToDisk or diskPersistent enabled
+    for any cache. If it is not configured, a warning will be issues and 
java.io.tmpdir will be used.
+
+    diskStore has only one attribute - "path". It is the path to the directory 
where .data and .index files will be created.
+
+    If the path is a Java System Property it is replaced by its value in the
+    running VM.
+
+    The following properties are translated:
+    * user.home - User's home directory
+    * user.dir - User's current working directory
+    * java.io.tmpdir - Default temp file path
+    * ehcache.disk.store.dir - A system property you would normally specify on 
the command line
+          e.g. java -Dehcache.disk.store.dir=/u01/myapp/diskdir ...
+
+    Subdirectories can be specified below the property e.g. java.io.tmpdir/one
+
+    -->
+    <diskStore path="java.io.tmpdir"/>
+
+    <!--
+    Specifies a CacheManagerEventListenerFactory, be used to create a 
CacheManagerPeerProvider,
+    which is notified when Caches are added or removed from the CacheManager.
+
+    The attributes of CacheManagerEventListenerFactory are:
+    * class - a fully qualified factory class name
+    * properties - comma separated properties having meaning only to the 
factory.
+
+    Sets the fully qualified class name to be registered as the CacheManager 
event listener.
+
+    The events include:
+    * adding a Cache
+    * removing a Cache
+
+    Callbacks to listener methods are synchronous and unsynchronized. It is 
the responsibility
+    of the implementer to safely handle the potential performance and thread 
safety issues
+    depending on what their listener is doing.
+
+    If no class is specified, no listener is created. There is no default.
+
+    <cacheManagerEventListenerFactory class="" properties=""/>
+    -->
+
+    <!--
+    (Enable for distributed operation)
+
+    Specifies a CacheManagerPeerProviderFactory which will be used to create a
+    CacheManagerPeerProvider, which discovers other CacheManagers in the 
cluster.
+
+    The attributes of cacheManagerPeerProviderFactory are:
+    * class - a fully qualified factory class name
+    * properties - comma separated properties having meaning only to the 
factory.
+
+    Ehcache comes with a built-in RMI-based distribution system with two means 
of discovery of
+    CacheManager peers participating in the cluster:
+    * automatic, using a multicast group. This one automatically discovers 
peers and detects
+      changes such as peers entering and leaving the group
+    * manual, using manual rmiURL configuration. A hardcoded list of peers is 
provided at
+      configuration time.
+
+    Configuring Automatic Discovery:
+    Automatic discovery is configured as per the following example:
+    <cacheManagerPeerProviderFactory
+                        
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
+                        properties="peerDiscovery=automatic, 
multicastGroupAddress=230.0.0.1,
+                                    multicastGroupPort=4446, timeToLive=32"/>
+
+    Valid properties are:
+    * peerDiscovery (mandatory) - specify "automatic"
+    * multicastGroupAddress (mandatory) - specify a valid multicast group 
address
+    * multicastGroupPort (mandatory) - specify a dedicated port for the 
multicast heartbeat
+      traffic
+    * timeToLive - specify a value between 0 and 255 which determines how far 
the packets will propagate.
+      By convention, the restrictions are:
+      0   - the same host
+      1   - the same subnet
+      32  - the same site
+      64  - the same region
+      128 - the same continent
+      255 - unrestricted
+
+
+    Configuring Manual Discovery:
+    Manual discovery is configured as per the following example:
+    <cacheManagerPeerProviderFactory class=
+                          
"net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
+                          properties="peerDiscovery=manual,
+                          
rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1
+                          | 
//server1:40000/sampleCache2|//server2:40000/sampleCache2"/>
+
+    Valid properties are:
+    * peerDiscovery (mandatory) - specify "manual"
+    * rmiUrls (mandatory) - specify a pipe separated list of rmiUrls, in the 
form
+                            //hostname:port
+
+    The hostname is the hostname of the remote CacheManager peer. The port is 
the listening
+    port of the RMICacheManagerPeerListener of the remote CacheManager peer.
+
+    <cacheManagerPeerProviderFactory
+            
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
+            properties="peerDiscovery=automatic,
+                        multicastGroupAddress=230.0.0.1,
+                        multicastGroupPort=4446, timeToLive=1"/>
+    -->
+
+    <!--
+    (Enable for distributed operation)
+
+    Specifies a CacheManagerPeerListenerFactory which will be used to create a
+    CacheManagerPeerListener, which
+    listens for messages from cache replicators participating in the cluster.
+
+    The attributes of cacheManagerPeerListenerFactory are:
+    class - a fully qualified factory class name
+    properties - comma separated properties having meaning only to the factory.
+
+    Ehcache comes with a built-in RMI-based distribution system. The listener 
component is
+    RMICacheManagerPeerListener which is configured using
+    RMICacheManagerPeerListenerFactory. It is configured as per the following 
example:
+
+    <cacheManagerPeerListenerFactory
+        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
+        properties="hostName=fully_qualified_hostname_or_ip,
+                    port=40001,
+                    socketTimeoutMillis=120000"/>
+
+    All properties are optional. They are:
+    * hostName - the hostName of the host the listener is running on. Specify
+      where the host is multihomed and you want to control the interface over 
which cluster
+      messages are received. Defaults to the host name of the default 
interface if not
+      specified.
+    * port - the port the listener listens on. This defaults to a free port if 
not specified.
+    * socketTimeoutMillis - the number of ms client sockets will stay open 
when sending
+      messages to the listener. This should be long enough for the slowest 
message.
+      If not specified it defaults 120000ms.
+
+    <cacheManagerPeerListenerFactory
+            
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>
+    -->
+
+
+    <!-- Cache configuration.
+
+    The following attributes are required.
+
+    name:
+    Sets the name of the cache. This is used to identify the cache. It must be 
unique.
+
+    maxElementsInMemory:
+    Sets the maximum number of objects that will be created in memory (0 == no 
limit)
+
+       maxElementsOnDisk:
+    Sets the maximum number of objects that will be maintained in the DiskStore
+       The default value is zero, meaning unlimited.
+
+    eternal:
+    Sets whether elements are eternal. If eternal,  timeouts are ignored and 
the
+    element is never expired.
+
+    overflowToDisk:
+    Sets whether elements can overflow to disk when the in-memory cache
+    has reached the maxInMemory limit.
+
+    The following attributes are optional.
+
+    timeToIdleSeconds:
+    Sets the time to idle for an element before it expires.
+    i.e. The maximum amount of time between accesses before an element expires
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that an Element can idle for 
infinity.
+    The default value is 0.
+
+    timeToLiveSeconds:
+    Sets the time to live for an element before it expires.
+    i.e. The maximum time between creation time and when an element expires.
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that and Element can live for 
infinity.
+    The default value is 0.
+
+    diskPersistent:
+    Whether the disk store persists between restarts of the Virtual Machine.
+    The default value is false.
+
+    diskExpiryThreadIntervalSeconds:
+    The number of seconds between runs of the disk expiry thread. The default 
value
+    is 120 seconds.
+
+    diskSpoolBufferSizeMB:
+    This is the size to allocate the DiskStore for a spool buffer. Writes are 
made
+    to this area and then asynchronously written to disk. The default size is 
30MB.
+    Each spool buffer is used only by its cache. If you get OutOfMemory errors 
consider
+    lowering this value. To improve DiskStore performance consider increasing 
it. Trace level
+    logging in the DiskStore will show if put back ups are occurring.
+
+    memoryStoreEvictionPolicy:
+    Policy would be enforced upon reaching the maxElementsInMemory limit. 
Default
+    policy is Least Recently Used (specified as LRU). Other policies available 
-
+    First In First Out (specified as FIFO) and Less Frequently Used
+    (specified as LFU)
+
+    Cache elements can also contain sub elements which take the same format of 
a factory class
+    and properties. Defined sub-elements are:
+
+    * cacheEventListenerFactory - Enables registration of listeners for cache 
events, such as
+      put, remove, update, and expire.
+
+    * bootstrapCacheLoaderFactory - Specifies a BootstrapCacheLoader, which is 
called by a
+      cache on initialisation to prepopulate itself.
+
+    Each cache that will be distributed needs to set a cache event listener 
which replicates
+    messages to the other CacheManager peers. For the built-in RMI 
implementation this is done
+    by adding a cacheEventListenerFactory element of type 
RMICacheReplicatorFactory to each
+    distributed cache's configuration as per the following example:
+
+    <cacheEventListenerFactory 
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
+         properties="replicateAsynchronously=true,
+         replicatePuts=true,
+         replicateUpdates=true,
+         replicateUpdatesViaCopy=true,
+         replicateRemovals=true "/>
+
+    The RMICacheReplicatorFactory recognises the following properties:
+
+    * replicatePuts=true|false - whether new elements placed in a cache are
+      replicated to others. Defaults to true.
+
+    * replicateUpdates=true|false - whether new elements which override an
+      element already existing with the same key are replicated. Defaults to 
true.
+
+    * replicateRemovals=true - whether element removals are replicated. 
Defaults to true.
+
+    * replicateAsynchronously=true | false - whether replications are
+      asynchronous (true) or synchronous (false). Defaults to true.
+
+    * replicateUpdatesViaCopy=true | false - whether the new elements are
+      copied to other caches (true), or whether a remove message is sent. 
Defaults to true.
+
+
+    * asynchronousReplicationIntervalMillis=<number of milliseconds> - The 
asynchronous
+      replicator runs at a set interval of milliseconds. The default is 1000. 
The minimum
+      is 10. This property is only applicable if replicateAsynchronously=true
+
+    * asynchronousReplicationMaximumBatchSize=<number of operations> - The 
maximum
+      number of operations that will be batch within a single RMI message.  
The default
+      is 1000. This property is only applicable if replicateAsynchronously=true
+
+    The RMIBootstrapCacheLoader bootstraps caches in clusters where 
RMICacheReplicators are
+    used. It is configured as per the following example:
+
+    <bootstrapCacheLoaderFactory
+        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
+        properties="bootstrapAsynchronously=true, 
maximumChunkSizeBytes=5000000"/>
+
+    The RMIBootstrapCacheLoaderFactory recognises the following optional 
properties:
+
+    * bootstrapAsynchronously=true|false - whether the bootstrap happens in 
the background
+      after the cache has started. If false, bootstrapping must complete 
before the cache is
+      made available. The default value is true.
+
+    * maximumChunkSizeBytes=<integer> - Caches can potentially be very large, 
larger than the
+      memory limits of the VM. This property allows the bootstraper to fetched 
elements in
+      chunks. The default chunk size is 5000000 (5MB).
+
+    -->
+
+
+    <!--
+    Mandatory Default Cache configuration. These settings will be applied to 
caches
+    created programmtically using CacheManager.add(String cacheName)
+    -->
+    <defaultCache
+            maxElementsInMemory="10000"
+            eternal="false"
+            timeToIdleSeconds="120"
+            timeToLiveSeconds="120"
+            maxElementsOnDisk="10000000"
+            diskExpiryThreadIntervalSeconds="120"
+            memoryStoreEvictionPolicy="LRU">
+        <persistence strategy="localTempSwap"/>
+    </defaultCache>
+</ehcache>

Reply via email to