You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by Christofer Dutz <ch...@c-ware.de> on 2019/01/21 13:18:45 UTC

UnitTesting with Daffodil in Maven & Java project

Hi all,

well I think I managed to setup the basic testing using Daffodil and Junit5 with Maven … strangely the test is failing Surefire however still is reporting the test to be successful.
However if I run it in IntelliJ I get failures.

Here’s the module with the code (3 Protocols in src/main/dfdl, one test in src/test/java and one testcase-xml in src/test/resources)
https://github.com/apache/incubator-plc4x/tree/develop/protocols

The output I can see in IntelliJ is the following:

Creating DFDL Test Suite for file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/test-classes/org/apache/plc4x/protocols/cotp-protocol.tdml

org.apache.daffodil.tdml.TDMLException: Schema Definition Error: No root element found for root in any available namespace
Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd

                at org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$3(TDMLRunner.scala:716)
                at scala.util.Either$LeftProjection.foreach(Either.scala:508)
                at org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:716)
                at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:665)
                at org.apache.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:378)
                at org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:366)
                at org.apache.plc4x.protocols.CotpProtocolTest.simpleS7Message(CotpProtocolTest.java:35)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
                at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
                at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
                at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
                at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
                at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
                at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
                at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                at java.util.Iterator.forEachRemaining(Iterator.java:116)
                at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                at java.util.Iterator.forEachRemaining(Iterator.java:116)
                at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
                at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
                at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
                at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
                at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
                at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
                at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
                at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
                at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: Schema Definition Error: No root element found for root in any available namespace
Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd


What am I doing wrong?

Chris


Re: UnitTesting with Daffodil in Maven & Java project

Posted by Steve Lawrence <sl...@apache.org>.
We would definitely appreciate a write-up on how to integrate DFDL
testing in a maven project. I think this would make sense to go on our
website. We probably need a "How to Test with Daffodil" page or
something that can talk about various ways to test like with CLI, the
Standard Project Layout and sbt, or via Maven. If you could write up a
Maven description (either as an email or a PR request to our website [1]
using markdown syntax), we'd be happy to put it in the right spot.

- Steve

[1] https://github.com/stevedlawrence/incubator-daffodil-site

