X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ba418300c50e1375ca9938562579b7bd6bf9490d..c0f97a0f0617e1b6d2da1ab0e256a226b8ed810a:/services/ws/event_source_test.go diff --git a/services/ws/event_source_test.go b/services/ws/event_source_test.go index dd40835b6e..172f74ce7a 100644 --- a/services/ws/event_source_test.go +++ b/services/ws/event_source_test.go @@ -7,11 +7,15 @@ package ws import ( "database/sql" "fmt" + "io/ioutil" + "sort" "sync" "time" "git.arvados.org/arvados.git/sdk/go/arvados" "git.arvados.org/arvados.git/sdk/go/ctxlog" + "github.com/ghodss/yaml" + "github.com/prometheus/client_golang/prometheus" check "gopkg.in/check.v1" ) @@ -40,12 +44,25 @@ func testDB() *sql.DB { } func (*eventSourceSuite) TestEventSource(c *check.C) { + var logfixtures map[string]struct { + ID int + } + yamldata, err := ioutil.ReadFile("../api/test/fixtures/logs.yml") + c.Assert(err, check.IsNil) + c.Assert(yaml.Unmarshal(yamldata, &logfixtures), check.IsNil) + var logIDs []int + for _, logfixture := range logfixtures { + logIDs = append(logIDs, logfixture.ID) + } + sort.Ints(logIDs) + cfg := testDBConfig() db := testDB() pges := &pgEventSource{ DataSource: cfg.String(), QueueSize: 4, Logger: ctxlog.TestLogger(c), + Reg: prometheus.NewRegistry(), } go pges.Run() sinks := make([]eventSink, 18) @@ -59,8 +76,8 @@ func (*eventSourceSuite) TestEventSource(c *check.C) { done := make(chan bool, 1) go func() { - for i := range sinks { - _, err := db.Exec(fmt.Sprintf(`NOTIFY logs, '%d'`, i)) + for _, id := range logIDs { + _, err := db.Exec(fmt.Sprintf(`NOTIFY logs, '%d'`, id)) if err != nil { done <- true c.Fatal(err) @@ -75,17 +92,13 @@ func (*eventSourceSuite) TestEventSource(c *check.C) { go func(si int, s eventSink) { defer wg.Done() defer sinks[si].Stop() - for i := 0; i <= si; i++ { + for _, logID := range logIDs { ev := <-sinks[si].Channel() - c.Logf("sink %d received event %d", si, i) - c.Check(ev.LogID, check.Equals, uint64(i)) + c.Logf("sink %d received event %d", si, logID) + c.Check(ev.LogID, check.Equals, int64(logID)) row := ev.Detail() - if i == 0 { - // no matching row, null event - c.Check(row, check.IsNil) - } else { - c.Check(row, check.NotNil) - c.Check(row.ID, check.Equals, uint64(i)) + if c.Check(row, check.NotNil) { + c.Check(row.ID, check.Equals, int64(logID)) c.Check(row.UUID, check.Not(check.Equals), "") } }