GEGlobalResearch / DARPA-ASKE-TA1

ANSWER Project to demonstrate knowledge-driven extraction of scientific models from code and texts
Other
7 stars 5 forks source link

Test framework to process both .sadl files and .dialog files #54

Closed crapo closed 4 years ago

crapo commented 4 years ago

I was trying to get UI tests working that would process both a .sadl file and a .dialog file. I think I almost got it working but not quite. The tests in com.ge.research.sadl.darpa.aske.dialog.tests.DialogTest.xtend pass (those not ignored) in Ecllipse but fail in Maven build. The test testExtractionJavaFile is ignored because it fails in a way I don't understand related, I think, to the content type (wrong processor). @kittaakos , could you please take a look at this?

kittaakos commented 4 years ago

could you please take a look at this?

Sure, I am looking into it. I assume I have to use the master branch.

kittaakos commented 4 years ago

Update: Resolved I generalized the paths.


pass (those not ignored) in Ecllipse

The tests fail in Eclipse for me. When I run the test, the SadlUtils#filetoString fails with an NPE as the filesystem path of the extracted model is /C:/Users/200005201/sadl3-master6/git/DARPA-ASKE-TA1/com.ge.research.sadl.darpa.aske.dialog.parent/com.ge.research.sadl.darpa.aske.dialog.tests/resources/M5Snapshot/ExtractedModels/Sources/Isentrop.txt. This is not possible on POSIX filesystem, such as macOS. Is there a hardcoded segment for the path somewhere? /C:/Users/200005201/sadl3-master6 looks very suspicious.

!STACK 0
java.lang.NullPointerException
    at com.ge.research.sadl.reasoner.utils.SadlUtils.fileToString(SadlUtils.java:242)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processExtractRequest(AnswerCurationManager.java:2551)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processUserRequest(AnswerCurationManager.java:2515)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processConversation(AnswerCurationManager.java:3682)
    at com.ge.research.sadl.darpa.aske.processing.JenaBasedDialogModelProcessor.onValidate(JenaBasedDialogModelProcessor.java:459)
    at com.ge.research.sadl.validation.ResourceValidator.doValidate(ResourceValidator.java:75)
    at com.ge.research.sadl.validation.ResourceValidator.validate(ResourceValidator.java:71)
    at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:90)
    at com.ge.research.sadl.validation.ResourceValidator.lambda$0(ResourceValidator.java:55)
    at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:76)
    at com.ge.research.sadl.validation.ResourceValidator.validate(ResourceValidator.java:57)
    at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.addMarkers(DefaultResourceUIValidatorExtension.java:60)
    at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.updateValidationMarkers(DefaultResourceUIValidatorExtension.java:46)
    at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.processDelta(MarkerUpdaterImpl.java:93)
    at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.updateMarkers(MarkerUpdaterImpl.java:63)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.updateMarkers(AbstractBuilderState.java:82)
    at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:283)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:116)
    at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:288)
    at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:268)
    at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:162)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:833)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392)
    at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:504)
    at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:404)
    at org.eclipse.xtext.ui.testing.util.IResourcesSetupUtil.waitForBuild(IResourcesSetupUtil.java:357)
    at org.eclipse.xtext.ui.testing.util.IResourcesSetupUtil.waitForBuild(IResourcesSetupUtil.java:334)
    at com.ge.research.sadl.ui.tests.AbstractSadlPlatformTest.createFile(AbstractSadlPlatformTest.java:368)
    at com.ge.research.sadl.darpa.aske.dialog.ui.tests.DialogTest.testExtractTxtFile(DialogTest.java:327)
    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.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:232)
    at org.eclipse.pde.internal.junit.runtime.PlatformUITestHarness.lambda$0(PlatformUITestHarness.java:45)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4095)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3762)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
    at org.eclipse.pde.internal.junit.runtime.NonUIThreadTestApplication.runApp(NonUIThreadTestApplication.java:55)
    at org.eclipse.pde.internal.junit.runtime.UITestApplication.runApp(UITestApplication.java:46)
    at org.eclipse.pde.internal.junit.runtime.NonUIThreadTestApplication.start(NonUIThreadTestApplication.java:49)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)
kittaakos commented 4 years ago

Is there a hardcoded segment for the path somewhere?

https://github.com/GEGlobalResearch/DARPA-ASKE-TA1/blob/81d6d04ffcfcd35e1a2e36da56a19042afae096b/com.ge.research.sadl.darpa.aske.dialog.parent/com.ge.research.sadl.darpa.aske.dialog.tests/src/com/ge/research/sadl/darpa/aske/tests/DialogTest.xtend#L1176

