1 // 2 // Copyright (c) ZeroC, Inc. All rights reserved. 3 // 4 5 package test.IceDiscovery.simple; 6 7 import test.IceDiscovery.simple.Test.*; 8 9 import java.util.List; 10 import java.util.ArrayList; 11 12 import java.util.Set; 13 import java.util.HashSet; 14 15 public class AllTests 16 { 17 private static void test(boolean b)18 test(boolean b) 19 { 20 if(!b) 21 { 22 throw new RuntimeException(); 23 } 24 } 25 26 public static void allTests(Ice.Communicator communicator, int num)27 allTests(Ice.Communicator communicator, int num) 28 { 29 List<ControllerPrx> proxies = new ArrayList<ControllerPrx>(); 30 List<ControllerPrx> indirectProxies = new ArrayList<ControllerPrx>(); 31 for(int i = 0; i < num; ++i) 32 { 33 String id = "controller" + i; 34 proxies.add(ControllerPrxHelper.uncheckedCast(communicator.stringToProxy(id))); 35 indirectProxies.add(ControllerPrxHelper.uncheckedCast(communicator.stringToProxy(id + "@control" + i))); 36 } 37 38 System.out.print("testing indirect proxies... "); 39 System.out.flush(); 40 { 41 for(ControllerPrx prx : indirectProxies) 42 { 43 prx.ice_ping(); 44 } 45 } 46 System.out.println("ok"); 47 48 System.out.print("testing well-known proxies... "); 49 System.out.flush(); 50 { 51 for(ControllerPrx prx : proxies) 52 { 53 prx.ice_ping(); 54 } 55 } 56 System.out.println("ok"); 57 58 System.out.print("testing object adapter registration... "); 59 System.out.flush(); 60 { 61 try 62 { 63 communicator.stringToProxy("object @ oa1").ice_ping(); 64 test(false); 65 } 66 catch(Ice.NoEndpointException ex) 67 { 68 } 69 70 proxies.get(0).activateObjectAdapter("oa", "oa1", ""); 71 72 try 73 { 74 communicator.stringToProxy("object @ oa1").ice_ping(); 75 test(false); 76 } 77 catch(Ice.ObjectNotExistException ex) 78 { 79 } 80 81 proxies.get(0).deactivateObjectAdapter("oa"); 82 83 try 84 { 85 communicator.stringToProxy("object @ oa1").ice_ping(); 86 test(false); 87 } 88 catch(Ice.NoEndpointException ex) 89 { 90 } 91 } 92 System.out.println("ok"); 93 94 System.out.print("testing object adapter migration..."); 95 System.out.flush(); 96 { 97 proxies.get(0).activateObjectAdapter("oa", "oa1", ""); 98 proxies.get(0).addObject("oa", "object"); 99 communicator.stringToProxy("object @ oa1").ice_ping(); 100 proxies.get(0).removeObject("oa", "object"); 101 proxies.get(0).deactivateObjectAdapter("oa"); 102 103 proxies.get(1).activateObjectAdapter("oa", "oa1", ""); 104 proxies.get(1).addObject("oa", "object"); 105 communicator.stringToProxy("object @ oa1").ice_ping(); 106 proxies.get(1).removeObject("oa", "object"); 107 proxies.get(1).deactivateObjectAdapter("oa"); 108 } 109 System.out.println("ok"); 110 111 System.out.print("testing object migration..."); 112 System.out.flush(); 113 { 114 proxies.get(0).activateObjectAdapter("oa", "oa1", ""); 115 proxies.get(1).activateObjectAdapter("oa", "oa2", ""); 116 117 proxies.get(0).addObject("oa", "object"); 118 communicator.stringToProxy("object @ oa1").ice_ping(); 119 communicator.stringToProxy("object").ice_ping(); 120 proxies.get(0).removeObject("oa", "object"); 121 122 proxies.get(1).addObject("oa", "object"); 123 communicator.stringToProxy("object @ oa2").ice_ping(); 124 communicator.stringToProxy("object").ice_ping(); 125 proxies.get(1).removeObject("oa", "object"); 126 127 try 128 { 129 communicator.stringToProxy("object @ oa1").ice_ping(); 130 } 131 catch(Ice.ObjectNotExistException ex) 132 { 133 } 134 try 135 { 136 communicator.stringToProxy("object @ oa2").ice_ping(); 137 } 138 catch(Ice.ObjectNotExistException ex) 139 { 140 } 141 142 proxies.get(0).deactivateObjectAdapter("oa"); 143 proxies.get(1).deactivateObjectAdapter("oa"); 144 } 145 System.out.println("ok"); 146 147 System.out.print("testing replica groups..."); 148 System.out.flush(); 149 { 150 proxies.get(0).activateObjectAdapter("oa", "oa1", "rg"); 151 proxies.get(1).activateObjectAdapter("oa", "oa2", "rg"); 152 proxies.get(2).activateObjectAdapter("oa", "oa3", "rg"); 153 154 proxies.get(0).addObject("oa", "object"); 155 proxies.get(1).addObject("oa", "object"); 156 proxies.get(2).addObject("oa", "object"); 157 158 communicator.stringToProxy("object @ oa1").ice_ping(); 159 communicator.stringToProxy("object @ oa2").ice_ping(); 160 communicator.stringToProxy("object @ oa3").ice_ping(); 161 162 communicator.stringToProxy("object @ rg").ice_ping(); 163 164 Set<String> adapterIds = new HashSet<String>(); 165 adapterIds.add("oa1"); 166 adapterIds.add("oa2"); 167 adapterIds.add("oa3"); 168 TestIntfPrx intf = TestIntfPrxHelper.uncheckedCast(communicator.stringToProxy("object")); 169 intf = (TestIntfPrx)intf.ice_connectionCached(false).ice_locatorCacheTimeout(0); 170 while(!adapterIds.isEmpty()) 171 { 172 adapterIds.remove(intf.getAdapterId()); 173 } 174 175 while(true) 176 { 177 adapterIds.add("oa1"); 178 adapterIds.add("oa2"); 179 adapterIds.add("oa3"); 180 intf = TestIntfPrxHelper.uncheckedCast( 181 communicator.stringToProxy("object @ rg").ice_connectionCached(false)); 182 int nRetry = 100; 183 while(!adapterIds.isEmpty() && --nRetry > 0) 184 { 185 adapterIds.remove(intf.getAdapterId()); 186 } 187 if(nRetry > 0) 188 { 189 break; 190 } 191 192 // The previous locator lookup probably didn't return all the replicas... try again. 193 communicator.stringToProxy("object @ rg").ice_locatorCacheTimeout(0).ice_ping(); 194 } 195 196 proxies.get(0).deactivateObjectAdapter("oa"); 197 proxies.get(1).deactivateObjectAdapter("oa"); 198 test(TestIntfPrxHelper.uncheckedCast( 199 communicator.stringToProxy("object @ rg")).getAdapterId().equals("oa3")); 200 proxies.get(2).deactivateObjectAdapter("oa"); 201 202 proxies.get(0).activateObjectAdapter("oa", "oa1", "rg"); 203 proxies.get(0).addObject("oa", "object"); 204 test(TestIntfPrxHelper.uncheckedCast( 205 communicator.stringToProxy("object @ rg")).getAdapterId().equals("oa1")); 206 proxies.get(0).deactivateObjectAdapter("oa"); 207 } 208 System.out.println("ok"); 209 210 System.out.print("testing invalid lookup endpoints... "); 211 System.out.flush(); 212 { 213 String multicast; 214 if(communicator.getProperties().getProperty("Ice.IPv6").equals("1")) 215 { 216 multicast = "\"ff15::1\""; 217 } 218 else 219 { 220 multicast = "239.255.0.1"; 221 } 222 223 { 224 225 Ice.InitializationData initData = new Ice.InitializationData(); 226 initData.properties = communicator.getProperties()._clone(); 227 initData.properties.setProperty("IceDiscovery.Lookup", "udp -h " + multicast + " --interface unknown"); 228 Ice.Communicator com = Ice.Util.initialize(initData); 229 test(com.getDefaultLocator() != null); 230 try 231 { 232 com.stringToProxy("controller0@control0").ice_ping(); 233 test(false); 234 } 235 catch(Ice.LocalException ex) 236 { 237 } 238 com.destroy(); 239 } 240 { 241 Ice.InitializationData initData = new Ice.InitializationData(); 242 initData.properties = communicator.getProperties()._clone(); 243 String intf = initData.properties.getProperty("IceDiscovery.Interface"); 244 if(!intf.isEmpty()) 245 { 246 intf = " --interface \"" + intf + "\""; 247 } 248 String port = initData.properties.getProperty("IceDiscovery.Port"); 249 initData.properties.setProperty("IceDiscovery.Lookup", 250 "udp -h " + multicast + " --interface unknown:" + 251 "udp -h " + multicast + " -p " + port + intf); 252 Ice.Communicator com = Ice.Util.initialize(initData); 253 test(com.getDefaultLocator() != null); 254 com.stringToProxy("controller0@control0").ice_ping(); 255 com.destroy(); 256 } 257 } 258 System.out.println("ok"); 259 260 System.out.print("shutting down... "); 261 System.out.flush(); 262 for(ControllerPrx prx : proxies) 263 { 264 prx.shutdown(); 265 } 266 System.out.println("ok"); 267 } 268 } 269