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