spanner: Cleanup TestTakeFromWriteQueue

Removes the 'wait one second statements' from the test.

Change-Id: Id44076504e1c7cb9742ea7b710fd82ff1626822c
Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/47615
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jean de Klerk <deklerk@google.com>
diff --git a/spanner/session_test.go b/spanner/session_test.go
index f73c069..5da6aa3 100644
--- a/spanner/session_test.go
+++ b/spanner/session_test.go
@@ -784,9 +784,10 @@
 	_, client, teardown := setupMockedTestServerWithConfig(t,
 		ClientConfig{
 			SessionPoolConfig: SessionPoolConfig{
-				MaxOpened:     1,
-				WriteSessions: 1.0,
-				MaxIdle:       1,
+				MaxOpened:           1,
+				WriteSessions:       1.0,
+				MaxIdle:             1,
+				HealthCheckInterval: time.Nanosecond,
 			},
 		})
 	defer teardown()
@@ -798,8 +799,19 @@
 	}
 	sh.recycle()
 
-	// TODO(deklerk): get rid of this
-	<-time.After(time.Second)
+	// Wait until the health checker has write-prepared the session.
+	waitUntil := time.After(time.Second)
+	var numWritePrepared int
+	for numWritePrepared == 0 {
+		select {
+		case <-waitUntil:
+			break
+		default:
+		}
+		sp.mu.Lock()
+		numWritePrepared = sp.idleWriteList.Len()
+		sp.mu.Unlock()
+	}
 
 	// The session should now be in write queue but take should also return it.
 	sp.mu.Lock()