1
2
3
4
5
6
7 package org.mule.cache.config;
8
9 import org.mule.cache.CachingMessageProcessor;
10 import org.mule.cache.CachingStrategy;
11 import org.mule.cache.ObjectStoreCachingStrategy;
12 import org.mule.cache.filter.ConsumableMuleMessageFilter;
13 import org.mule.cache.keygenerator.MD5KeyGenerator;
14 import org.mule.cache.responsegenerator.DefaultResponseGenerator;
15 import org.mule.construct.SimpleFlowConstruct;
16 import org.mule.routing.filters.AcceptAllFilter;
17 import org.mule.routing.filters.ExpressionFilter;
18 import org.mule.tck.junit4.FunctionalTestCase;
19 import org.mule.util.store.InMemoryObjectStore;
20
21 import org.junit.Test;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26
27 public class CacheConfigTestCase extends FunctionalTestCase
28 {
29
30 public CacheConfigTestCase()
31 {
32 setDisposeContextPerClass(true);
33 }
34
35 @Override
36 protected String getConfigResources()
37 {
38 return "org/mule/cache/config/cache-config.xml";
39 }
40
41 @Test
42 public void testMessageProcessorDefaultConfig() throws Exception
43 {
44 String cacheFlow = "CacheRouterDefault";
45 CachingMessageProcessor cacheMessageProcessor = getCachingMessageProcessorFromFlow(cacheFlow);
46 assertTrue(cacheMessageProcessor.getFilter() instanceof AcceptAllFilter);
47
48 assertDefaultCachingStrategy(cacheMessageProcessor.getCachingStrategy());
49 }
50
51 @Test
52 public void testMessageProcessorFilterExpressionConfig() throws Exception
53 {
54 String cacheFlow = "CacheRouterWithFilterExpression";
55 CachingMessageProcessor cacheMessageProcessor = getCachingMessageProcessorFromFlow(cacheFlow);
56 assertTrue(cacheMessageProcessor.getFilter() instanceof ExpressionFilter);
57
58 ExpressionFilter cacheFilter = (ExpressionFilter) cacheMessageProcessor.getFilter();
59 assertEquals("//isCacheable[text() = 'true']", cacheFilter.getExpression());
60 assertEquals("xpath", cacheFilter.getEvaluator());
61
62 assertDefaultCachingStrategy(cacheMessageProcessor.getCachingStrategy());
63 }
64
65 @Test
66 public void testMessageProcessorFilterConfig() throws Exception
67 {
68 String cacheFlow = "CacheRouterWithFilter";
69 CachingMessageProcessor cacheMessageProcessor = getCachingMessageProcessorFromFlow(cacheFlow);
70 assertTrue(cacheMessageProcessor.getFilter() instanceof ExpressionFilter);
71
72 assertDefaultCachingStrategy(cacheMessageProcessor.getCachingStrategy());
73 }
74
75 @Test
76 public void testMessageProcessorCachingStrategyConfig() throws Exception
77 {
78 String cacheFlow = "CacheRouterWithSpringObjectStore";
79 CachingMessageProcessor cacheMessageProcessor = getCachingMessageProcessorFromFlow(cacheFlow);
80 assertTrue(cacheMessageProcessor.getFilter() instanceof AcceptAllFilter);
81
82 CachingStrategy cachingStrategy = cacheMessageProcessor.getCachingStrategy();
83
84 assertTrue(cachingStrategy instanceof ObjectStoreCachingStrategy);
85 ObjectStoreCachingStrategy objectStoreCachingStrategy = (ObjectStoreCachingStrategy) cachingStrategy;
86
87 assertTrue(objectStoreCachingStrategy.getConsumableFilter() instanceof ConsumableMuleMessageFilter);
88 assertTrue(objectStoreCachingStrategy.getKeyGenerator() instanceof MD5KeyGenerator);
89 assertEquals("org.mule.util.store.TextFileObjectStore", objectStoreCachingStrategy.getStore().getClass().getName());
90 assertTrue(objectStoreCachingStrategy.getResponseGenerator() instanceof DefaultResponseGenerator);
91 }
92
93 private void assertDefaultCachingStrategy(CachingStrategy cachingStrategy)
94 {
95 assertTrue(cachingStrategy instanceof ObjectStoreCachingStrategy);
96 ObjectStoreCachingStrategy objectStoreCachingStrategy = (ObjectStoreCachingStrategy) cachingStrategy;
97
98 assertTrue(objectStoreCachingStrategy.getConsumableFilter() instanceof ConsumableMuleMessageFilter);
99 assertTrue(objectStoreCachingStrategy.getKeyGenerator() instanceof MD5KeyGenerator);
100 assertTrue(objectStoreCachingStrategy.getStore() instanceof InMemoryObjectStore);
101 assertTrue(objectStoreCachingStrategy.getResponseGenerator() instanceof DefaultResponseGenerator);
102 }
103
104 private CachingMessageProcessor getCachingMessageProcessorFromFlow(String cacheFlow)
105 {
106 SimpleFlowConstruct flow = (SimpleFlowConstruct) muleContext.getRegistry().get(cacheFlow);
107 assertNotNull(flow);
108 return (CachingMessageProcessor) flow.getMessageProcessors().get(0);
109 }
110 }