On 1/21/19 9:54 AM, Christofer Dutz wrote:
> Ok ... so now the last mystery is solved:
> 
> I am using self-activating profiles in maven which pull in all the "Java" configuration as soon as it finds a "src/main/java" directory (And all the C++ stuff as soon as it finds a "src/main/cpp" directory ...)
> Unfortunately my protocol module only had a "src/main/dfdl" directory so the Maven defaults were used and they don't support Junit5 ...
> As soon as I provided an empty src/main/java directory auto-magically my testsuite is now executed. If I intentionally mess things up, the build fails, if I fix them again the build succeeds.
> 
> Perhaps it would be worth summing up what I did for the DFDL wiki, allowing people like me to utilize the Daffodil TDML support in Maven with Java ... what do you think?
> 
> Chris
> 
> 
> Am 21.01.19, 15:32 schrieb "Christofer Dutz" <ch...@c-ware.de>:
> 
>     Hi all,
>     
>     ok ... so I just pushed a version that seems to be working ... now I get exactly what I'm expecting (
>     
>     All except that Surefire seems to be detecting the test, however it seems to be skipping its execution. 
>     
>     [INFO] -------------------------------------------------------
>     [INFO]  T E S T S
>     [INFO] -------------------------------------------------------
>     [INFO] Running org.apache.plc4x.protocols.TpktProtocolTest
>     [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in org.apache.plc4x.protocols.TpktProtocolTest
>     [INFO] 
>     [INFO] Results:
>     [INFO] 
>     [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
>     
>     Will dig deeper ... just wanted to stop you from wasting time in investigating my previous issues __
>     
>     Chris
>     
>     
>     
>     Am 21.01.19, 14:19 schrieb "Christofer Dutz" <ch...@c-ware.de>:
>     
>         Hi all,
>         
>         well I think I managed to setup the basic testing using Daffodil and Junit5 with Maven … strangely the test is failing Surefire however still is reporting the test to be successful.
>         However if I run it in IntelliJ I get failures.
>         
>         Here’s the module with the code (3 Protocols in src/main/dfdl, one test in src/test/java and one testcase-xml in src/test/resources)
>         https://github.com/apache/incubator-plc4x/tree/develop/protocols
>         
>         The output I can see in IntelliJ is the following:
>         
>         Creating DFDL Test Suite for file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/test-classes/org/apache/plc4x/protocols/cotp-protocol.tdml
>         
>         org.apache.daffodil.tdml.TDMLException: Schema Definition Error: No root element found for root in any available namespace
>         Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
>         
>                         at org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$3(TDMLRunner.scala:716)
>                         at scala.util.Either$LeftProjection.foreach(Either.scala:508)
>                         at org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:716)
>                         at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:665)
>                         at org.apache.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:378)
>                         at org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:366)
>                         at org.apache.plc4x.protocols.CotpProtocolTest.simpleS7Message(CotpProtocolTest.java:35)
>                         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>                         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                         at java.lang.reflect.Method.invoke(Method.java:498)
>                         at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
>                         at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
>                         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
>                         at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
>                         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
>                         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
>                         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
>                         at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
>                         at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
>                         at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
>                         at java.util.Iterator.forEachRemaining(Iterator.java:116)
>                         at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>                         at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>                         at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>                         at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
>                         at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
>                         at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>                         at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
>                         at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
>                         at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
>                         at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
>                         at java.util.Iterator.forEachRemaining(Iterator.java:116)
>                         at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>                         at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
>                         at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>                         at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
>                         at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
>                         at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>                         at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
>                         at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
>                         at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
>                         at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
>                         at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
>                         at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
>                         at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
>                         at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
>                         at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
>                         at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
>         Caused by: Schema Definition Error: No root element found for root in any available namespace
>         Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
>         
>         
>         What am I doing wrong?
>         
>         Chris
>         
>         
>     
>     
> 


Re: UnitTesting with Daffodil in Maven & Java project

Posted by Christofer Dutz <ch...@c-ware.de>.
Ok ... so now the last mystery is solved:

I am using self-activating profiles in maven which pull in all the "Java" configuration as soon as it finds a "src/main/java" directory (And all the C++ stuff as soon as it finds a "src/main/cpp" directory ...)
Unfortunately my protocol module only had a "src/main/dfdl" directory so the Maven defaults were used and they don't support Junit5 ...
As soon as I provided an empty src/main/java directory auto-magically my testsuite is now executed. If I intentionally mess things up, the build fails, if I fix them again the build succeeds.

Perhaps it would be worth summing up what I did for the DFDL wiki, allowing people like me to utilize the Daffodil TDML support in Maven with Java ... what do you think?

Chris


