1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.file;
12
13 import org.mule.api.endpoint.EndpointBuilder;
14 import org.mule.api.endpoint.InboundEndpoint;
15 import org.mule.api.endpoint.OutboundEndpoint;
16 import org.mule.api.lifecycle.InitialisationException;
17 import org.mule.api.service.Service;
18 import org.mule.api.transport.Connector;
19 import org.mule.api.transport.MessageReceiver;
20 import org.mule.endpoint.EndpointURIEndpointBuilder;
21 import org.mule.endpoint.URIBuilder;
22 import org.mule.transport.AbstractConnectorTestCase;
23 import org.mule.util.FileUtils;
24
25 import java.io.File;
26
27 public class FileConnectorTestCase extends AbstractConnectorTestCase
28 {
29 static final long POLLING_FREQUENCY = 1234;
30 static final long POLLING_FREQUENCY_OVERRIDE = 4321;
31
32 private File validMessage;
33
34
35 protected void doSetUp() throws Exception
36 {
37 super.doSetUp();
38
39
40 File tempDir = FileUtils.newFile(muleContext.getConfiguration().getWorkingDirectory(), "tmp");
41 if (!tempDir.exists())
42 {
43 tempDir.mkdirs();
44 }
45
46 validMessage = File.createTempFile("simple", ".mule", tempDir);
47 assertNotNull(validMessage);
48 FileUtils.writeStringToFile(validMessage, "validMessage");
49 }
50
51
52 protected void doTearDown() throws Exception
53 {
54
55
56 FileUtils.deleteTree(FileUtils.newFile(getTestConnector().getProtocol()));
57 super.doTearDown();
58 }
59
60
61
62
63
64
65 public Connector createConnector() throws Exception
66 {
67 FileConnector connector = new FileConnector();
68 connector.setName("testFile");
69 connector.setOutputAppend(true);
70 return connector;
71 }
72
73 public String getTestEndpointURI()
74 {
75 return "file://" + muleContext.getConfiguration().getWorkingDirectory();
76 }
77
78 public Object getValidMessage() throws Exception
79 {
80 return validMessage;
81 }
82
83
84
85
86 public void testConnectorPollingFrequency() throws Exception
87 {
88 FileConnector connector = (FileConnector) getConnector();
89 connector.setPollingFrequency(POLLING_FREQUENCY);
90
91 InboundEndpoint endpoint = getTestInboundEndpoint("simple");
92 Service service = getTestService();
93 MessageReceiver receiver = connector.createReceiver(service, endpoint);
94 assertEquals("Connector's polling frequency must not be ignored.", POLLING_FREQUENCY,
95 ((FileMessageReceiver) receiver).getFrequency());
96 }
97
98
99
100
101 public void testPollingFrequencyEndpointOverride() throws Exception
102 {
103 FileConnector connector = (FileConnector) getConnector();
104
105 connector.setPollingFrequency(-1);
106
107 InboundEndpoint endpoint = getTestInboundEndpoint("simple");
108
109
110 endpoint.getProperties().put(FileConnector.PROPERTY_POLLING_FREQUENCY, String.valueOf(POLLING_FREQUENCY_OVERRIDE));
111
112 Service service = getTestService();
113 MessageReceiver receiver = connector.createReceiver(service, endpoint);
114 assertEquals("Polling frequency endpoint override must not be ignored.", POLLING_FREQUENCY_OVERRIDE,
115 ((FileMessageReceiver) receiver).getFrequency());
116 }
117
118
119 public void testOutputAppendEndpointOverride() throws Exception
120 {
121 FileConnector connector = (FileConnector) getConnector();
122
123 EndpointBuilder endpointBuilder = new EndpointURIEndpointBuilder(new URIBuilder("file://foo"), muleContext);
124 OutboundEndpoint endpoint = endpointBuilder.buildOutboundEndpoint();
125
126
127 endpoint.getProperties().put("outputAppend", "true");
128
129 try
130 {
131 connector.getDispatcherFactory().create(endpoint);
132 fail("outputAppend cannot be configured on File endpoints");
133 }
134 catch (IllegalArgumentException e)
135 {
136
137 }
138 }
139
140 public void testOnlySingleDispatcherPerEndpoint() throws InitialisationException
141 {
142
143 FileConnector connector = (FileConnector) getConnector();
144
145 assertEquals(1, connector.getMaxDispatchersActive());
146
147 connector.setMaxDispatchersActive(2);
148
149
150 assertEquals(1, connector.getMaxDispatchersActive());
151 }
152
153 }