source: trunk/src/test/java/omq/test/persistence/PersistentTest.java @ 78

Last change on this file since 78 was 78, checked in by stoda, 11 years ago

PersistentTest? added, persistent messages enabled

File size: 3.3 KB
Line 
1package omq.test.persistence;
2
3import static org.junit.Assert.assertEquals;
4
5import java.util.Arrays;
6import java.util.Collection;
7import java.util.Properties;
8
9import omq.common.broker.Broker;
10import omq.common.util.ParameterQueue;
11import omq.common.util.Serializer;
12
13import org.junit.Test;
14import org.junit.runner.RunWith;
15import org.junit.runners.Parameterized;
16import org.junit.runners.Parameterized.Parameters;
17
18@RunWith(value = Parameterized.class)
19public class PersistentTest {
20        private static String MESSAGE = "message";
21        private String type;
22        private Properties clientProps;
23        private Properties serverProps;
24        private Properties msgImplProps;
25
26        public PersistentTest(String type) {
27                this.type = type;
28
29                /*
30                 * Server Properties
31                 */
32                serverProps = new Properties();
33                serverProps.setProperty(ParameterQueue.USER_NAME, "guest");
34                serverProps.setProperty(ParameterQueue.USER_PASS, "guest");
35
36                // Set host info of rabbtimq (where it is)
37                serverProps.setProperty(ParameterQueue.RABBIT_HOST, "127.0.0.1");
38                serverProps.setProperty(ParameterQueue.RABBIT_PORT, "5672");
39
40                /*
41                 * MessageImpl Properties
42                 */
43                msgImplProps = new Properties();
44                msgImplProps.setProperty(ParameterQueue.RPC_EXCHANGE, "rpc_exchange");
45                msgImplProps.setProperty(ParameterQueue.DURABLE_QUEUES, "true");
46                msgImplProps.setProperty(ParameterQueue.EXCLUSIVE_QUEUE, "false");
47                msgImplProps.setProperty(ParameterQueue.AUTO_DELETE_QUEUE, "false");
48                msgImplProps.setProperty(ParameterQueue.MULTI_QUEUE_NAME, "multiMessageQueue");
49
50                /*
51                 * Client Properties
52                 */
53
54                clientProps = new Properties();
55                clientProps.setProperty(ParameterQueue.USER_NAME, "guest");
56                clientProps.setProperty(ParameterQueue.USER_PASS, "guest");
57
58                // Set host info of rabbimq (where it is)
59                clientProps.setProperty(ParameterQueue.RABBIT_HOST, "127.0.0.1");
60                clientProps.setProperty(ParameterQueue.RABBIT_PORT, "5672");
61                clientProps.setProperty(ParameterQueue.DURABLE_QUEUES, "true");
62                clientProps.setProperty(ParameterQueue.PROXY_SERIALIZER, type);
63                clientProps.setProperty(ParameterQueue.RPC_EXCHANGE, "rpc_exchange");
64                clientProps.setProperty(ParameterQueue.RPC_REPLY_QUEUE, "persistent_message_reply_queue");
65                clientProps.setProperty(ParameterQueue.DELIVERY_MODE, "2");
66                // TODO msgProps -> rpc_exchange, serializer type and delivery mode
67        }
68
69        @Parameters
70        public static Collection<Object[]> data() {
71                Object[][] data = new Object[][] { { Serializer.JAVA }, { Serializer.GSON }, { Serializer.KRYO } };
72                return Arrays.asList(data);
73        }
74
75        @Test
76        public void test() throws Exception {
77                System.out.println("Type = " + type);
78                String expected = "message";
79                String actual = null;
80
81                // Ensure the queues exist
82                Broker serverBroker = new Broker(serverProps);
83                MessageImpl msgImpl = new MessageImpl();
84                serverBroker.bind(MESSAGE, msgImpl, msgImplProps);
85
86                Broker clientBroker = new Broker(clientProps);
87                Message iMsg = clientBroker.lookup(MESSAGE, Message.class);
88                iMsg.setMessage(expected);
89
90                // Restart the rabbitmq
91                String password = "unpc";
92                String[] command = { "/bin/bash", "-c", "echo " + password + " | sudo -S service rabbitmq-server restart" };
93
94                Runtime runtime = Runtime.getRuntime();
95                runtime.exec(command);
96
97                Thread.sleep(15000);
98
99                actual = iMsg.getMessage();
100
101                // Stop both brokers
102                serverBroker.stopBroker();
103                clientBroker.stopBroker();
104
105                assertEquals(expected, actual);
106        }
107}
Note: See TracBrowser for help on using the repository browser.