update bash
diff --git a/dockertests/dockerTest.sh b/dockertests/dockerTest.sh index 46c5937..39b65b8 100755 --- a/dockertests/dockerTest.sh +++ b/dockertests/dockerTest.sh
@@ -55,6 +55,28 @@ docker run --name ${ssname} -d -p 9001:9001 apigeelabs/transicator-snapshot -p 9001 -u ${TEST_PG_URL} docker run --name ${csname} -d -p 9000:9000 apigeelabs/transicator-changeserver -p 9000 -u ${TEST_PG_URL} -s testslot +# Wait for SS to be up +while `true` +do + sleep 1 + response=$(curl -i http://${DOCKER_IP}:9001/snapshots?selector=foo | head -n 1) + if [[ $response == *303* ]] + then + break + fi +done + +# Wait for CS to be up +while `true` +do + sleep 1 + response=$(curl -i http://${DOCKER_IP}:9000/changes | head -n 1) + if [[ $response == *200* ]] + then + break + fi +done + apid_config=`cat <<EOF apigeesync_instance_name: SQLLITAPID apigeesync_snapshot_server_base: http://${DOCKER_IP}:9001/ @@ -67,4 +89,6 @@ EOF ` rm -f ${WORK_DIR}/dockertests/apid_config.yaml -echo "$apid_config" >> ${WORK_DIR}/dockertests/apid_config.yaml \ No newline at end of file +echo "$apid_config" >> ${WORK_DIR}/dockertests/apid_config.yaml + +#go test dockertests/*.go \ No newline at end of file
diff --git a/dockertests/docker_test.go b/dockertests/docker_test.go index efce091..eb0ad02 100644 --- a/dockertests/docker_test.go +++ b/dockertests/docker_test.go
@@ -28,7 +28,7 @@ * This test suite acts like a dummy plugin. It listens to events emitted by * apidApigeeSync and runs tests. */ -var _ = BeforeSuite(func(done Done) { +var _ = BeforeSuite(func() { defer GinkgoRecover() //hostname := "http://" + os.Getenv("APIGEE_SYNC_DOCKER_IP") pgUrl = os.Getenv("APIGEE_SYNC_DOCKER_PG_URL") + "?sslmode=disable" @@ -49,30 +49,26 @@ config.Set(configName, "dockerIT") config.Set(configConsumerKey, "dummyKey") config.Set(configConsumerSecret, "dummySecret") - //config.Set(configApidClusterId, "testClusterId") testServer := initDummyAuthServer() - // hang until snapshot received - apid.Events().ListenFunc(ApigeeSyncEventSelector, func(event apid.Event){ - if _, ok := event.(*common.Snapshot); ok { - close(done) - } - }) + initDone := make(chan bool) + handler := &waitSnapshotHandler{initDone} - // Setup dependencies - //config.Set(configChangeServerBaseURI, hostname+":"+dockerCsPort+"/") - //config.Set(configSnapServerBaseURI, hostname+":"+dockerSsPort+"/") + + // hang until snapshot received + apid.Events().Listen(ApigeeSyncEventSelector, handler) + config.Set(configProxyServerBaseURI, testServer.URL) // init plugin apid.RegisterPlugin(initPlugin) apid.InitializePlugins("dockerTest") - + <- initDone }, 5) var _ = AfterSuite(func() { - pgManager.CleanupAll() + //pgManager.CleanupAll() }) var _ = Describe("dockerIT", func() { @@ -83,7 +79,7 @@ }) var _ = AfterEach(func() { - pgManager.CleanupTest() + //pgManager.CleanupTest() }) It("should succesfully download new table from pg", func(done Done) { @@ -91,13 +87,15 @@ //log.Debug("SS: " + config.GetString(configSnapServerBaseURI)) //log.Debug("Auth: " + config.GetString(configProxyServerBaseURI)) tableName := "docker_test" + targetTablename := "edgex_" + tableName apid.Events().ListenFunc(ApigeeSyncEventSelector, func(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(tableName, sqliteDb)).To(BeTrue()) + Expect(verifyTestTable(targetTablename, sqliteDb)).To(BeTrue()) + dropTestTable(targetTablename, sqliteDb) close(done) }() } @@ -106,7 +104,7 @@ createTestTable(tableName); - }, 5) + }, 1) }) }) @@ -135,6 +133,7 @@ var tableName string err = rows.Scan(&tableName) Expect(err).Should(Succeed()) + if tableName==targetTableName { return true } @@ -142,6 +141,13 @@ return false } +func dropTestTable(targetTableName string, sqliteDb apid.DB) { + tx, err := pgManager.BeginTransaction() + Expect(err).Should(Succeed()) + _, err = tx.Exec("DROP TABLE IF EXISTS edgex." + targetTableName + ";") + Expect(err).Should(Succeed()) +} + func initDummyAuthServer() (testServer *httptest.Server) { testRouter := apid.API().Router() testServer = httptest.NewServer(testRouter) @@ -245,8 +251,8 @@ } tx, err := pgManager.BeginTransaction() - defer tx.Rollback() Expect(err).Should(Succeed()) + defer tx.Rollback() err = pgManager.InsertApidCluster(tx, cluster) Expect(err).Should(Succeed()) err = pgManager.InsertDataScope(tx, ds) @@ -259,6 +265,17 @@ Expect(err).Should(Succeed()) } +type waitSnapshotHandler struct { + initDone chan bool +} + +func (w *waitSnapshotHandler) Handle(event apid.Event) { + if _, ok := event.(*common.Snapshot); ok { + apid.Events().StopListening(ApigeeSyncEventSelector, w) + w.initDone <- true + } +} + func TestDockerApigeeSync(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "ApigeeSync Docker Suite")