+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
package main
import (
type eventSourceSuite struct{}
-func testDBConfig() (pgConfig, error) {
+func testDBConfig() pgConfig {
var railsDB struct {
Test struct {
Database string
}
err := config.LoadFile(&railsDB, "../api/config/database.yml")
if err != nil {
- return nil, err
+ panic(err)
}
cfg := pgConfig{
"dbname": railsDB.Test.Database,
"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,
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() {
case <-time.After(10 * time.Second):
c.Fatal("timed out")
}
+
+ c.Check(pges.DBHealth(), check.IsNil)
}