Add a test to ensure False Start occurs.

This adds the missing test coverage for
7e3305eebd7fb06d57e7f25b3bbf9c10d526f7d5.

Change-Id: I8c9f1dc998afa9bb1f6fb2a7872a651037bb4844
Reviewed-on: https://boringssl-review.googlesource.com/1610
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 72e8cce..9645f70 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -126,6 +126,9 @@
 	// sendPrefix sends a prefix on the socket before actually performing a
 	// handshake.
 	sendPrefix string
+	// shimWritesFirst controls whether the shim sends an initial "hello"
+	// message before doing a roundtrip with the runner.
+	shimWritesFirst bool
 	// flags, if not empty, contains a list of command-line flags that will
 	// be passed to the shim program.
 	flags []string
@@ -529,6 +532,17 @@
 		}
 	}
 
+	if test.shimWritesFirst {
+		var buf [5]byte
+		_, err := io.ReadFull(tlsConn, buf[:])
+		if err != nil {
+			return err
+		}
+		if string(buf[:]) != "hello" {
+			return fmt.Errorf("bad initial message")
+		}
+	}
+
 	if messageLen < 0 {
 		if test.protocol == dtls {
 			return fmt.Errorf("messageLen < 0 not supported for DTLS tests")
@@ -646,6 +660,10 @@
 		flags = append(flags, "-resume")
 	}
 
+	if test.shimWritesFirst {
+		flags = append(flags, "-shim-writes-first")
+	}
+
 	flags = append(flags, test.flags...)
 
 	var shim *exec.Cmd
@@ -1156,13 +1174,15 @@
 				CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256},
 				NextProtos:   []string{"foo"},
 				Bugs: ProtocolBugs{
+					ExpectFalseStart:         true,
 					MaxHandshakeRecordLength: maxHandshakeRecordLength,
 				},
 			},
 			flags: append(flags,
 				"-false-start",
 				"-select-next-proto", "foo"),
-			resumeSession: true,
+			shimWritesFirst: true,
+			resumeSession:   true,
 		})
 
 		// False Start without session tickets.
@@ -1173,6 +1193,7 @@
 				NextProtos:             []string{"foo"},
 				SessionTicketsDisabled: true,
 				Bugs: ProtocolBugs{
+					ExpectFalseStart:         true,
 					MaxHandshakeRecordLength: maxHandshakeRecordLength,
 				},
 			},
@@ -1180,6 +1201,7 @@
 				"-false-start",
 				"-select-next-proto", "foo",
 			),
+			shimWritesFirst: true,
 		})
 
 		// Server parses a V2ClientHello.