1 package org.xmlBlaster.test.classtest;
2
3 import java.util.logging.Logger;
4
5 import junit.framework.TestCase;
6
7 import org.xmlBlaster.client.I_ConnectionStateListener;
8 import org.xmlBlaster.client.I_XmlBlasterAccess;
9 import org.xmlBlaster.client.XmlBlasterAccess;
10 import org.xmlBlaster.client.key.EraseKey;
11 import org.xmlBlaster.client.key.GetKey;
12 import org.xmlBlaster.client.key.SubscribeKey;
13 import org.xmlBlaster.client.key.UnSubscribeKey;
14 import org.xmlBlaster.client.protocol.I_CallbackServer;
15 import org.xmlBlaster.client.qos.ConnectQos;
16 import org.xmlBlaster.util.Global;
17 import org.xmlBlaster.util.XmlBlasterException;
18 import org.xmlBlaster.util.def.ErrorCode;
19 import org.xmlBlaster.util.qos.address.Address;
20
21 /**
22 * Test the client lib XmlBlasterAccess without a connection to a server.
23 * java -Djava.compiler= junit.textui.TestRunner -noloading org.xmlBlaster.test.classtest.XmlBlasterAccessTest
24 * @see org.xmlBlaster.client.I_XmlBlasterAccess
25 * @see org.xmlBlaster.client.XmlBlasterAccess
26 */
27 public class XmlBlasterAccessTest extends TestCase {
28 private Global glob;
29 private static Logger log = Logger.getLogger(XmlBlasterAccessTest.class.getName());
30
31 public XmlBlasterAccessTest() {
32 this(null, "XmlBlasterAccessTest");
33 }
34
35 public XmlBlasterAccessTest(Global glob, String name) {
36 super(name);
37 this.glob = (glob == null) ? Global.instance() : glob;
38 }
39
40 protected void setUp() {
41 this.glob = (this.glob == null) ? Global.instance() : this.glob;
42
43 }
44
45 /**
46 * Test the three creation variants of XmlBlasterAccess and tests
47 * all methods with null arguments
48 */
49 public void testCreation() {
50 System.out.println("***XmlBlasterAccessTest: testCreation ...");
51 I_XmlBlasterAccess xmlBlasterAccess = null;
52 for (int i=0; i<3; i++) {
53 if (i == 0) {
54 Global nullGlobal = null;
55 xmlBlasterAccess = new XmlBlasterAccess(nullGlobal);
56 }
57 else if (i == 1) {
58 String[] nullArgs = null;
59 xmlBlasterAccess = new XmlBlasterAccess(nullArgs);
60 }
61 else {
62 xmlBlasterAccess = glob.getXmlBlasterAccess();
63 }
64
65 xmlBlasterAccess.setServerNodeId("/node/test");
66 assertEquals("", "/node/test", xmlBlasterAccess.getServerNodeId());
67
68 xmlBlasterAccess.setServerNodeId("FRISH FISH");
69 assertEquals("", "/node/FRISH FISH", xmlBlasterAccess.getServerNodeId());
70
71 try {
72 ConnectQos connectQos = new ConnectQos(glob);
73 Address address = new Address(glob);
74 address.setBootstrapPort(8999); // a wrong port to avoid connection
75 address.setRetries(0); // switch off polling
76 connectQos.setAddress(address);
77 xmlBlasterAccess.connect(connectQos, null);
78 fail("Not expected successful connect");
79 }
80 catch (XmlBlasterException e) {
81 if (e.isErrorCode(ErrorCode.COMMUNICATION_NOCONNECTION_DEAD))
82 log.info("Exception is OK if not connected: " + e.getErrorCode());
83 else
84 fail("testDefaultConnectWithoutServer failed: " + e.getMessage());
85 }
86
87 if (xmlBlasterAccess.isAlive()) {
88 log.severe("No testing possible when xmlBlaster is running - ignoring this test");
89 xmlBlasterAccess.disconnect(null);
90 continue;
91 }
92
93 assertTrue("", null != xmlBlasterAccess.getQueue());
94 assertEquals("", false, xmlBlasterAccess.isAlive());
95 assertEquals("", false, xmlBlasterAccess.isPolling());
96 assertEquals("", false, xmlBlasterAccess.isDead());
97 log.info("SUCCESS: Check I_ConnectionHandler");
98
99 assertEquals("", false, xmlBlasterAccess.isConnected());
100 xmlBlasterAccess.registerConnectionListener((I_ConnectionStateListener)null);
101
102
103 assertTrue("", xmlBlasterAccess.getCbServer() == null);
104 try {
105 I_CallbackServer cbServer = xmlBlasterAccess.initCbServer(null, null);
106 assertTrue("", cbServer != null);
107 assertTrue("", cbServer.getCbProtocol() != null);
108 assertTrue("", cbServer.getCbAddress() != null);
109 log.info("SUCCESS: initCbServer protocol=" + cbServer.getCbProtocol() + " address=" + cbServer.getCbAddress());
110 cbServer.shutdown();
111 log.info("SUCCESS: CbServer.shutdown()");
112 assertTrue("", xmlBlasterAccess.getCbServer() == null); // is not cached in xmlBlasterAccess
113 }
114 catch (XmlBlasterException e) {
115 fail("testCreation failed: " + e.getMessage());
116 }
117
118 assertTrue("", xmlBlasterAccess.getSecurityPlugin() != null);
119 assertEquals("", true, xmlBlasterAccess.disconnect(null));
120 assertTrue("", xmlBlasterAccess.getConnectReturnQos() == null);
121 assertTrue("", xmlBlasterAccess.getConnectQos() == null);
122 assertTrue("", xmlBlasterAccess.getId() != null);
123 assertTrue("", xmlBlasterAccess.getSessionName() == null);
124
125 try {
126 xmlBlasterAccess.subscribe((SubscribeKey)null, null);
127 }
128 catch (XmlBlasterException e) {
129 if (e.isUser())
130 log.info("Exception is OK if not connected: " + e.getErrorCode());
131 else
132 fail("testCreation failed: " + e.getMessage());
133 }
134
135 try {
136 xmlBlasterAccess.subscribe((String)null, null);
137 }
138 catch (XmlBlasterException e) {
139 if (e.isUser())
140 log.info("Exception is OK if not connected: " + e.getErrorCode());
141 else
142 fail("testCreation failed: " + e.getMessage());
143 }
144
145 try {
146 xmlBlasterAccess.subscribe((SubscribeKey)null, null, null);
147 }
148 catch (XmlBlasterException e) {
149 if (e.isUser())
150 log.info("Exception is OK if not connected: " + e.getErrorCode());
151 else
152 fail("testCreation failed: " + e.getMessage());
153 }
154
155 try {
156 xmlBlasterAccess.get((String)null, null);
157 }
158 catch (XmlBlasterException e) {
159 if (e.isUser())
160 log.info("Exception is OK if not connected: " + e.getErrorCode());
161 else
162 fail("testCreation failed: " + e.getMessage());
163 }
164
165 try {
166 xmlBlasterAccess.get((GetKey)null, null);
167 }
168 catch (XmlBlasterException e) {
169 if (e.isUser())
170 log.info("Exception is OK if not connected: " + e.getErrorCode());
171 else
172 fail("testCreation failed: " + e.getMessage());
173 }
174
175 try {
176 xmlBlasterAccess.unSubscribe((String)null, null);
177 }
178 catch (XmlBlasterException e) {
179 if (e.isUser())
180 log.info("Exception is OK if not connected: " + e.getErrorCode());
181 else
182 fail("testCreation failed: " + e.getMessage());
183 }
184
185 try {
186 xmlBlasterAccess.unSubscribe((UnSubscribeKey)null, null);
187 }
188 catch (XmlBlasterException e) {
189 if (e.isUser())
190 log.info("Exception is OK if not connected: " + e.getErrorCode());
191 else
192 fail("testCreation failed: " + e.getMessage());
193 }
194
195 try {
196 xmlBlasterAccess.publish(null);
197 }
198 catch (XmlBlasterException e) {
199 if (e.isUser())
200 log.info("Exception is OK if not connected: " + e.getErrorCode());
201 else
202 fail("testCreation failed: " + e.getMessage());
203 }
204
205 try {
206 xmlBlasterAccess.publishOneway(null);
207 }
208 catch (XmlBlasterException e) {
209 if (e.isUser())
210 log.info("Exception is OK if not connected: " + e.getErrorCode());
211 else
212 fail("testCreation failed: " + e.getMessage());
213 }
214
215 try {
216 xmlBlasterAccess.publishArr(null);
217 }
218 catch (XmlBlasterException e) {
219 if (e.isUser())
220 log.info("Exception is OK if not connected: " + e.getErrorCode());
221 else
222 fail("testCreation failed: " + e.getMessage());
223 }
224
225 try {
226 xmlBlasterAccess.erase((String)null, null);
227 }
228 catch (XmlBlasterException e) {
229 if (e.isUser())
230 log.info("Exception is OK if not connected: " + e.getErrorCode());
231 else
232 fail("testCreation failed: " + e.getMessage());
233 }
234
235 try {
236 xmlBlasterAccess.erase((EraseKey)null, null);
237 }
238 catch (XmlBlasterException e) {
239 if (e.isUser())
240 log.info("Exception is OK if not connected: " + e.getErrorCode());
241 else
242 fail("testCreation failed: " + e.getMessage());
243 }
244
245 assertTrue("", xmlBlasterAccess.getGlobal() != null);
246 assertTrue("", xmlBlasterAccess.toXml() != null);
247
248 log.info("SUCCESS: Check I_XmlBlasterAccess");
249 }
250
251 System.out.println("***XmlBlasterAccessTest: testCreation [SUCCESS]");
252 }
253
254 public void testDefaultConnectWithoutServer() throws Exception {
255 System.out.println("***XmlBlasterAccessTest: testDefaultConnectWithoutServer ...");
256 Global nullGlobal = null;
257 I_XmlBlasterAccess xmlBlasterAccess = new XmlBlasterAccess(nullGlobal);
258
259 assertEquals("", false, xmlBlasterAccess.isConnected());
260
261 ConnectQos q = new ConnectQos(null);
262 log.info("Default ConnectQos=" + q.toXml() + " retries=" + q.getAddress().getRetries() + " delay=" + q.getAddress().getDelay());
263 assertEquals("", -1, q.getAddress().getRetries()); // retry forever
264 assertEquals("", q.getAddress().getDefaultDelay(), q.getAddress().getDelay()); // 5000L
265 assertTrue("", q.getAddress().getDelay() > 0);
266 /*
267 xmlBlasterAccess.registerConnectionListener((I_ConnectionStateListener)null);
268 try {
269 ConnectReturnQos connectReturnQos = xmlBlasterAccess.connect(null, null);
270 }
271 catch (XmlBlasterException e) {
272 if (e.isUser())
273 log.info("Exception is OK if not connected: " + e.getErrorCode());
274 else
275 fail("testDefaultConnectWithoutServer failed: " + e.getMessage());
276 }
277 log.info("SUCCESS: Check I_XmlBlasterAccess");
278 */
279 log.info("TEST MISSING");
280
281 System.out.println("***XmlBlasterAccessTest: testDefaultConnectWithoutServer [SUCCESS]");
282 }
283
284 /**
285 * <pre>
286 * java org.xmlBlaster.test.classtest.XmlBlasterAccessTest
287 * </pre>
288 */
289 public static void main(String args[]) {
290 XmlBlasterAccessTest testSub = new XmlBlasterAccessTest(new Global(args, true, false), "XmlBlasterAccessTest");
291 try {
292 testSub.setUp();
293 testSub.testCreation();
294 testSub.testDefaultConnectWithoutServer();
295 //testSub.tearDown();
296 }
297 catch (Exception e) {
298 System.out.println("TEST FAILED: " + e.toString());
299 }
300 }
301 }
syntax highlighted by Code2HTML, v. 0.9.1