Make test results unique based on argument string

Hopefully this makes e.g a failure on API level 36 report as Failure
instead of Flaky if API level 1 passes.

Change-Id: I660fbc40280fe689c816ce117bed6bd63ad6378c
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
index 43827f9..04df04e 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
@@ -98,6 +98,7 @@
 
     @OptIn(ExperimentalEncodingApi::class)
     private fun reportToResultSink(
+      test: Test,
       desc: TestDescriptor?,
       result: TestResult?,
       rootDir: File,
@@ -134,14 +135,24 @@
       }
 
       val payloadObj = JsonObject()
-      val testResultsArr = com.google.gson.JsonArray()
+      val testResultsArr = JsonArray()
       val testResultObj = JsonObject()
 
       val testIdStructuredObj = JsonObject()
       val testIdCaseNameComponents = JsonArray()
       testIdCaseNameComponents.add(desc.displayName.substringBefore('['))
       val argumentString = desc.displayName.substringAfter('[').substringBeforeLast(']')
+      val moduleVariant = JsonObject()
+      val project = test.project
+      if (project.hasProperty("runtimes")) {
+        moduleVariant.addProperty("runtimes", project.property("runtimes").toString())
+      }
+      if (project.hasProperty("dex_vm")) {
+        moduleVariant.addProperty("dex_vm", project.property("dex_vm").toString())
+      }
+      moduleVariant.addProperty("args", argumentString)
       testIdStructuredObj.addProperty("module", "junit")
+      testIdStructuredObj.add("moduleVariant", moduleVariant)
       testIdStructuredObj.addProperty("coarseName", desc.className?.substringBeforeLast(".") ?: "")
       testIdStructuredObj.addProperty("fineName", desc.className?.substringAfterLast(".") ?: "")
       testIdStructuredObj.add("caseNameComponents", testIdCaseNameComponents)
@@ -164,7 +175,7 @@
       val summaryHtml = "<p>Arguments string: $argumentString</p>"
       if (stackTraceStr != null) {
         val artifact = JsonObject()
-        val encodedStackTrace = Base64.Default.encode(stackTraceStr.encodeToByteArray())
+        val encodedStackTrace = Base64.encode(stackTraceStr.encodeToByteArray())
         val jsonObject = JsonObject()
         jsonObject.addProperty("contents", encodedStackTrace)
         artifact.add("artifact-content-in-request", jsonObject)
@@ -350,6 +361,7 @@
                 }
               }
               reportToResultSink(
+                test,
                 desc,
                 result,
                 rootDir,
@@ -379,6 +391,7 @@
                 println(baos)
               }
               reportToResultSink(
+                test,
                 desc,
                 result,
                 rootDir,