Merge pull request #4 from 30x/XAPID-1035
[XAPID-1035] 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'
);
`)