add unit tests for data.go, fix bugs
diff --git a/data.go b/data.go index 0413232..81affe0 100644 --- a/data.go +++ b/data.go
@@ -119,8 +119,8 @@ SELECT a.resource_blob_id FROM metadata_runtime_entity_metadata as a LEFT JOIN edgex_blob_available as b - ON a.bean_blob_id = b.id - WHERE b.id IS NULL; + ON a.resource_blob_id = b.id + WHERE (b.id IS NULL AND a.resource_blob_id IS NOT NULL AND a.resource_blob_id != ''); `) if err != nil { log.Errorf("DB Query for project_runtime_blob_metadata failed %v", err)
diff --git a/data_test.go b/data_test.go index e57e56f..8a26c0d 100644 --- a/data_test.go +++ b/data_test.go
@@ -24,6 +24,18 @@ "time" ) +const ( + readyBlobId = "gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a" + readyblobLocalFs = "/tmp/tmpapid/gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a" +) + +var ( + unreadyBlobIds = map[string]bool{ + "gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2": true, + "gcs:SHA-512:9938d075b8c8925e118a61c047d330a6ba852c2b3ccb2fd2c4ecf6f444482ef3a24ef2e7cd3b8a01be771135d78db370518debce244a33289c1bb3d7f325d4a2": true, + } +) + var _ = Describe("data", func() { var testCount int var testDbMan *dbManager @@ -36,6 +48,7 @@ testDbMan.setDbVersion("test" + strconv.Itoa(testCount)) initTestDb(testDbMan.getDb()) testDbMan.initDb() + insertTestAvailableBlobTable(testDbMan.getDb()) time.Sleep(100 * time.Millisecond) }) @@ -56,7 +69,7 @@ for rows.Next() { rows.Scan(&count) } - Expect(count).Should(Equal(0)) + Expect(count).Should(Equal(1)) // metadata_runtime_entity_metadata rows, err = testDbMan.getDb().Query(` @@ -67,7 +80,26 @@ for rows.Next() { rows.Scan(&count) } - Expect(count).Should(Equal(1)) + Expect(count).Should(Equal(3)) + }) + + It("should succefully get ready deployments", func() { + + deps, err := testDbMan.getReadyDeployments() + Expect(err).Should(Succeed()) + Expect(len(deps)).Should(Equal(1)) + Expect(deps[0].BlobID).Should(Equal(readyBlobId)) + Expect(deps[0].BlobFSLocation).Should(Equal(readyblobLocalFs)) + }) + + It("should succefully get unready blob ids", func() { + + ids, err := testDbMan.getUnreadyBlobs() + Expect(err).Should(Succeed()) + Expect(len(ids)).Should(Equal(2)) + for _, id := range ids { + Expect(unreadyBlobIds[id]).Should(BeTrue()) + } }) }) @@ -116,4 +148,52 @@ `) Expect(err).Should(Succeed()) + _, err = db.Exec(` + INSERT INTO "metadata_runtime_entity_metadata" VALUES( + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', + 'gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2', + '', + 'ENVIRONMENT', + 'test', + '', + '/organizations/Org1//environments/test/', + '2017-06-27 03:14:46.018+00:00', + 'defaultUser', + '2017-06-27 03:14:46.018+00:00', + 'defaultUser', + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80' + ); + `) + Expect(err).Should(Succeed()) + + _, err = db.Exec(` + INSERT INTO "metadata_runtime_entity_metadata" VALUES( + '65e7c3d3-9ef7-4e41-84ae-6cc385178e9d', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', + 'gcs:SHA-512:9938d075b8c8925e118a61c047d330a6ba852c2b3ccb2fd2c4ecf6f444482ef3a24ef2e7cd3b8a01be771135d78db370518debce244a33289c1bb3d7f325d4a2', + '', + 'VIRTUAL_HOST', + 'default', + '', + '/organizations/Org1/environments/test/virtualhosts/default', + '2017-06-27 03:48:18.284+00:00', + '-NA-', + '2017-06-27 03:48:18.284+00:00', + '-NA-', + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80' + ); + `) + Expect(err).Should(Succeed()) +} + +func insertTestAvailableBlobTable(db apid.DB) { + stmt, err := db.Prepare(` + INSERT INTO "edgex_blob_available" VALUES(?, ?); + `) + Expect(err).Should(Succeed()) + _, err = stmt.Exec(readyBlobId, readyblobLocalFs) + Expect(err).Should(Succeed()) }