Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java @ 22121:d045a505c2b3
Asynchronous TruffleVM can be created by providing own Executor when configuring the TruffleVM.Builder
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Wed, 02 Sep 2015 10:44:54 +0200 |
parents | cf19259edf87 |
children | dc83cc1f94f2 ffadd23c63c8 3aad794eec0e |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Mon Aug 31 18:15:27 2015 -0700 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Wed Sep 02 10:44:54 2015 +0200 @@ -22,13 +22,6 @@ */ package com.oracle.truffle.api.test.vm; -import static org.junit.Assert.*; - -import java.io.*; -import java.util.*; - -import org.junit.*; - import com.oracle.truffle.api.*; import com.oracle.truffle.api.TruffleLanguage.Env; import com.oracle.truffle.api.debug.*; @@ -37,25 +30,37 @@ import com.oracle.truffle.api.nodes.RootNode; import com.oracle.truffle.api.source.*; import com.oracle.truffle.api.vm.*; +import java.io.*; +import java.util.*; +import java.util.concurrent.Executors; +import org.junit.*; +import static org.junit.Assert.*; public class ImplicitExplicitExportTest { + private static Thread mainThread; private TruffleVM vm; @Before public void initializeVM() { - vm = TruffleVM.newVM().build(); + mainThread = Thread.currentThread(); + vm = TruffleVM.newVM().executor(Executors.newSingleThreadExecutor()).build(); assertTrue("Found " + L1 + " language", vm.getLanguages().containsKey(L1)); assertTrue("Found " + L2 + " language", vm.getLanguages().containsKey(L2)); assertTrue("Found " + L3 + " language", vm.getLanguages().containsKey(L3)); } + @After + public void cleanThread() { + mainThread = null; + } + @Test public void explicitExportFound() throws IOException { // @formatter:off vm.eval(Source.fromText("explicit.ahoj=42", "Fourty two").withMimeType(L1)); Object ret = vm.eval( Source.fromText("return=ahoj", "Return").withMimeType(L3) - ); + ).get(); // @formatter:on assertEquals("42", ret); } @@ -68,7 +73,7 @@ ); Object ret = vm.eval( Source.fromText("return=ahoj", "Return").withMimeType(L3) - ); + ).get(); // @formatter:on assertEquals("42", ret); } @@ -84,10 +89,10 @@ ); Object ret = vm.eval( Source.fromText("return=ahoj", "Return").withMimeType(L3) - ); + ).get(); // @formatter:on assertEquals("Explicit import from L2 is used", "43", ret); - assertEquals("Global symbol is also 43", "43", vm.findGlobalSymbol("ahoj").invoke(null)); + assertEquals("Global symbol is also 43", "43", vm.findGlobalSymbol("ahoj").get()); } @Test @@ -101,10 +106,10 @@ ); Object ret = vm.eval( Source.fromText("return=ahoj", "Return").withMimeType(L3) - ); + ).get(); // @formatter:on assertEquals("Explicit import from L2 is used", "43", ret); - assertEquals("Global symbol is also 43", "43", vm.findGlobalSymbol("ahoj").invoke(null)); + assertEquals("Global symbol is also 43", "43", vm.findGlobalSymbol("ahoj").invoke(null).get()); } private static final class Ctx { @@ -121,6 +126,9 @@ @Override protected Ctx createContext(Env env) { + if (mainThread != null) { + assertNotEquals("Should run asynchronously", Thread.currentThread(), mainThread); + } return new Ctx(env); } @@ -164,6 +172,7 @@ } private Object importExport(Source code) { + assertNotEquals("Should run asynchronously", Thread.currentThread(), mainThread); final Node node = createFindContextNode(); Ctx ctx = findContext(node); Properties p = new Properties();