]> Cypherpunks repositories - gostls13.git/commitdiff
doc/articles/wiki: fix racy test
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 19 Nov 2012 20:36:15 +0000 (12:36 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 19 Nov 2012 20:36:15 +0000 (12:36 -0800)
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6853069

doc/articles/wiki/get.go
doc/articles/wiki/test.bash

index c6e9bf28b736d457c991759f68abc583ad5c56c2..b3e464b3442d83103db9eae7515135b623d572e2 100644 (file)
@@ -13,11 +13,13 @@ import (
        "net/http"
        "os"
        "strings"
+       "time"
 )
 
 var (
        post = flag.String("post", "", "urlencoded form data to POST")
        addr = flag.Bool("addr", false, "find open address and print to stdout")
+       wait = flag.Duration("wait_for_port", 0, "if non-zero, the amount of time to wait for the address to become available")
 )
 
 func main() {
@@ -37,11 +39,18 @@ func main() {
        }
        var r *http.Response
        var err error
-       if *post != "" {
-               b := strings.NewReader(*post)
-               r, err = http.Post(url, "application/x-www-form-urlencoded", b)
-       } else {
-               r, err = http.Get(url)
+       loopUntil := time.Now().Add(*wait)
+       for {
+               if *post != "" {
+                       b := strings.NewReader(*post)
+                       r, err = http.Post(url, "application/x-www-form-urlencoded", b)
+               } else {
+                       r, err = http.Get(url)
+               }
+               if err == nil || *wait == 0 || time.Now().After(loopUntil) {
+                       break
+               }
+               time.Sleep(100 * time.Millisecond)
        }
        if err != nil {
                log.Fatal(err)
index 5c2cb60dc0044329f084ba03c6d5eb66e9a875f7..8bd8580f02817e08c837e1f49d1631f2dbb61cf8 100755 (executable)
@@ -18,9 +18,7 @@ go build -o final-test.bin final-test.go
 (./final-test.bin) &
 wiki_pid=$!
 
-sleep 1
-
-./get.bin http://$addr/edit/Test > test_edit.out
+./get.bin --wait_for_port=5s http://$addr/edit/Test > test_edit.out
 diff -u test_edit.out test_edit.good
 ./get.bin -post=body=some%20content http://$addr/save/Test
 diff -u Test.txt test_Test.txt.good