@Test public void testParentContextDoesNotSeeModificationsOfStaticFields() throws Throwable { Context context = runIsolate(StaticFieldSetter.class); context.join(); assertEquals(StaticFieldSetter.OLD_VALUE, StaticFieldSetter.staticField); }
@Test public void testClassesDefinedInParentContextAreNotVisibleToChild() throws Throwable { try { Context context = runIsolate(ClassFinder.class, ClassPresentOnlyInParentContext.class.getName()); context.join(); throw new AssertionError("Isolate should not be able to find the class"); } catch (ContextFailedException e) { if (e.getCause() instanceof ClassNotFoundException) { // expected } else { throw e; } } }
@Test public void testIsolateMayLoadItsOwnVersionOfAClassDefinedInParentContext() throws Throwable { String fieldName = "field_existing_only_in_isolate_context"; try { ClassPresentInBothContexts.class.getDeclaredField(fieldName); throw new AssertionError("The field should be absent in parent context"); } catch (NoSuchFieldException e) { // expected } Context context = runIsolate(FieldTester.class, ClassPresentInBothContexts.class.getName(), fieldName); context.join(); }
@Test public void testStaticDataIsIsolatedBetweenChildContexts() throws Throwable { Context context1 = runIsolate(StaticFieldSetter.Party.class, "value1"); Context context2 = runIsolate(StaticFieldSetter.Party.class, "value2"); CyclicBarrier barrier = new CyclicBarrier(2); context1.send(barrier); context2.send(barrier); context1.join(); context2.join(); }