public void testWithNoPackage() throws Exception { RecorderLocator.clearRecorders(); final URLClassLoader ourClassLoader = (URLClassLoader) BlockingClassLoader.class.getClassLoader(); final BlockingClassLoader blockingClassLoader = new BlockingClassLoader( ourClassLoader, Arrays.<String>asList(AnotherClass.class.getName())); final NoPackageURLClassLoader cl = new NoPackageURLClassLoader(ourClassLoader.getURLs(), blockingClassLoader); final Class<?> noPackageClass = cl.loadClass(AnotherClass.class.getName()); final Method noPackageMethod = noPackageClass.getMethod("getOne"); assertEquals(1, noPackageMethod.invoke(null)); m_recorderStubFactory.assertNoMoreCalls(); final Object result = m_instrumenter.createInstrumentedProxy(null, m_recorder, noPackageClass); assertSame(noPackageClass, result); m_recorderStubFactory.assertNoMoreCalls(); assertEquals(1, noPackageMethod.invoke(null)); m_recorderStubFactory.assertSuccess("start"); m_recorderStubFactory.assertSuccess("end", true); m_recorderStubFactory.assertNoMoreCalls(); }
public void testInstrumentInstance() throws Exception { RecorderLocator.clearRecorders(); final MyClass c1 = new MyExtendedClass(); assertEquals(0, c1.getA()); m_recorderStubFactory.assertNoMoreCalls(); final Object result = m_instrumenter.createInstrumentedProxy(null, m_recorder, c1); assertSame(c1, result); m_recorderStubFactory.assertNoMoreCalls(); MyClass.staticSix(); m_recorderStubFactory.assertNoMoreCalls(); assertEquals(0, c1.getA()); m_recorderStubFactory.assertSuccess("start"); m_recorderStubFactory.assertSuccess("end", true); m_recorderStubFactory.assertNoMoreCalls(); final MyClass c2 = new MyClass(); assertEquals(0, c2.getA()); m_recorderStubFactory.assertNoMoreCalls(); }
public void testArrays() throws Exception { RecorderLocator.clearRecorders(); try { m_instrumenter.createInstrumentedProxy(null, m_recorder, new MyClass[0]); fail("Expected NotWrappableTypeException"); } catch (NotWrappableTypeException e) { } try { m_instrumenter.createInstrumentedProxy(null, m_recorder, MyClass[].class); fail("Expected NotWrappableTypeException"); } catch (NotWrappableTypeException e) { } m_recorderStubFactory.assertNoMoreCalls(); }
public void testInstrumentUnmodifiableCLass() throws Exception { final RandomStubFactory<Instrumentation> instrumentationStubFactory = RandomStubFactory.create(Instrumentation.class); final Instrumentation instrumentation = instrumentationStubFactory.getStub(); ExposeInstrumentation.premain("", instrumentation); instrumentationStubFactory.setThrows("retransformClasses", new UnmodifiableClassException()); // Create a new weaver to force the weaving. final JavaDCRInstrumenter instrumenter = new JavaDCRInstrumenter( new DCRWeaver( new ASMTransformerFactory(RecorderLocator.class), ExposeInstrumentation.getInstrumentation()), RecorderLocator.getRecorderRegistry()); try { instrumenter.createInstrumentedProxy(null, m_recorder, MyClass.class); fail("Expected NotWrappableTypeException"); } catch (NotWrappableTypeException e) { } }
@Override protected void tearDown() throws Exception { super.tearDown(); ExposeInstrumentation.premain("", m_originalInstrumentation); RecorderLocator.clearRecorders(); }
public TestJavaDCRInstrumenter() throws Exception { m_instrumenter = new JavaDCRInstrumenter(s_weaver, RecorderLocator.getRecorderRegistry()); }