X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ca812f58e63bd4673bb62aa8528e07d6020bfc9a..ae92d144610446849eb568247a44f02ae985c281:/services/ws/event_source_test.go diff --git a/services/ws/event_source_test.go b/services/ws/event_source_test.go index ee1da08bf1..b7b8ac3006 100644 --- a/services/ws/event_source_test.go +++ b/services/ws/event_source_test.go @@ -1,4 +1,8 @@ -package main +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package ws import ( "database/sql" @@ -6,7 +10,9 @@ import ( "sync" "time" - "git.curoverse.com/arvados.git/sdk/go/config" + "git.arvados.org/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/sdk/go/ctxlog" + "github.com/prometheus/client_golang/prometheus" check "gopkg.in/check.v1" ) @@ -14,44 +20,34 @@ var _ = check.Suite(&eventSourceSuite{}) type eventSourceSuite struct{} -func testDBConfig() (pgConfig, error) { - var railsDB struct { - Test struct { - Database string - Username string - Password string - Host string - } - } - err := config.LoadFile(&railsDB, "../api/config/database.yml") +func testDBConfig() arvados.PostgreSQLConnection { + cfg, err := arvados.GetConfig(arvados.DefaultConfigFile) if err != nil { - return nil, err + panic(err) } - cfg := pgConfig{ - "dbname": railsDB.Test.Database, - "host": railsDB.Test.Host, - "password": railsDB.Test.Password, - "user": railsDB.Test.Username, + cc, err := cfg.GetCluster("zzzzz") + if err != nil { + panic(err) } - return cfg, nil + return cc.PostgreSQL.Connection } -func testDB() (*sql.DB, error) { - cfg, err := testDBConfig() +func testDB() *sql.DB { + db, err := sql.Open("postgres", testDBConfig().String()) 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(), + DataSource: cfg.String(), QueueSize: 4, + Logger: ctxlog.TestLogger(c), + Reg: prometheus.NewRegistry(), } go pges.Run() sinks := make([]eventSink, 18) @@ -59,16 +55,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 +103,6 @@ func (*eventSourceSuite) TestEventSource(c *check.C) { case <-time.After(10 * time.Second): c.Fatal("timed out") } + + c.Check(pges.DBHealth(), check.IsNil) }