12983: Add another error message to the "broken node" blacklist.
[arvados.git] / services / ws / event_source_test.go
index ee1da08bf17804e778a62a989497a0d21acc67c2..ea6063a0c3a718dde7baa52a7a9aa5504b0e5f16 100644 (file)
@@ -1,3 +1,7 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
 import (
@@ -14,7 +18,7 @@ var _ = check.Suite(&eventSourceSuite{})
 
 type eventSourceSuite struct{}
 
-func testDBConfig() (pgConfig, error) {
+func testDBConfig() pgConfig {
        var railsDB struct {
                Test struct {
                        Database string
@@ -25,7 +29,7 @@ func testDBConfig() (pgConfig, error) {
        }
        err := config.LoadFile(&railsDB, "../api/config/database.yml")
        if err != nil {
-               return nil, err
+               panic(err)
        }
        cfg := pgConfig{
                "dbname":   railsDB.Test.Database,
@@ -33,22 +37,20 @@ func testDBConfig() (pgConfig, error) {
                "password": railsDB.Test.Password,
                "user":     railsDB.Test.Username,
        }
-       return cfg, nil
+       return cfg
 }
 
-func testDB() (*sql.DB, error) {
-       cfg, err := testDBConfig()
+func testDB() *sql.DB {
+       db, err := sql.Open("postgres", testDBConfig().ConnectionString())
        if err != nil {
-               return nil, err
+               panic(err)
        }
-       return sql.Open("postgres", cfg.ConnectionString())
+       return db
 }
 
 func (*eventSourceSuite) TestEventSource(c *check.C) {
-       cfg, err := testDBConfig()
-       if err != nil {
-               c.Fatal(err)
-       }
+       cfg := testDBConfig()
+       db := testDB()
        pges := &pgEventSource{
                DataSource: cfg.ConnectionString(),
                QueueSize:  4,
@@ -59,16 +61,9 @@ func (*eventSourceSuite) TestEventSource(c *check.C) {
                sinks[i] = pges.NewSink()
        }
 
-       // wait for listener to start, as evidenced by queue channel
-       // appearing (relying on internal implementation detail here)
-       for deadline := time.Now().Add(10 * time.Second); pges.queue == nil; time.Sleep(10 * time.Millisecond) {
-               c.Assert(time.Now().After(deadline), check.Equals, false)
-       }
+       pges.WaitReady()
        defer pges.cancel()
 
-       db, err := testDB()
-       c.Assert(err, check.IsNil)
-
        done := make(chan bool, 1)
 
        go func() {
@@ -114,4 +109,6 @@ func (*eventSourceSuite) TestEventSource(c *check.C) {
        case <-time.After(10 * time.Second):
                c.Fatal("timed out")
        }
+
+       c.Check(pges.DBHealth(), check.IsNil)
 }