# HG changeset patch # User Doug Simon # Date 1401372732 -7200 # Node ID 3a537502f40f3325b8430224b218fcf9bd8c4539 # Parent b048110014ffc19eba3ce733c1f0cdca709ba419 HSAIL: prevent failure to loaded native Okra library from causing unit test failure Contributed-by: Eric Caspole diff -r b048110014ff -r 3a537502f40f graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/GraalKernelTester.java --- a/graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/GraalKernelTester.java Wed May 28 20:36:10 2014 -0700 +++ b/graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/GraalKernelTester.java Thu May 29 16:12:12 2014 +0200 @@ -190,7 +190,7 @@ @Override public void testGeneratedHsail() { try (OverrideScope s = getOverrideScope()) { - assumeTrue(supportsRequiredCapabilities()); + assumeTrue(supportsRequiredCapabilities() && okraEnvIsInitialized()); super.testGeneratedHsail(); } } @@ -198,7 +198,7 @@ @Override public void testGeneratedHsailUsingLambdaMethod() { try (OverrideScope s = getOverrideScope()) { - assumeTrue(supportsRequiredCapabilities()); + assumeTrue(supportsRequiredCapabilities() && okraEnvIsInitialized()); super.testGeneratedHsailUsingLambdaMethod(); } } diff -r b048110014ff -r 3a537502f40f graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/KernelTester.java --- a/graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/KernelTester.java Wed May 28 20:36:10 2014 -0700 +++ b/graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/KernelTester.java Thu May 29 16:12:12 2014 +0200 @@ -121,10 +121,27 @@ return onSimulator; } + public boolean okraEnvIsInitialized() { + return this.okraLibExists; + } + public KernelTester(boolean okraLibExists) { dispatchMode = DispatchMode.SEQ; hsailMode = HsailMode.COMPILED; useLambdaMethod = false; + + if (okraLibExists == false) { + // The okra native lib is not loaded yet, try to load the OkraContext + // explicitly and report a more useful error if there is a problem + try { + Class.forName("OkraContext"); + } catch (Exception e) { + logger.info("Okra native library cannot be found or loaded while running" + this.getClass().getSimpleName()); + this.okraLibExists = false; + return; + } + } + // Control which okra instances can run the tests (is Simulator is static). onSimulator = OkraContext.isSimulator(); this.okraLibExists = okraLibExists;