-
Notifications
You must be signed in to change notification settings - Fork 0
Description
The global idea:
- A JSON data file is computed by ig-java or ig-interacto. Normally, this file permits to locate interaction, data binding, command, widget bindings, precisely.
- Use such front-end data to instrument the code of the app: instrument means that this tool is going to add logging instructions temporarily to the application.
- The test suite is then executed, so that the instrumented code logs information
- The tool computes coverage based on such log information
This is a very hard task ;)
Steps:
-
Creates a Java agent. A Java agent is a kind of java app called before the launching of the real app to instrument the code of this app.
How to launch an agent: https://javahowto.blogspot.com/2006/07/javaagent-option.html
This agent instruments nothing. Just prints "YO" in the console.
Test it by adding the agent in the latexdraw's POM in the surefire (junit test execution) plugin (put in comment everything related to jacoco in this POM):
https://stackoverflow.com/questions/46302636/maven-test-and-javaagent-argument -
Instrumentation for Interacto Instrument code for logging execution information #1:
This Spoon feature may help: https://github.com/INRIA/spoon/pull/2645/files
This instrumentation consists in adding the method call.log(LogLevel.BINDING)before the.bind()of each widget binding. Test on latexdraw (information printed in console). -
Instrumentation for Interacto #2:
Provides toWidgetBindingImplandInteractionImplspecific loggers that will write the information in a file.
https://stackoverflow.com/questions/15758685/how-to-write-logs-in-text-file-when-using-java-util-logging-logger -
Log format:
This file that contains the logged information must be in a format like this one:
{
{
test:"testFoo",
logs:["...", "...", "...", ...]
},
{
test:...
}
}
The goal is to obtain for each test the triple: interaction, widget, command.