Configure explicitly whether to shard tests

This removes a place where we make hard-coded assumes about test names.
Also it shards pki_test, as that test suite is large enough to benefit
from it.

Change-Id: I392254b73a2df2f022ccf13508552372c103bff7
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/61285
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
diff --git a/util/all_tests.go b/util/all_tests.go
index c0dceba..b2f0b17 100644
--- a/util/all_tests.go
+++ b/util/all_tests.go
@@ -310,12 +310,7 @@
 }
 
 func (t test) getGTestShards() ([]test, error) {
-	if *numWorkers == 1 || len(t.Cmd) != 1 {
-		return []test{t}, nil
-	}
-
-	// Only shard the three GTest-based tests.
-	if t.Cmd[0] != "crypto/crypto_test" && t.Cmd[0] != "ssl/ssl_test" && t.Cmd[0] != "decrepit/decrepit_test" {
+	if *numWorkers == 1 || !t.Shard {
 		return []test{t}, nil
 	}
 
diff --git a/util/all_tests.json b/util/all_tests.json
index 0a5bb40..0d7454e 100644
--- a/util/all_tests.json
+++ b/util/all_tests.json
@@ -1,6 +1,7 @@
 [
   {
-    "cmd": ["crypto/crypto_test"]
+    "cmd": ["crypto/crypto_test"],
+    "shard": true
   },
   {
     "cmd": ["crypto/crypto_test", "--gtest_also_run_disabled_tests", "--gtest_filter=BNTest.DISABLED_WycheproofPrimality"]
@@ -41,12 +42,15 @@
     "cmd": ["crypto/crypto_test", "--fork_unsafe_buffering", "--gtest_filter=RandTest.*:-RandTest.Fork"]
   },
   {
-    "cmd": ["decrepit/decrepit_test"]
+    "cmd": ["decrepit/decrepit_test"],
+    "shard": true
   },
   {
-    "cmd": ["ssl/ssl_test"]
+    "cmd": ["ssl/ssl_test"],
+    "shard": true
   },
   {
-    "cmd": ["pki_test"]
+    "cmd": ["pki_test"],
+    "shard": true
   }
 ]
diff --git a/util/testconfig/testconfig.go b/util/testconfig/testconfig.go
index 1efcab1..c324741 100644
--- a/util/testconfig/testconfig.go
+++ b/util/testconfig/testconfig.go
@@ -23,6 +23,7 @@
 	Cmd     []string `json:"cmd"`
 	Env     []string `json:"env"`
 	SkipSDE bool     `json:"skip_sde"`
+	Shard   bool     `json:"shard"`
 }
 
 func ParseTestConfig(filename string) ([]Test, error) {