add new test
diff --git a/dockertests/docker_test.go b/dockertests/docker_test.go index c787115..87eff5d 100644 --- a/dockertests/docker_test.go +++ b/dockertests/docker_test.go
@@ -106,7 +106,7 @@ }) It("should succesfully download new table from pg", func(done Done) { - tableName := "docker_test" + tableName := "docker_test_a" targetTablename := "edgex_" + tableName handler := &newTableHandler{ targetTablename: targetTablename, @@ -118,6 +118,18 @@ }, 1) + It("should get data according to data scope", func(done Done) { + tableName := "docker_test_b" + targetTablename := "edgex_" + tableName + handler := &newTableHandler{ + targetTablename: targetTablename, + done: done, + } + + apid.Events().Listen(ApigeeSyncEventSelector, handler) + createTestTableWithData(tableName) + + }, 1) }) }) @@ -129,6 +141,17 @@ Expect(err).Should(Succeed()) _, err = tx.Exec("ALTER TABLE edgex." + tableName + " replica identity full;") Expect(err).Should(Succeed()) + tx.Commit() +} + +func createTestTableWithData(tableName string) { + tx, err := pgManager.BeginTransaction() + Expect(err).Should(Succeed()) + defer tx.Rollback() + _, err = tx.Exec("CREATE TABLE edgex." + tableName + " (id varchar primary key, val integer, _change_selector varchar);") + Expect(err).Should(Succeed()) + _, err = tx.Exec("ALTER TABLE edgex." + tableName + " replica identity full;") + Expect(err).Should(Succeed()) _, err = tx.Exec("INSERT INTO edgex." + tableName + " values ('one', 1, 'foo');") Expect(err).Should(Succeed()) _, err = tx.Exec("INSERT INTO edgex." + tableName + " values ('two', 2, 'bar');") @@ -138,22 +161,6 @@ tx.Commit() } -func verifyTestTable(targetTableName string, sqliteDb apid.DB) bool { - rows, err := sqliteDb.Query("SELECT DISTINCT tableName FROM _transicator_tables;") - Expect(err).Should(Succeed()) - defer rows.Close() - for rows.Next() { - var tableName string - err = rows.Scan(&tableName) - Expect(err).Should(Succeed()) - - if tableName == targetTableName { - return true - } - } - return false -} - func dropTestTable(targetTableName string, sqliteDb apid.DB) { tx, err := pgManager.BeginTransaction() Expect(err).Should(Succeed()) @@ -295,17 +302,60 @@ func (n *newTableHandler) Handle(event apid.Event) { if s, ok := event.(*common.Snapshot); ok { - go func() { - defer GinkgoRecover() - sqliteDb, err := dataService.DBVersion(s.SnapshotInfo) - Expect(err).Should(Succeed()) - Expect(verifyTestTable(n.targetTablename, sqliteDb)).To(BeTrue()) - apid.Events().StopListening(ApigeeSyncEventSelector, n) - close(n.done) - }() + sqliteDb, err := dataService.DBVersion(s.SnapshotInfo) + Expect(err).Should(Succeed()) + Expect(verifyTestTableExist(n.targetTablename, sqliteDb)).To(BeTrue()) + apid.Events().StopListening(ApigeeSyncEventSelector, n) + close(n.done) } } +func verifyTestTableExist(targetTableName string, sqliteDb apid.DB) bool { + rows, err := sqliteDb.Query("SELECT DISTINCT tableName FROM _transicator_tables;") + Expect(err).Should(Succeed()) + defer rows.Close() + for rows.Next() { + var tableName string + err = rows.Scan(&tableName) + Expect(err).Should(Succeed()) + + if tableName == targetTableName { + return true + } + } + return false +} + +type newTableScopeHandler struct { + targetTablename string + done Done +} + +func (n *newTableScopeHandler) Handle(event apid.Event) { + if s, ok := event.(*common.Snapshot); ok { + sqliteDb, err := dataService.DBVersion(s.SnapshotInfo) + Expect(err).Should(Succeed()) + verifyTestTableData(n.targetTablename, sqliteDb) + apid.Events().StopListening(ApigeeSyncEventSelector, n) + close(n.done) + } +} + +func verifyTestTableData(targetTableName string, sqliteDb apid.DB) { + rows, err := sqliteDb.Query("SELECT id FROM " + targetTableName + ";") + Expect(err).Should(Succeed()) + defer rows.Close() + count := 0 + for rows.Next() { + var id string + err = rows.Scan(&id) + Expect(err).Should(Succeed()) + Expect(id).To(Equal("three")) + count += 1 + } + Expect(count).To(Equal(1)) +} + func TestDockerApigeeSync(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "ApigeeSync Docker Suite")
diff --git a/dockertests/management_pg.go b/dockertests/management_pg.go index 0a5048f..6c7dfd4 100644 --- a/dockertests/management_pg.go +++ b/dockertests/management_pg.go
@@ -16,7 +16,6 @@ import ( "database/sql" - "fmt" _ "github.com/lib/pq" ) @@ -215,7 +214,6 @@ } for _, tableName := range tablesToDelete { - fmt.Println("Drop table: " + tableName) cleanupSql := "DROP TABLE edgex." + tableName + ";" _, err := m.pg.Exec(cleanupSql) if err != nil {