add test case
diff --git a/dockertests/const.go b/dockertests/const.go
index 3b309e1..c6de726 100644
--- a/dockertests/const.go
+++ b/dockertests/const.go
@@ -4,6 +4,7 @@
 	dockerCsPort              string = "9000"
 	dockerSsPort              string = "9001"
 	pluginName                       = "apigeeSyncDockerTest"
+	configApidClusterId       = "apigeesync_cluster_id"
 	configProxyServerBaseURI         = "apigeesync_proxy_server_base"
 	configSnapServerBaseURI          = "apigeesync_snapshot_server_base"
 	configChangeServerBaseURI        = "apigeesync_change_server_base"
diff --git a/dockertests/docker_test.go b/dockertests/docker_test.go
index d2b45bb..efce091 100644
--- a/dockertests/docker_test.go
+++ b/dockertests/docker_test.go
@@ -11,36 +11,40 @@
 	"testing"
 	"time"
 	"encoding/json"
+	"github.com/apigee-labs/transicator/common"
 )
 
 var (
 	services  apid.Services
 	log       apid.LogService
-	data      apid.DataService
+	dataService     apid.DataService
 	config    apid.ConfigService
 	pgUrl     string
 	pgManager *ManagementPg
+	clusterIdFromConfig string
 )
 
 /*
  * This test suite acts like a dummy plugin. It listens to events emitted by
  * apidApigeeSync and runs tests.
  */
-var _ = BeforeSuite(func() {
+var _ = BeforeSuite(func(done Done) {
+	defer GinkgoRecover()
 	//hostname := "http://" + os.Getenv("APIGEE_SYNC_DOCKER_IP")
 	pgUrl = os.Getenv("APIGEE_SYNC_DOCKER_PG_URL") + "?sslmode=disable"
 	os.Setenv("APID_CONFIG_FILE", "./apid_config.yaml")
 
+
+
+	apid.Initialize(factory.DefaultServicesFactory())
+	config = apid.Config()
+
 	// init pg driver and data
 	var err error
 	pgManager, err = InitDb(pgUrl)
 	Expect(err).Should(Succeed())
 	initPgData()
 
-
-	apid.Initialize(factory.DefaultServicesFactory())
-	config = apid.Config()
-
 	// Auth Server
 	config.Set(configName, "dockerIT")
 	config.Set(configConsumerKey, "dummyKey")
@@ -48,6 +52,13 @@
 	//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)
+		}
+	})
+
 	// Setup dependencies
 	//config.Set(configChangeServerBaseURI, hostname+":"+dockerCsPort+"/")
 	//config.Set(configSnapServerBaseURI, hostname+":"+dockerSsPort+"/")
@@ -58,6 +69,10 @@
 	apid.InitializePlugins("dockerTest")
 
 
+}, 5)
+
+var _ = AfterSuite(func() {
+	pgManager.CleanupAll()
 })
 
 var _ = Describe("dockerIT", func() {
@@ -68,19 +83,65 @@
 		})
 
 		var _ = AfterEach(func() {
-			pgManager.Cleanup()
+			pgManager.CleanupTest()
 		})
 
-		It("should succesfully download table from pg", func() {
-			log.Debug("CS: " + config.GetString(configChangeServerBaseURI))
-			log.Debug("SS: " + config.GetString(configSnapServerBaseURI))
-			log.Debug("Auth: " + config.GetString(configProxyServerBaseURI))
+		It("should succesfully download new table from pg", func(done Done) {
+			//log.Debug("CS: " + config.GetString(configChangeServerBaseURI))
+			//log.Debug("SS: " + config.GetString(configSnapServerBaseURI))
+			//log.Debug("Auth: " + config.GetString(configProxyServerBaseURI))
+			tableName := "docker_test"
+			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())
+						close(done)
+					}()
+				}
+			})
 
-			time.Sleep(5 * time.Second)
-		}, 30)
+			createTestTable(tableName);
+
+
+		}, 5)
 	})
 })
 
+func createTestTable(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');")
+	Expect(err).Should(Succeed())
+	_, err = tx.Exec("INSERT INTO edgex." + tableName + " values ('three', 3, '" + clusterIdFromConfig + "');")
+	Expect(err).Should(Succeed())
+	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 initDummyAuthServer() (testServer *httptest.Server) {
 	testRouter := apid.API().Router()
 	testServer = httptest.NewServer(testRouter)
@@ -92,7 +153,7 @@
 func initPlugin(s apid.Services) (apid.PluginData, error) {
 	services = s
 	log = services.Log().ForModule(pluginName)
-	data = services.Data()
+	dataService = services.Data()
 
 	var pluginData = apid.PluginData{
 		Name:    pluginName,
@@ -107,7 +168,8 @@
 }
 
 func initPgData() {
-	clusterId := "4c6bb536-0d64-43ca-abae-17c08f1a7e58"
+	clusterIdFromConfig = config.GetString(configApidClusterId)//"4c6bb536-0d64-43ca-abae-17c08f1a7e58"
+	clusterId := clusterIdFromConfig
 	scopeId := "ae418890-2c22-4c6a-b218-69e261034b96"
 	deploymentId := "633af126-ee79-4a53-bef7-7ba30da8aad6"
 	bundleConfigId := "613ce223-6c73-43f4-932c-3c69b0c7c65d"
@@ -153,7 +215,6 @@
 	jsonBytes, err := json.Marshal(bf)
 	Expect(err).Should(Succeed())
 
-	log.Warn(string(jsonBytes))
 
 	bfr := &bundleConfigRow{
 		id: bf.Id,
diff --git a/dockertests/management_pg.go b/dockertests/management_pg.go
index 787bccb..cb4239a 100644
--- a/dockertests/management_pg.go
+++ b/dockertests/management_pg.go
@@ -135,7 +135,7 @@
 			created_by,
 			updated,
 			updated_by,
-			_change_selector,
+			_change_selector
 			)
 			VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)`)
 	if err != nil {
@@ -165,8 +165,14 @@
 	return tx, err
 }
 
-func (m *ManagementPg) Cleanup() error {
+func (m *ManagementPg) CleanupTest() error {
 	cleanupSql := "DELETE FROM edgex.apid_cluster WHERE created_by!='" + testInitUser + "';"
 	_, err := m.pg.Exec(cleanupSql)
 	return err
 }
+
+func (m *ManagementPg) CleanupAll() error {
+	cleanupSql := "DELETE FROM edgex.apid_cluster;"
+	_, err := m.pg.Exec(cleanupSql)
+	return err
+}