dashboard, cmd/makemac: add macOS 10.15 Catalina builder

Added the macOS 10.15 Catalina builder to the dashboard. Catalina builders should
use the Mojave guestid in vSphere 6.7 update 3 because the Catalina guestid is not
available in this version of vSphere. A Catalina builder will run on this version
of vSphere with the Mojave guestid. Modified the expected number of vm instances
running on Macstadium due to the addition of macOS 10.15 builders.

Updates golang/go#34748

Change-Id: If14f6e088afc05dd1783460f21907e9345e3c338
Reviewed-on: https://go-review.googlesource.com/c/build/+/207937
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/dashboard/builders_test.go b/dashboard/builders_test.go
index 4bb29ee..f480a87 100644
--- a/dashboard/builders_test.go
+++ b/dashboard/builders_test.go
@@ -472,6 +472,7 @@
 		{b("windows-386-2008", "exp"), both},
 		{b("windows-amd64-2016", "exp"), both},
 		{b("darwin-amd64-10_14", "exp"), onlyPost},
+		{b("darwin-amd64-10_15", "exp"), onlyPost},
 		// ... but not on most others:
 		{b("darwin-amd64-10_12", "exp"), none},
 		{b("freebsd-386-11_2", "exp"), none},
@@ -494,6 +495,7 @@
 		{b("darwin-amd64-10_11@go1.12", "net"), none},
 		{b("darwin-386-10_14@go1.11", "net"), none},
 
+		{b("darwin-amd64-10_15", "go"), onlyPost},
 		{b("darwin-amd64-10_14", "go"), onlyPost},
 		{b("darwin-amd64-10_12", "go"), onlyPost},
 		{b("darwin-amd64-10_11", "go"), onlyPost},
@@ -615,10 +617,10 @@
 		{"darwin-amd64-10_11", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_12", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_14", "test:foo", postSubmit, false},
-		{"darwin-amd64-10_14", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_14", "reboot", postSubmit, false},
 		{"darwin-amd64-10_14", "api", postSubmit, false},
 		{"darwin-amd64-10_14", "codewalk", postSubmit, false},
+		{"darwin-amd64-10_15", "test:foo", postSubmit, false},
 	}
 	for _, tt := range tests {
 		bc, ok := Builders[tt.builder]
@@ -803,3 +805,18 @@
 	}
 
 }
+
+// TestExpectedMacstadiumVMCount ensures that only 20 instances of macOS virtual machines
+// are expected at MacStadium.
+// TODO: remove once the scheduler allocates VMs based on demand https://golang.org/issue/35698
+func TestExpectedMacstadiumVMCount(t *testing.T) {
+	got := 0
+	for host, config := range Hosts {
+		if strings.HasPrefix(host, "host-darwin-10_") {
+			got += config.ExpectNum
+		}
+	}
+	if got != 20 {
+		t.Fatalf("macstadium host count: got %d; want 20", got)
+	}
+}