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