add more tests db quries, fixed bug
diff --git a/data.go b/data.go index 7c98dc2..1b3182f 100644 --- a/data.go +++ b/data.go
@@ -91,35 +91,22 @@ } // getUnreadyDeployments() returns array of resources that are not yet to be processed -// TODO make it work with new schema func (dbc *dbManager) getUnreadyBlobs() (ids []string, err error) { - // get unready blob id rows, err := dbc.getDb().Query(` - SELECT a.bean_blob_id - FROM metadata_runtime_entity_metadata as a - LEFT JOIN apid_blob_available as b - ON a.bean_blob_id = b.id - WHERE b.id IS NULL; - `) - if err != nil { - log.Errorf("DB Query for project_runtime_blob_metadata failed %v", err) - return - } - defer rows.Close() - for rows.Next() { - var id string - rows.Scan(&id) - ids = append(ids, id) - } - - // get unready resource id - rows, err = dbc.getDb().Query(` - SELECT a.resource_blob_id - FROM metadata_runtime_entity_metadata as a - LEFT JOIN apid_blob_available as b - 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 != ''); + SELECT id FROM ( + SELECT a.bean_blob_id as id + FROM metadata_runtime_entity_metadata as a + WHERE a.bean_blob_id NOT IN + (SELECT b.id FROM apid_blob_available as b) + UNION + SELECT a.resource_blob_id as id + FROM metadata_runtime_entity_metadata as a + WHERE a.resource_blob_id NOT IN + (SELECT b.id FROM apid_blob_available as b) + ) + WHERE 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 be876af..6be7da7 100644 --- a/data_test.go +++ b/data_test.go
@@ -25,14 +25,15 @@ ) const ( - readyBlobId = "gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a" - readyblobLocalFs = "/tmp/tmpapid/gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a" + testBlobLocalFsPrefix = "/tmp/tmpapid/" + readyBlobId = "gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a" + readyResourceId = "gcs:SHA-512:ddd64d03c365dde4bb175cabb7d84beeb81dae11f1e326b30c9035b74be3ecb537187bdf35568647aa1b2adb341499516ca2faf2d73b78b1b98cba038f2a9e3c" ) var ( unreadyBlobIds = map[string]bool{ "gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2": true, - "gcs:SHA-512:9938d075b8c8925e118a61c047d330a6ba852c2b3ccb2fd2c4ecf6f444482ef3a24ef2e7cd3b8a01be771135d78db370518debce244a33289c1bb3d7f325d4a2": true, + "gcs:SHA-512:0c648779da035bfe0ac21f6268049aa0ae74d9d6411dadefaec33991e55c2d66c807e06f7ef84e0947f7c7d63b8c9e97cf0684cbef9e0a86b947d73c74ae7455": true, } ) @@ -85,7 +86,7 @@ for rows.Next() { rows.Scan(&count) } - Expect(count).Should(Equal(3)) + Expect(count).Should(Equal(6)) }) It("should get empty slice if no deployments are ready", func() { @@ -96,7 +97,7 @@ It("should succefully update local FS location", func() { - err := testDbMan.updateLocalFsLocation(readyBlobId, readyblobLocalFs) + err := testDbMan.updateLocalFsLocation(testBlobId, testBlobLocalFsPrefix+testBlobId) Expect(err).Should(Succeed()) // apid_blob_available rows, err := testDbMan.getDb().Query(` @@ -113,29 +114,40 @@ It("should succefully get local FS location", func() { - err := testDbMan.updateLocalFsLocation(readyBlobId, readyblobLocalFs) + err := testDbMan.updateLocalFsLocation(testBlobId, testBlobLocalFsPrefix+testBlobId) Expect(err).Should(Succeed()) // apid_blob_available - location, err := testDbMan.getLocalFSLocation(readyBlobId) + location, err := testDbMan.getLocalFSLocation(testBlobId) Expect(err).Should(Succeed()) - Expect(location).Should(Equal(readyblobLocalFs)) + Expect(location).Should(Equal(testBlobLocalFsPrefix + testBlobId)) }) - It("should succefully get ready deployments", func() { + It("should succefully get all ready deployments", func() { - err := testDbMan.updateLocalFsLocation(readyBlobId, readyblobLocalFs) + err := testDbMan.updateLocalFsLocation(readyBlobId, testBlobLocalFsPrefix+readyBlobId) Expect(err).Should(Succeed()) + err = testDbMan.updateLocalFsLocation(readyResourceId, testBlobLocalFsPrefix+readyResourceId) + Expect(err).Should(Succeed()) + deps, err := testDbMan.getReadyDeployments() Expect(err).Should(Succeed()) - Expect(len(deps)).Should(Equal(1)) - Expect(deps[0].BlobID).Should(Equal(readyBlobId)) + Expect(len(deps)).Should(Equal(2)) + for _, dep := range deps { + Expect(dep.BlobID).Should(Equal(readyBlobId)) + if dep.BlobResourceID != "" { + Expect(dep.BlobResourceID).Should(Equal(readyResourceId)) + } + } }) - It("should succefully get unready blob ids", func() { + It("should succefully get all unready blob ids", func() { - err := testDbMan.updateLocalFsLocation(readyBlobId, readyblobLocalFs) + err := testDbMan.updateLocalFsLocation(readyBlobId, testBlobLocalFsPrefix+readyBlobId) Expect(err).Should(Succeed()) + err = testDbMan.updateLocalFsLocation(readyResourceId, testBlobLocalFsPrefix+readyResourceId) + Expect(err).Should(Succeed()) + ids, err := testDbMan.getUnreadyBlobs() Expect(err).Should(Succeed()) Expect(len(ids)).Should(Equal(2)) @@ -170,6 +182,7 @@ `) Expect(err).Should(Succeed()) + // ready blob, empty resource _, err = db.Exec(` INSERT INTO "metadata_runtime_entity_metadata" VALUES( '1dc4895e-6494-4b59-979f-5f4c89c073b4', @@ -190,9 +203,52 @@ `) Expect(err).Should(Succeed()) + // ready blob, ready resource _, err = db.Exec(` INSERT INTO "metadata_runtime_entity_metadata" VALUES( - 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', + '319963ff-217e-4ecc-8d6e-c3665e962d1e', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', + '', + 'gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a', + 'gcs:SHA-512:ddd64d03c365dde4bb175cabb7d84beeb81dae11f1e326b30c9035b74be3ecb537187bdf35568647aa1b2adb341499516ca2faf2d73b78b1b98cba038f2a9e3c', + 'ORGANIZATION', + 'Org1', + '', + '/organizations/Org1/', + '2017-06-27 03:14:45.748+00:00', + 'defaultUser', + '2017-06-27 03:15:03.557+00:00', + 'defaultUser', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8' + ); + `) + Expect(err).Should(Succeed()) + + // ready blob, unready resource + _, err = db.Exec(` + INSERT INTO "metadata_runtime_entity_metadata" VALUES( + '3af44bb7-0a74-4283-860c-3561e6c19132', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', + '', + 'gcs:SHA-512:39ca7ae89bb9468af34df8bc873748b4035210c91bcc01359c092c1d51364b5f3df06bc69a40621acfaa46791af9ea41bc0f3429a84738ba1a7c8d394859601a', + 'gcs:SHA-512:0c648779da035bfe0ac21f6268049aa0ae74d9d6411dadefaec33991e55c2d66c807e06f7ef84e0947f7c7d63b8c9e97cf0684cbef9e0a86b947d73c74ae7455', + 'ORGANIZATION', + 'Org1', + '', + '/organizations/Org1/', + '2017-06-27 03:14:45.748+00:00', + 'defaultUser', + '2017-06-27 03:15:03.557+00:00', + 'defaultUser', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8' + ); + `) + Expect(err).Should(Succeed()) + + // unready blob, empty resource + _, err = db.Exec(` + INSERT INTO "metadata_runtime_entity_metadata" VALUES( + 'd5ffd9db-4795-43eb-b645-d2a0b6c8ac6a', '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', 'gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2', @@ -210,21 +266,43 @@ `) Expect(err).Should(Succeed()) + // unready blob, ready resource _, err = db.Exec(` INSERT INTO "metadata_runtime_entity_metadata" VALUES( - '65e7c3d3-9ef7-4e41-84ae-6cc385178e9d', + '84ac8d68-b3d1-4bcc-ad0d-c6a0ed67e16c', '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', - 'gcs:SHA-512:9938d075b8c8925e118a61c047d330a6ba852c2b3ccb2fd2c4ecf6f444482ef3a24ef2e7cd3b8a01be771135d78db370518debce244a33289c1bb3d7f325d4a2', + 'gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2', + 'gcs:SHA-512:ddd64d03c365dde4bb175cabb7d84beeb81dae11f1e326b30c9035b74be3ecb537187bdf35568647aa1b2adb341499516ca2faf2d73b78b1b98cba038f2a9e3c', + 'ENVIRONMENT', + 'test', '', - 'VIRTUAL_HOST', - 'default', + '/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()) + + // unready blob, unready resource + _, err = db.Exec(` + INSERT INTO "metadata_runtime_entity_metadata" VALUES( + '3ecd351c-1173-40bf-b830-c194e5ef9038', + '73fcac6c-5d9f-44c1-8db0-333efda3e6e8', + 'ada76573-68e3-4f1a-a0f9-cbc201a97e80', + 'gcs:SHA-512:8fcc902465ccb32ceff25fa9f6fb28e3b314dbc2874c0f8add02f4e29c9e2798d344c51807aa1af56035cf09d39c800cf605d627ba65723f26d8b9c83c82d2f2', + 'gcs:SHA-512:0c648779da035bfe0ac21f6268049aa0ae74d9d6411dadefaec33991e55c2d66c807e06f7ef84e0947f7c7d63b8c9e97cf0684cbef9e0a86b947d73c74ae7455', + 'ENVIRONMENT', + 'test', '', - '/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-', + '/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' ); `)