1 17 18 package org.sape.carbon.core.component.proxy.test; 19 20 import java.util.Set ; 21 import java.util.TreeSet ; 22 23 import org.sape.carbon.core.component.Component; 24 import org.sape.carbon.core.component.Lookup; 25 26 import junit.extensions.ActiveTestSuite; 27 import junit.framework.Test; 28 import junit.framework.TestCase; 29 import junit.framework.TestSuite; 30 32 55 public class ExternalComponentProxyTest extends TestCase { 56 public ExternalComponentProxyTest(String name) { 57 super(name); 58 } 59 60 64 public void testRetrieval() { 65 Object component = 66 Lookup.getInstance().fetchComponent( 67 TEST_COMPONENT_NAME); 68 69 assertTrue("Component lookup returned null", component != null); 70 assertTrue("Component does not implement the Functional" + 71 "Interface", component instanceof TestComponent); 72 73 } 74 75 public void testCallSpeed() { 76 TestComponent component = 77 (TestComponent) 78 Lookup.getInstance().fetchComponent( 79 TEST_COMPONENT_NAME); 80 long start = System.currentTimeMillis(); 81 for (int i=0; i < 500000;i++) { 82 component.doNothing(); 83 } 84 System.out.println("Timed component calls took: " + (System.currentTimeMillis() - start)); 85 86 } 87 88 93 public void testCorrectMethodCalled() { 94 int counterVal = ExternalComponentProxyTest.callBackCounter++; 95 96 TestComponent component = 97 (TestComponent) Lookup.getInstance().fetchComponent( 98 TEST_COMPONENT_NAME); 99 100 assertTrue("Component lookup returned null", component != null); 101 assertTrue("Component does not implement the Functional" + 102 "Interface", component instanceof TestComponent); 103 String workToken = ""+counterVal; 104 component.doSomeWork(workToken); 105 assertTrue("No confirmation from Component call was received", 106 ExternalComponentProxyTest.callBackConfirmSet.contains(workToken)); 107 ExternalComponentProxyTest.callBackConfirmSet.remove(workToken); 108 } 109 110 111 114 public void testException() { 115 TestComponent component = 116 (TestComponent) Lookup.getInstance().fetchComponent( 117 TEST_COMPONENT_NAME); 118 119 boolean expectedExceptionCaught = false; 120 try{ 121 component.intentionalException(); 122 } 123 catch(Exception e){ 124 expectedExceptionCaught = true; 125 } 126 finally{ 127 assertTrue("The expected Exception was not thrown", 128 expectedExceptionCaught); 129 } 130 } 131 132 135 public void testReturnType() { 136 TestComponent component = 137 (TestComponent) Lookup.getInstance().fetchComponent( 138 TEST_COMPONENT_NAME); 139 140 Object result = component.returnTestReturnType(); 141 assertTrue("Method returned the wrong type", 142 result instanceof TestReturnType); 143 } 144 145 150 public void testReentrantMethod(){ 151 TestComponent component = 152 (TestComponent) Lookup.getInstance().fetchComponent( 153 TEST_COMPONENT_NAME); 154 assertTrue("Method returned false - this should never happen", 155 component.reentrantMethod()); 156 } 157 158 163 public void testGetComponentName(){ 164 Component component = Lookup.getInstance().fetchComponent( 165 TEST_COMPONENT_NAME); 166 167 assertTrue("Component name was incorrect, expected [" + 168 TEST_COMPONENT_NAME + "] got [" + 169 component.getComponentName() + "]", 170 TEST_COMPONENT_NAME.equals(component.getComponentName())); 171 } 172 173 private static int callBackCounter = 0; 175 private static Set callBackConfirmSet = new TreeSet (); 176 private static final String TEST_COMPONENT_NAME = 177 "/core/component/proxy/test/TestComponent"; 178 179 public static void calleeConfirm(String callBackID){ 180 ExternalComponentProxyTest.callBackConfirmSet.add(callBackID); 181 } 182 183 184 public static Test suite() { 185 TestSuite masterSuite = new TestSuite("ExternalComponentProxyTest"); 186 Test singleThreadedTests = getSingleThreadedTests(); 188 if (singleThreadedTests != null) { 189 masterSuite.addTest(singleThreadedTests); 190 } 191 Test multiThreadedTests = getMultiThreadedTests(); 193 if (multiThreadedTests != null) { 194 masterSuite.addTest(multiThreadedTests); 195 } 196 return masterSuite; 197 } 198 199 205 private static Test getSingleThreadedTests() { 206 TestSuite suite = new TestSuite(); 207 208 for (int i = 1; i <= 8; i++) { 209 TestSuite subtest = new ActiveTestSuite(); 210 addTest(subtest, "testCallSpeed",i); 211 suite.addTest(subtest); 212 } 213 214 215 suite.addTest(new ExternalComponentProxyTest("testRetrieval")); 216 suite.addTest( 217 new ExternalComponentProxyTest("testCorrectMethodCalled")); 218 suite.addTest(new ExternalComponentProxyTest("testReturnType")); 219 suite.addTest(new ExternalComponentProxyTest("testException")); 220 suite.addTest(new ExternalComponentProxyTest("testGetComponentName")); 221 222 return suite; 223 } 224 225 230 private static Test getMultiThreadedTests() { 231 TestSuite suite = new ActiveTestSuite(); 232 addTest(suite, "testReentrantMethod", 10); 233 return suite; 234 } 235 236 242 private static void addTest(TestSuite suite, String testName, int number) { 243 for (int count = 0; count < number; count++) { 244 suite.addTest(new ExternalComponentProxyTest(testName)); 245 } 246 } 247 } 248 | Popular Tags |