Am 21.01.19, 15:32 schrieb "Christofer Dutz" <ch...@c-ware.de>:

    Hi all,
    
    ok ... so I just pushed a version that seems to be working ... now I get exactly what I'm expecting (
    
    All except that Surefire seems to be detecting the test, however it seems to be skipping its execution. 
    
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running org.apache.plc4x.protocols.TpktProtocolTest
    [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in org.apache.plc4x.protocols.TpktProtocolTest
    [INFO] 
    [INFO] Results:
    [INFO] 
    [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
    
    Will dig deeper ... just wanted to stop you from wasting time in investigating my previous issues __
    
    Chris
    
    
    
    Am 21.01.19, 14:19 schrieb "Christofer Dutz" <ch...@c-ware.de>:
    
        Hi all,
        
        well I think I managed to setup the basic testing using Daffodil and Junit5 with Maven … strangely the test is failing Surefire however still is reporting the test to be successful.
        However if I run it in IntelliJ I get failures.
        
        Here’s the module with the code (3 Protocols in src/main/dfdl, one test in src/test/java and one testcase-xml in src/test/resources)
        https://github.com/apache/incubator-plc4x/tree/develop/protocols
        
        The output I can see in IntelliJ is the following:
        
        Creating DFDL Test Suite for file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/test-classes/org/apache/plc4x/protocols/cotp-protocol.tdml
        
        org.apache.daffodil.tdml.TDMLException: Schema Definition Error: No root element found for root in any available namespace
        Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
        
                        at org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$3(TDMLRunner.scala:716)
                        at scala.util.Either$LeftProjection.foreach(Either.scala:508)
                        at org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:716)
                        at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:665)
                        at org.apache.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:378)
                        at org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:366)
                        at org.apache.plc4x.protocols.CotpProtocolTest.simpleS7Message(CotpProtocolTest.java:35)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                        at java.lang.reflect.Method.invoke(Method.java:498)
                        at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
                        at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
                        at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
                        at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
                        at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
                        at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
                        at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
                        at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                        at java.util.Iterator.forEachRemaining(Iterator.java:116)
                        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                        at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                        at java.util.Iterator.forEachRemaining(Iterator.java:116)
                        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                        at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
                        at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
                        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
                        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
                        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
                        at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
                        at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
                        at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
                        at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
        Caused by: Schema Definition Error: No root element found for root in any available namespace
        Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
        
        
        What am I doing wrong?
        
        Chris
        
        
    
    


Re: UnitTesting with Daffodil in Maven & Java project

Posted by Christofer Dutz <ch...@c-ware.de>.
Hi all,

ok ... so I just pushed a version that seems to be working ... now I get exactly what I'm expecting (

All except that Surefire seems to be detecting the test, however it seems to be skipping its execution. 

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.apache.plc4x.protocols.TpktProtocolTest
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in org.apache.plc4x.protocols.TpktProtocolTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

Will dig deeper ... just wanted to stop you from wasting time in investigating my previous issues __

Chris



Am 21.01.19, 14:19 schrieb "Christofer Dutz" <ch...@c-ware.de>:

    Hi all,
    
    well I think I managed to setup the basic testing using Daffodil and Junit5 with Maven … strangely the test is failing Surefire however still is reporting the test to be successful.
    However if I run it in IntelliJ I get failures.
    
    Here’s the module with the code (3 Protocols in src/main/dfdl, one test in src/test/java and one testcase-xml in src/test/resources)
    https://github.com/apache/incubator-plc4x/tree/develop/protocols
    
    The output I can see in IntelliJ is the following:
    
    Creating DFDL Test Suite for file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/test-classes/org/apache/plc4x/protocols/cotp-protocol.tdml
    
    org.apache.daffodil.tdml.TDMLException: Schema Definition Error: No root element found for root in any available namespace
    Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
    
                    at org.apache.daffodil.tdml.ParserTestCase.$anonfun$runProcessor$3(TDMLRunner.scala:716)
                    at scala.util.Either$LeftProjection.foreach(Either.scala:508)
                    at org.apache.daffodil.tdml.ParserTestCase.runProcessor(TDMLRunner.scala:716)
                    at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:665)
                    at org.apache.daffodil.tdml.DFDLTestSuite.runOneTestWithDataVolumes(TDMLRunner.scala:378)
                    at org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:366)
                    at org.apache.plc4x.protocols.CotpProtocolTest.simpleS7Message(CotpProtocolTest.java:35)
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                    at java.lang.reflect.Method.invoke(Method.java:498)
                    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
                    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
                    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
                    at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
                    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
                    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
                    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
                    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                    at java.util.Iterator.forEachRemaining(Iterator.java:116)
                    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
                    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
                    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
                    at java.util.Iterator.forEachRemaining(Iterator.java:116)
                    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
                    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
                    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
                    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
                    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
                    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
                    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
                    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
                    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
                    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
                    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
                    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
                    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
                    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
                    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    Caused by: Schema Definition Error: No root element found for root in any available namespace
    Schema context: SchemaSet Location in file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/target/classes/org/apache/plc4x/protocols/tpkt-protocol.dfdl.xsd
    
    
    What am I doing wrong?
    
    Chris