15370: Add dispatchcloud loopback driver.
[arvados.git] / lib / controller / rails_restart_test.go
index 75dd22b4a98ccbf5c04b3795ca9428710daffc04..5db37c4b8a374e01dbbe36fe5f11b3dbf259da44 100644 (file)
@@ -13,6 +13,7 @@ import (
        "net/http"
        "net/url"
        "os"
+       "strings"
        "time"
 
        "git.arvados.org/arvados.git/lib/config"
@@ -72,14 +73,19 @@ func (s *railsRestartSuite) TestConfigReload(c *check.C) {
        newhash := fmt.Sprintf("%x", sha256.Sum256(append(confdata, '\n')))
        c.Logf("newhash %s", newhash)
 
-       // Wait 2s to give RailsAPI's 1 Hz reload_config thread time
-       // to poll and hit restart.txt
-       time.Sleep(2 * time.Second)
-
-       resp, err = hc.Do(req)
-       c.Assert(err, check.IsNil)
-       c.Check(resp.StatusCode, check.Equals, http.StatusOK)
-       body, err = ioutil.ReadAll(resp.Body)
-       c.Assert(err, check.IsNil)
+       // Wait for RailsAPI's 1 Hz reload_config thread to poll and
+       // hit restart.txt
+       pollstart := time.Now()
+       for deadline := time.Now().Add(20 * time.Second); time.Now().Before(deadline); time.Sleep(time.Second) {
+               resp, err = hc.Do(req)
+               c.Assert(err, check.IsNil)
+               c.Check(resp.StatusCode, check.Equals, http.StatusOK)
+               body, err = ioutil.ReadAll(resp.Body)
+               c.Assert(err, check.IsNil)
+               if strings.Contains(string(body), newhash) {
+                       break
+               }
+       }
+       c.Logf("waited %s for rails to restart", time.Now().Sub(pollstart))
        c.Check(string(body), check.Matches, `(?ms).*`+newhash+`.*`)
 }