Scripts for jlearch

Description
Add scripts for automation training and evaluating of jlearch.
Fixes #229
Type of Change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Manual Scenario
Please, provide several scenarios that you went through to verify that the change worked as expected.

I found this bug
22:35:54.503 | INFO  | NNStateRewardPredictorBase | Error while initialization of NNStateRewardPredictorBase. Changing pathSelectorType on INHERITORS_SELECTOR
java.io.FileNotFoundException: models/nn16/1/nn.json (No such file or directory)
	at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_312]
	at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_312]
	at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_312]
	at java.io.FileReader.<init>(FileReader.java:72) ~[?:1.8.0_312]
	at org.utbot.predictors.NNJsonKt.loadModel(NNJson.kt:37) ~[utbot-junit-contest-1.0.jar:?]

Features are dumped, but models are not trained and not saved as a result

I reproduced the pipeline, its finished with the report creation, but in console it finishes with the following text (I've trained on the smallest piece of data and model is not accurate) with build errors
Please let me know if it's normal behaviour (probably we need to document it)
rg.antlr.v4.codegen.model.RuleFunctionTest > testGetNameByFuzzer1 FAILED
    java.lang.NullPointerException at RuleFunctionTest.java:6890
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer2]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer3]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer4]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName10]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName11]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName12]: FAILURE

org.antlr.v4.codegen.model.RuleFunctionTest > testGetName12 FAILED
    java.lang.NullPointerException at RuleFunctionTest.java:6810
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName13]: SUCCESS
Test summary: FAILURE (1079 tests, 30 successes, 1049 failures, 0 skipped)

1079 tests completed, 1049 failed

> Task :utbot-junit-contest:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':utbot-junit-contest:test'.
> There were failing tests. See the report at: file:///home/zaleslaw/IdeaProjects/UTBotJava/utbot-junit-contest/build/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 12s
36 actionable tasks: 4 executed, 32 up-to-date

Hi @Atos1337 I reproduced the pipeline, its finished with the report creation, but in console it finishes with the following text (I've trained on the smallest piece of data and model is not accurate) with build errors
Please let me know if it's normal behaviour (probably we need to document it)
rg.antlr.v4.codegen.model.RuleFunctionTest > testGetNameByFuzzer1 FAILED
    java.lang.NullPointerException at RuleFunctionTest.java:6890
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer2]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer3]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetNameByFuzzer4]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName10]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName11]: SUCCESS
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName12]: FAILURE

org.antlr.v4.codegen.model.RuleFunctionTest > testGetName12 FAILED
    java.lang.NullPointerException at RuleFunctionTest.java:6810
[org.antlr.v4.codegen.model.RuleFunctionTest] [testGetName13]: SUCCESS
Test summary: FAILURE (1079 tests, 30 successes, 1049 failures, 0 skipped)

1079 tests completed, 1049 failed

> Task :utbot-junit-contest:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':utbot-junit-contest:test'.
> There were failing tests. See the report at: file:///home/zaleslaw/IdeaProjects/UTBotJava/utbot-junit-contest/build/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 12s
36 actionable tasks: 4 executed, 32 up-to-date

@amandelpie it's OK, because UTBot can generate tests that should be failed


Support special values of TIME

See #41 .
Supports negative values for TIME in simple queries and supports large values (greater than 23:59:59) in all queries.

Looks like -00:00:01 cannot work because first part will be parse to 0 (which is not negative integer). Should support it.

For MySQL's fancy time-values, how about allowing StringCodec to decode these values (i.e. Row.get("timetamp", String.class))? Some values (such as 00.00.00 00:00) cannot be represented properly with JSR310 types, however as String value, you could enable at least consumption and users may decide what they do with these values afterwards.

@mp911de Good idea, but there have a problem: MySQL use two result codec mode: text encoded in simple query, and binary encoded in prepared query.
In text results, the data of TIME will be looks like (-)XX:YY:ZZ, but it uses little endian byte-encoded integers in binary results. (DATE and DATETIME have similar problem)
Of course, VARCHAR/TEXT/ENUM/SET will always use string-encoded in both result codec modes.
Which means, I need create a new Codec to implement a special logic for convert binary-encoded TIME to a String which similar its text result. (DATE and DATETIME have similar problem, too)