https://github.com/GEGlobalResearch/DARPA-ASKE-TA1/blob/81d6d04ffcfcd35e1a2e36da56a19042afae096b/com.ge.research.sadl.darpa.aske.dialog.parent/com.ge.research.sadl.darpa.aske.dialog.ui.tests/src/com/ge/research/sadl/darpa/aske/dialog/ui/tests/DialogTest.xtend#L174

https://github.com/GEGlobalResearch/DARPA-ASKE-TA1/blob/81d6d04ffcfcd35e1a2e36da56a19042afae096b/com.ge.research.sadl.darpa.aske.dialog.parent/com.ge.research.sadl.darpa.aske.dialog.ui.tests/src/com/ge/research/sadl/darpa/aske/dialog/ui/tests/DialogTest.xtend#L218

kittaakos commented 4 years ago

Is there a hardcoded segment for the path somewhere?

I have fixed it locally 👍 (https://github.com/GEGlobalResearch/DARPA-ASKE-TA1/commit/e5a91bb886220ab37cf7a9238214d594d25e3151)

(wrong processor)

The JenaBasedDialogModelProcessor is correctly picked up for the .dialog files when I run the tests from Eclipse. However, I have an NPE during the Java extraction.

I almost got it working but not quite

What kind of error do you have? As I've mentioned above, I have an NPE. The code fails to extract an individual from the ontModel with the following name: http://darpa/aske/ge/ta1/testdlg2#Turbo.convdr.

!STACK 0
java.lang.NullPointerException
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.getOrCreateCodeVariable(JavaModelExtractorJP.java:1275)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.getOrCreateCodeVariable(JavaModelExtractorJP.java:1246)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.processBlockChild(JavaModelExtractorJP.java:724)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.lambda$0(JavaModelExtractorJP.java:602)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at com.github.javaparser.ast.NodeList.forEach(NodeList.java:268)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.processBlockChild(JavaModelExtractorJP.java:601)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.processBlock(JavaModelExtractorJP.java:578)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.processBlockChild(JavaModelExtractorJP.java:594)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.processBlock(JavaModelExtractorJP.java:578)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.parse(JavaModelExtractorJP.java:283)
    at com.ge.research.sadl.darpa.aske.processing.imports.JavaModelExtractorJP.process(JavaModelExtractorJP.java:186)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.extractFromCodeAndSave(AnswerCurationManager.java:397)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processExtractRequest(AnswerCurationManager.java:2565)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processUserRequest(AnswerCurationManager.java:2515)
    at com.ge.research.sadl.darpa.aske.curation.AnswerCurationManager.processConversation(AnswerCurationManager.java:3682)
    at com.ge.research.sadl.darpa.aske.processing.JenaBasedDialogModelProcessor.onValidate(JenaBasedDialogModelProcessor.java:459)
    at com.ge.research.sadl.validation.ResourceValidator.doValidate(ResourceValidator.java:75)
    at com.ge.research.sadl.validation.ResourceValidator.validate(ResourceValidator.java:71)
    at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:90)
    at com.ge.research.sadl.validation.ResourceValidator.lambda$0(ResourceValidator.java:55)
    at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:76)
    at com.ge.research.sadl.validation.ResourceValidator.validate(ResourceValidator.java:57)
    at com.ge.research.sadl.tests.SadlTestAssertions.assertValidatesTo(SadlTestAssertions.java:55)
    at com.ge.research.sadl.darpa.aske.dialog.ui.tests.AbstractDialogPlatformTest.assertValidatesDialogTo(AbstractDialogPlatformTest.java:18)
    at com.ge.research.sadl.darpa.aske.dialog.ui.tests.DialogTest.testExtractJavaFile(DialogTest.java:414)
    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.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:232)
    at org.eclipse.pde.internal.junit.runtime.PlatformUITestHarness.lambda$0(PlatformUITestHarness.java:45)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4095)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3762)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
    at org.eclipse.pde.internal.junit.runtime.NonUIThreadTestApplication.runApp(NonUIThreadTestApplication.java:55)
    at org.eclipse.pde.internal.junit.runtime.UITestApplication.runApp(UITestApplication.java:46)
    at org.eclipse.pde.internal.junit.runtime.NonUIThreadTestApplication.start(NonUIThreadTestApplication.java:49)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)
kittaakos commented 4 years ago

@crapo, I would be available for a call if you want to discuss this:

What kind of error do you have? As I've mentioned above, I have an NPE. The code fails to extract an individual from the ontModel with the following name: http://darpa/aske/ge/ta1/testdlg2#Turbo.convdr.

crapo commented 4 years ago

@kittaakos , does 9 EST (in about 20 minutes) work for a meeting?

kittaakos commented 4 years ago

does 9 EST (in about 20 minutes) work for a meeting?

Yes.

crapo commented 4 years ago

Would like to consult on some issues that I've run into on this one. Please let me know when you could do a Skype meeting.

crapo commented 4 years ago

This now works great! Thank you.