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 {