aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2024-03-31 11:18:40 +0200
committerJ08nY2024-03-31 11:18:40 +0200
commit6c2d68b4772b5276e2abd6208aee2618b6e32227 (patch)
tree2b72066c0f34146a46b5f860080e98e90ea9c026
parentb026dacd1af1970fb27f13783e039415cc862015 (diff)
downloadECTester-6c2d68b4772b5276e2abd6208aee2618b6e32227.tar.gz
ECTester-6c2d68b4772b5276e2abd6208aee2618b6e32227.tar.zst
ECTester-6c2d68b4772b5276e2abd6208aee2618b6e32227.zip
-rw-r--r--.github/workflows/build.yml7
-rw-r--r--standalone/build.gradle.kts22
-rw-r--r--standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java50
-rw-r--r--standalone/src/test/java/cz/crcs/ectester/standalone/OutputTests.java2
4 files changed, 64 insertions, 17 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fe294ee..ab2a2ee 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -192,6 +192,13 @@ jobs:
path: |
standalone/build/libs/ECTesterStandalone.jar
+ - name: Upload results
+ uses: actions/upload-artifact@v4
+ with:
+ name: results-standalone-${{ matrix.java }}
+ path: |
+ standalone/build/results/
+
- name: Upload code coverage
uses: codecov/codecov-action@v4
with:
diff --git a/standalone/build.gradle.kts b/standalone/build.gradle.kts
index c79af1b..bc7e42a 100644
--- a/standalone/build.gradle.kts
+++ b/standalone/build.gradle.kts
@@ -35,16 +35,30 @@ application {
}
tasks.named<Test>("test") {
+ val resultsDir = layout.buildDirectory.dir("results").get().asFile;
+ doFirst {
+ resultsDir.mkdirs();
+ }
+
useJUnitPlatform()
// Report is always generated after tests run
finalizedBy(tasks.jacocoTestReport)
- jvmArgs(
- "--add-exports", "jdk.crypto.ec/sun.security.ec=ALL-UNNAMED"
- )
+
+ if (JavaVersion.current() > JavaVersion.VERSION_1_8 && JavaVersion.current() < JavaVersion.VERSION_22) {
+ jvmArgs("--add-exports", "jdk.crypto.ec/sun.security.ec=ALL-UNNAMED"
+ )
+ } else if (JavaVersion.current() >= JavaVersion.VERSION_22) {
+ jvmArgs("--add-exports", "java.base/sun.security.ec=ALL-UNNAMED")
+ }
+
// Add wolfcrypt JNI lib path to LD_LIBRARY_PATH (as our native library loading does not handle it)
environment(
"LD_LIBRARY_PATH", "$rootDir/ext/wolfcrypt-jni/lib/:" + System.getenv("LD_LIBRARY_PATH")
)
+ // Add a path where we will store our test results.
+ environment(
+ "RESULT_PATH", resultsDir.absolutePath
+ )
}
tasks.jacocoTestReport {
@@ -77,7 +91,7 @@ tasks.register<Exec>("libs") {
environment("PROJECT_ROOT_PATH", rootDir.absolutePath)
if (osdetector.os == "windows") {
commandLine("makefile.bat", "/c")
- } else if (osdetector.os == "linux"){
+ } else if (osdetector.os == "linux") {
commandLine("make", "-k", "-B")
}
}
diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java
index e3ae573..0476818 100644
--- a/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java
+++ b/standalone/src/test/java/cz/crcs/ectester/standalone/AppTests.java
@@ -7,7 +7,12 @@ import org.junitpioneer.jupiter.StdIo;
import org.junitpioneer.jupiter.StdOut;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.PrintStream;
+import java.nio.file.Path;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.*;
@@ -59,6 +64,27 @@ public class AppTests {
return Stream.of("BoringSSL", "Botan", "BouncyCastle", "Crypto++", "IPPCP", "LibreSSL", "libgcrypt", "mbedTLS", "Nettle", "OpenSSL", "SunEC", "tomcrypt", "wolfCrypt");
}
+ String[] buildCLIArgs(String libName, String suite, String... additional) {
+ String resultPath = System.getenv("RESULT_PATH");
+ List<String> args = new LinkedList<>();
+ args.add("test");
+ if (resultPath != null) {
+ File resultDir = new File(resultPath);
+ if (resultDir.exists() || resultDir.mkdirs()) {
+ args.add("-o");
+ args.add(String.format("text:%s/%s_%s.txt", resultPath, suite, libName));
+ args.add("-o");
+ args.add(String.format("yaml:%s/%s_%s.yml", resultPath, suite, libName));
+ args.add("-o");
+ args.add(String.format("xml:%s/%s_%s.xml", resultPath, suite, libName));
+ }
+ }
+ Collections.addAll(args, additional);
+ args.add(suite);
+ args.add(libName);
+ return args.toArray(new String[]{});
+ }
+
@SuppressWarnings("JUnitMalformedDeclaration")
@ParameterizedTest
@MethodSource("libs")
@@ -67,9 +93,9 @@ public class AppTests {
// TODO: "Nettle" is very broken here for a weird reason.
assumeFalse(libName.equals("Nettle"));
- String[] args = new String[]{"test", "default", libName};
+ String[] args = buildCLIArgs(libName, "default");
if (libName.equals("Botan") || libName.equals("Crypto++")) {
- args = new String[]{"test", "--kpg-type", "ECDH", "default", libName};
+ args = buildCLIArgs(libName, "default", "--kpg-type", "ECDH");
}
ECTesterStandalone.main(args);
String sout = out.capturedString();
@@ -83,9 +109,9 @@ public class AppTests {
@MethodSource("libs")
@StdIo()
public void testVectorSuite(String libName, StdOut out) {
- String[] args = new String[]{"test", "test-vectors", libName};
+ String[] args = buildCLIArgs(libName, "test-vectors");
if (libName.equals("Botan") || libName.equals("Crypto++")) {
- args = new String[]{"test", "--kpg-type", "ECDH", "test-vectors", libName};
+ args = buildCLIArgs(libName, "test-vectors", "--kpg-type", "ECDH");
}
ECTesterStandalone.main(args);
String sout = out.capturedString();
@@ -100,9 +126,9 @@ public class AppTests {
// TODO: "Nettle" is very broken here for a weird reason.
assumeFalse(libName.equals("Nettle"));
- String[] args = new String[]{"test", "performance", libName};
+ String[] args = buildCLIArgs(libName, "performance");
if (libName.equals("Botan") || libName.equals("Crypto++")) {
- args = new String[]{"test", "--kpg-type", "ECDH", "performance", libName};
+ args = buildCLIArgs(libName, "performance", "--kpg-type", "ECDH");
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
@@ -117,7 +143,7 @@ public class AppTests {
@ParameterizedTest
@MethodSource("libs")
public void signatureSuite(String libName) {
- String[] args = new String[]{"test", "signature", libName};
+ String[] args = buildCLIArgs(libName, "signature");
switch (libName) {
case "Nettle":
case "libgcrypt":
@@ -127,7 +153,7 @@ public class AppTests {
case "LibreSSL":
case "IPPCP":
case "mbedTLS":
- args = new String[]{"test", "-st", "NONEwithECDSA", "signature", libName};
+ args = buildCLIArgs(libName, "signature", "-st", "NONEwithECDSA");
break;
}
ECTesterStandalone.main(args);
@@ -136,9 +162,9 @@ public class AppTests {
@ParameterizedTest
@MethodSource("libs")
public void miscSuite(String libName) {
- String[] args = new String[]{"test", "miscellaneous", libName};
+ String[] args = buildCLIArgs(libName, "miscellaneous");
if (libName.equals("Botan") || libName.equals("Crypto++")) {
- args = new String[]{"test", "--kpg-type", "ECDH", "miscellaneous", libName};
+ args = buildCLIArgs(libName, "miscellaneous", "--kpg-type", "ECDH");
}
ECTesterStandalone.main(args);
}
@@ -149,9 +175,9 @@ public class AppTests {
// TODO: "Nettle" is very broken here for a weird reason.
assumeFalse(libName.equals("Nettle"));
- String[] args = new String[]{"test", "invalid", libName};
+ String[] args = buildCLIArgs(libName, "invalid");
if (libName.equals("Botan") || libName.equals("Crypto++")) {
- args = new String[]{"test", "--kpg-type", "ECDH", "invalid", libName};
+ args = buildCLIArgs(libName, "invalid", "--kpg-type", "ECDH");
}
ECTesterStandalone.main(args);
}
diff --git a/standalone/src/test/java/cz/crcs/ectester/standalone/OutputTests.java b/standalone/src/test/java/cz/crcs/ectester/standalone/OutputTests.java
index 7218094..7247195 100644
--- a/standalone/src/test/java/cz/crcs/ectester/standalone/OutputTests.java
+++ b/standalone/src/test/java/cz/crcs/ectester/standalone/OutputTests.java
@@ -14,7 +14,7 @@ public class OutputTests {
@ValueSource(strings = {"text", "xml", "yml"})
@StdIo()
public void formats(String format, StdOut out) {
- ECTesterStandalone.main(new String[]{"test", "-f", format, "default", "Sun"});
+ ECTesterStandalone.main(new String[]{"test", "-f", format, "default", "SunEC"});
String s = out.capturedString();
assertFalse(s.isEmpty());
}