add 1 more test case, rename vars
diff --git a/listener.go b/listener.go index e5d3980..393dc03 100644 --- a/listener.go +++ b/listener.go
@@ -102,7 +102,7 @@ func processChangeList(changes *common.ChangeList) { // changes have been applied to DB - var deploymentsToInsert, deploymentsToDelete []DataDeployment + var insertedDeployments, deletedDeployments []DataDeployment var errResults apiDeploymentResults for _, change := range changes.Changes { switch change.Table { @@ -111,7 +111,7 @@ case common.Insert: dep, err := dataDeploymentFromRow(change.NewRow) if err == nil { - deploymentsToInsert = append(deploymentsToInsert, dep) + insertedDeployments = append(insertedDeployments, dep) } else { result := apiDeploymentResult{ ID: dep.ID, @@ -130,7 +130,7 @@ ID: id, DataScopeID: dataScopeID, } - deploymentsToDelete = append(deploymentsToDelete, dep) + deletedDeployments = append(deletedDeployments, dep) default: log.Errorf("unexpected operation: %s", change.Operation) } @@ -142,23 +142,23 @@ go transmitDeploymentResultsToServer(errResults) } - for _, d := range deploymentsToDelete { + for _, d := range deletedDeployments { deploymentsChanged <- d.ID } log.Debug("ChangeList processed") - for _, dep := range deploymentsToInsert { + for _, dep := range insertedDeployments { queueDownloadRequest(dep) } // clean up old bundles - if len(deploymentsToDelete) > 0 { - log.Debugf("will delete %d old bundles", len(deploymentsToDelete)) + if len(deletedDeployments) > 0 { + log.Debugf("will delete %d old bundles", len(deletedDeployments)) go func() { // give clients a minute to avoid conflicts time.Sleep(bundleCleanupDelay) - for _, dep := range deploymentsToDelete { + for _, dep := range deletedDeployments { bundleFile := getBundleFile(dep) log.Debugf("removing old bundle: %v", bundleFile) safeDelete(bundleFile)
diff --git a/listener_test.go b/listener_test.go index 09b3dec..09290d8 100644 --- a/listener_test.go +++ b/listener_test.go
@@ -8,7 +8,6 @@ "net/http" - "fmt" "github.com/30x/apid-core" "github.com/apigee-labs/transicator/common" . "github.com/onsi/ginkgo" @@ -19,8 +18,39 @@ Context("ApigeeSync snapshot event", func() { + /* + * Note that the test snapshot should not be empty. + * If it's empty, you can't use deploymentsResult chan to mark the end of processing, + * so the threads generated by startupOnExistingDatabase() will mess up later tests + */ + It("should set DB to appropriate version", func(done Done) { + deploymentID := "set_version_test" + snapshot, dep := createSnapshotDeployment(deploymentID) + + db, err := data.DBVersion(snapshot.SnapshotInfo) + Expect(err).ShouldNot(HaveOccurred()) + + err = InitDB(db) + Expect(err).ShouldNot(HaveOccurred()) + + insertDeploymentToDb(dep, db) + expectedDB, err := data.DBVersion(snapshot.SnapshotInfo) + Expect(err).NotTo(HaveOccurred()) + + var listener = make(chan deploymentsResult) + addSubscriber <- listener + + apid.Events().Emit(APIGEE_SYNC_EVENT, &snapshot) + + result := <-listener + Expect(result.err).ShouldNot(HaveOccurred()) + + // DB should have been set + Expect(getDB() == expectedDB).Should(BeTrue()) + close(done) + }) + It("should process unready on existing db startup event", func(done Done) { - fmt.Println("should process unready on existing db startup event") deploymentID := "startup_test" @@ -50,7 +80,6 @@ }) It("should send deployment statuses on existing db startup event", func(done Done) { - fmt.Println("should send deployment statuses on existing db startup event") successDep := DataDeployment{ ID: "success", @@ -195,6 +224,7 @@ addSubscriber <- listener apid.Events().Emit(APIGEE_SYNC_EVENT, &event) result = <-listener + Expect(result.err).ShouldNot(HaveOccurred()) Expect(len(result.deployments)).To(Equal(0)) close(done) })