1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.config;
12
13 import org.mule.MuleServer;
14 import org.mule.RegistryContext;
15 import org.mule.api.MuleContext;
16 import org.mule.api.ThreadSafeAccess;
17 import org.mule.api.config.MuleConfiguration;
18 import org.mule.api.context.MuleContextBuilder;
19 import org.mule.config.DefaultMuleConfiguration;
20 import org.mule.context.DefaultMuleContextBuilder;
21 import org.mule.context.DefaultMuleContextFactory;
22
23 import junit.framework.TestCase;
24
25 public class MuleConfigurationTestCase extends TestCase
26 {
27
28 private boolean failOnMessageScribbling;
29
30 @Override
31 protected void setUp() throws Exception
32 {
33 super.setUp();
34
35
36
37 failOnMessageScribbling = ThreadSafeAccess.AccessControl.isFailOnMessageScribbling();
38 }
39
40 @Override
41 protected void tearDown() throws Exception
42 {
43 muleContext = null;
44 MuleServer.setMuleContext(null);
45 RegistryContext.setRegistry(null);
46 ThreadSafeAccess.AccessControl.setFailOnMessageScribbling(failOnMessageScribbling);
47 }
48
49 private MuleContext muleContext;
50
51
52 public void testConfigureProgramatically() throws Exception
53 {
54 DefaultMuleConfiguration config = new DefaultMuleConfiguration();
55 config.setDefaultEncoding("UTF-16");
56 config.setDefaultSynchronousEndpoints(true);
57 config.setSystemModelType("direct");
58 config.setDefaultSynchronousEventTimeout(30000);
59 config.setDefaultTransactionTimeout(60000);
60 config.setDefaultRemoteSync(true);
61 config.setWorkingDirectory("/some/directory");
62 config.setClientMode(true);
63 ThreadSafeAccess.AccessControl.setFailOnMessageScribbling(false);
64 config.setId("MY_SERVER");
65 config.setClusterId("MY_CLUSTER");
66 config.setDomainId("MY_DOMAIN");
67 config.setCacheMessageAsBytes(false);
68 config.setCacheMessageOriginalPayload(false);
69 config.setEnableStreaming(false);
70 ThreadSafeAccess.AccessControl.setAssertMessageAccess(false);
71 config.setAutoWrapMessageAwareTransform(false);
72
73 MuleContextBuilder contextBuilder = new DefaultMuleContextBuilder();
74 contextBuilder.setMuleConfiguration(config);
75 muleContext = new DefaultMuleContextFactory().createMuleContext(contextBuilder);
76
77 muleContext.start();
78
79 verifyConfiguration();
80 }
81
82
83 public void testConfigureWithSystemProperties() throws Exception
84 {
85 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "encoding", "UTF-16");
86 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "endpoints.synchronous", "true");
87 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "systemModelType", "direct");
88 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "timeout.synchronous", "30000");
89 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "timeout.transaction", "60000");
90 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "remoteSync", "true");
91 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "workingDirectory", "/some/directory");
92 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "clientMode", "true");
93
94
95
96
97
98
99 ThreadSafeAccess.AccessControl.setFailOnMessageScribbling(false);
100
101 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "serverId", "MY_SERVER");
102 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "clusterId", "MY_CLUSTER");
103 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "domainId", "MY_DOMAIN");
104 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.cacheBytes", "false");
105 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.cacheOriginal", "false");
106 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "streaming.enable", "false");
107 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.assertAccess", "false");
108 System.setProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "transform.autoWrap", "false");
109
110 muleContext = new DefaultMuleContextFactory().createMuleContext();
111 muleContext.start();
112
113 verifyConfiguration();
114
115 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "encoding");
116 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "endpoints.synchronous");
117 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "systemModelType");
118 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "timeout.synchronous");
119 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "timeout.transaction");
120 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "remoteSync");
121 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "workingDirectory");
122 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "clientMode");
123 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "disable.threadsafemessages");
124 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "serverId");
125 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "clusterId");
126 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "domainId");
127 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.cacheBytes");
128 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.cacheOriginal");
129 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "streaming.enable");
130 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "message.assertAccess");
131 System.clearProperty(MuleConfiguration.SYSTEM_PROPERTY_PREFIX + "transform.autoWrap");
132 }
133
134
135 public void testConfigureAfterInitFails() throws Exception
136 {
137 muleContext = new DefaultMuleContextFactory().createMuleContext();
138
139 DefaultMuleConfiguration mutableConfig = ((DefaultMuleConfiguration) muleContext.getConfiguration());
140
141
142 mutableConfig.setDefaultSynchronousEndpoints(true);
143 mutableConfig.setSystemModelType("direct");
144 mutableConfig.setDefaultSynchronousEventTimeout(30000);
145 mutableConfig.setDefaultTransactionTimeout(60000);
146 mutableConfig.setDefaultRemoteSync(true);
147 mutableConfig.setClientMode(true);
148
149
150 mutableConfig.setDefaultEncoding("UTF-16");
151 mutableConfig.setWorkingDirectory("/some/directory");
152 mutableConfig.setId("MY_SERVER");
153 mutableConfig.setClusterId("MY_CLUSTER");
154 mutableConfig.setDomainId("MY_DOMAIN");
155
156 MuleConfiguration config = muleContext.getConfiguration();
157
158
159 assertTrue(config.isDefaultSynchronousEndpoints());
160 assertEquals("direct", config.getSystemModelType());
161 assertEquals(30000, config.getDefaultSynchronousEventTimeout());
162 assertEquals(60000, config.getDefaultTransactionTimeout());
163 assertTrue(config.isDefaultRemoteSync());
164 assertTrue(config.isClientMode());
165
166
167 assertFalse("UTF-16".equals(config.getDefaultEncoding()));
168 assertFalse("/some/directory".equals(config.getWorkingDirectory()));
169 assertFalse("MY_SERVER".equals(config.getId()));
170 assertFalse("MY_CLUSTER".equals(config.getClusterId()));
171 assertFalse("MY_DOMAIN".equals(config.getDomainId()));
172 }
173
174
175 public void testConfigureAfterStartFails() throws Exception
176 {
177 muleContext = new DefaultMuleContextFactory().createMuleContext();
178 muleContext.start();
179
180 DefaultMuleConfiguration mutableConfig = ((DefaultMuleConfiguration) muleContext.getConfiguration());
181 mutableConfig.setDefaultSynchronousEndpoints(true);
182 mutableConfig.setSystemModelType("direct");
183 mutableConfig.setDefaultSynchronousEventTimeout(30000);
184 mutableConfig.setDefaultTransactionTimeout(60000);
185 mutableConfig.setDefaultRemoteSync(true);
186 mutableConfig.setClientMode(true);
187
188 MuleConfiguration config = muleContext.getConfiguration();
189 assertFalse(config.isDefaultSynchronousEndpoints());
190 assertFalse("direct".equals(config.getSystemModelType()));
191 assertFalse(30000 == config.getDefaultSynchronousEventTimeout());
192 assertFalse(60000 == config.getDefaultTransactionTimeout());
193 assertFalse(config.isDefaultRemoteSync());
194 assertFalse(config.isClientMode());
195 }
196
197 protected void verifyConfiguration()
198 {
199 MuleConfiguration config = muleContext.getConfiguration();
200 assertEquals("UTF-16", config.getDefaultEncoding());
201 assertTrue(config.isDefaultSynchronousEndpoints());
202 assertEquals("direct", config.getSystemModelType());
203 assertEquals(30000, config.getDefaultSynchronousEventTimeout());
204 assertEquals(60000, config.getDefaultTransactionTimeout());
205 assertTrue(config.isDefaultRemoteSync());
206 assertEquals("/some/directory", config.getWorkingDirectory());
207 assertTrue(config.isClientMode());
208 assertFalse(ThreadSafeAccess.AccessControl.isFailOnMessageScribbling());
209 assertEquals("MY_SERVER", config.getId());
210 assertEquals("MY_CLUSTER", config.getClusterId());
211 assertEquals("MY_DOMAIN", config.getDomainId());
212 assertFalse(config.isCacheMessageAsBytes());
213 assertFalse(config.isCacheMessageOriginalPayload());
214 assertFalse(config.isEnableStreaming());
215 assertFalse(ThreadSafeAccess.AccessControl.isAssertMessageAccess());
216 assertFalse(config.isAutoWrapMessageAwareTransform());
217 }
218 }
219
220