1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.sftp;
12
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertNotNull;
15 import static org.junit.Assert.assertTrue;
16
17 import java.util.Arrays;
18 import java.util.Collection;
19 import java.util.HashMap;
20 import java.util.Map;
21 import java.util.concurrent.CountDownLatch;
22 import java.util.concurrent.TimeUnit;
23 import java.util.concurrent.atomic.AtomicInteger;
24 import java.util.concurrent.atomic.AtomicReference;
25
26 import org.apache.commons.io.IOUtils;
27 import org.junit.Test;
28 import org.junit.runners.Parameterized.Parameters;
29 import org.mule.api.MuleEventContext;
30 import org.mule.module.client.MuleClient;
31 import org.mule.tck.functional.EventCallback;
32 import org.mule.tck.functional.FunctionalTestComponent;
33
34
35
36
37
38
39
40 public class SftpIdentityFileFunctionalTestCase extends AbstractSftpTestCase
41 {
42 private static final int DEFAULT_TIMEOUT = 10000;
43
44
45 private static final String INBOUND_ENDPOINT_NAME = "inboundEndpoint";
46
47 public SftpIdentityFileFunctionalTestCase(ConfigVariant variant, String configResources)
48 {
49 super(variant, configResources);
50 }
51
52 @Parameters
53 public static Collection<Object[]> parameters()
54 {
55 return Arrays.asList(new Object[][]{
56 {ConfigVariant.SERVICE, "mule-sftp-identity-file-config-service.xml"},
57 {ConfigVariant.FLOW, "mule-sftp-identity-file-config-flow.xml"}
58 });
59 }
60
61 @Override
62 protected void doSetUp() throws Exception
63 {
64 super.doSetUp();
65 initEndpointDirectory(INBOUND_ENDPOINT_NAME);
66 }
67
68
69 @Test
70 public void testIdentityFile() throws Exception
71 {
72 final CountDownLatch latch = new CountDownLatch(1);
73 final AtomicReference<String> message = new AtomicReference<String>();
74 final AtomicInteger loopCount = new AtomicInteger(0);
75
76 EventCallback callback = new EventCallback()
77 {
78 @Override
79 public synchronized void eventReceived(MuleEventContext context, Object component)
80 {
81 try
82 {
83 logger.info("called " + loopCount.incrementAndGet() + " times");
84
85 if (1 == latch.getCount())
86 {
87 String o = IOUtils.toString((SftpInputStream) context.getMessage().getPayload());
88 message.set(o);
89 latch.countDown();
90 }
91 }
92 catch (Exception e)
93 {
94 logger.error(e.getMessage(), e);
95 }
96 }
97 };
98
99 MuleClient client = new MuleClient(muleContext);
100
101
102
103
104 Map<?, ?> properties = new HashMap<Object, Object>();
105
106
107 Object component = getComponent("testComponent");
108 assertTrue("FunctionalTestComponent expected", component instanceof FunctionalTestComponent);
109 FunctionalTestComponent ftc = (FunctionalTestComponent) component;
110 assertNotNull(ftc);
111
112 ftc.setEventCallback(callback);
113
114 logger.debug("before dispatch");
115
116
117 client.dispatch(getAddressByEndpoint(client, INBOUND_ENDPOINT_NAME), TEST_MESSAGE, properties);
118 logger.debug("before retrieve");
119
120 latch.await(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS);
121
122 assertEquals(TEST_MESSAGE, message.get());
123 }
124 }