[ 
https://issues.apache.org/jira/browse/DRILL-5170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Rogers updated DRILL-5170:
-------------------------------
    Description: 
Drill makes extensive use of the JMockit mocking library. Drill uses a very old 
version of JMockit. JMockit appears to perform byte-code manipulations that are 
incompatible with Java 8. For example:

{code}
cd exec/java-exec/
mvn surefire:test -Dtest=TestSimpleProjection
Running org.apache.drill.exec.physical.impl.project.TestSimpleProjection#project
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.794 sec <<< 
FAILURE! - in org.apache.drill.exec.physical.impl.project.TestSimpleProjection
project(org.apache.drill.exec.physical.impl.project.TestSimpleProjection)  Time 
elapsed: 0.215 sec  <<< ERROR!
java.lang.VerifyError: null
        at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:498)
{code}

A similar error occurs when running the same unit test under Eclipse.

Fixing this issue is non-trivial. Mockito is subject to rapid change. The 
semantics of mocks has changed significantly. Code that works fine in our old 
version requires extensive rework to work with the current version.

For now, the only workaround is to compile Drill under the (obsolete) Java 7 
and use that version to run unit tests.

  was:
Drill makes extensive use of the Mockito mocking library. Drill uses a very old 
version of Mockito. Mockito appears to perform byte-code manipulations that are 
incompatible with Java 8. For example:

{code}
cd exec/java-exec/
mvn surefire:test -Dtest=TestSimpleProjection
Running org.apache.drill.exec.physical.impl.project.TestSimpleProjection#project
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.794 sec <<< 
FAILURE! - in org.apache.drill.exec.physical.impl.project.TestSimpleProjection
project(org.apache.drill.exec.physical.impl.project.TestSimpleProjection)  Time 
elapsed: 0.215 sec  <<< ERROR!
java.lang.VerifyError: null
        at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:498)
{code}

A similar error occurs when running the same unit test under Eclipse.

Fixing this issue is non-trivial. Mockito is subject to rapid change. The 
semantics of mocks has changed significantly. Code that works fine in our old 
version requires extensive rework to work with the current version.

For now, the only workaround is to compile Drill under the (obsolete) Java 7 
and use that version to run unit tests.


> JMockit-based unit tests fail when run under Java 8
> ---------------------------------------------------
>
>                 Key: DRILL-5170
>                 URL: https://issues.apache.org/jira/browse/DRILL-5170
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.8.0
>            Reporter: Paul Rogers
>            Priority: Minor
>
> Drill makes extensive use of the JMockit mocking library. Drill uses a very 
> old version of JMockit. JMockit appears to perform byte-code manipulations 
> that are incompatible with Java 8. For example:
> {code}
> cd exec/java-exec/
> mvn surefire:test -Dtest=TestSimpleProjection
> Running 
> org.apache.drill.exec.physical.impl.project.TestSimpleProjection#project
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.794 sec <<< 
> FAILURE! - in org.apache.drill.exec.physical.impl.project.TestSimpleProjection
> project(org.apache.drill.exec.physical.impl.project.TestSimpleProjection)  
> Time elapsed: 0.215 sec  <<< ERROR!
> java.lang.VerifyError: null
>       at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at java.lang.reflect.Method.invoke(Method.java:498)
> {code}
> A similar error occurs when running the same unit test under Eclipse.
> Fixing this issue is non-trivial. Mockito is subject to rapid change. The 
> semantics of mocks has changed significantly. Code that works fine in our old 
> version requires extensive rework to work with the current version.
> For now, the only workaround is to compile Drill under the (obsolete) Java 7 
> and use that version to run unit tests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to