aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Sakoto <bruno.sakoto@bell.ca>2021-03-23 14:42:00 -0400
committerRishi Chail <rishi.chail@est.tech>2021-04-01 08:26:26 +0000
commitc3b5a994546ca2f699d760fc4153253a11fbcce0 (patch)
treedbd1707057dc6ecc377774119d370a51208ed7e8
parent9d76fb656e6b8afe9c22a608b1f8815121caa375 (diff)
Fix to store data for 2 anchors using same model
This change deletes the database index on fragment table for dataspace and xpath. Issue-ID: CPS-300 Signed-off-by: Bruno Sakoto <bruno.sakoto@bell.ca> Change-Id: I586cc38f7ed00a16f751ed4dbe3b514226c62657 (cherry picked from commit ff4832e4ed2a5b6aaf9093f7d229c27c5d5b9aa5)
-rw-r--r--cps-ri/src/main/resources/changelog/changelog-master.yaml20
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml35
-rw-r--r--cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceServiceSpec.groovy17
-rw-r--r--cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsPersistenceSpecBase.groovy2
4 files changed, 73 insertions, 1 deletions
diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml
index 657701227..921eeec17 100644
--- a/cps-ri/src/main/resources/changelog/changelog-master.yaml
+++ b/cps-ri/src/main/resources/changelog/changelog-master.yaml
@@ -1,3 +1,19 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021 Bell Canada.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+
databaseChangeLog:
- include:
file: changelog/db/changes/01-createCPSTables.yaml
@@ -8,4 +24,6 @@ databaseChangeLog:
- include:
file: changelog/db/changes/04-loadData-anchor.yaml
- include:
- file: changelog/db/changes/05-loadData-fragment.yaml \ No newline at end of file
+ file: changelog/db/changes/05-loadData-fragment.yaml
+ - include:
+ file: changelog/db/changes/06-delete-not-required-fragment-index.yaml
diff --git a/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml b/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml
new file mode 100644
index 000000000..bfb0cf411
--- /dev/null
+++ b/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml
@@ -0,0 +1,35 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021 Bell Canada.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+
+databaseChangeLog:
+ - changeSet:
+ id: 6
+ author: cps
+ comment: Drop unique index for dataspace and xpath on fragment table
+ changes:
+ - dropIndex:
+ indexName: UQ_FRAGMENT_XPATH
+ tableName: fragment
+ rollback:
+ - createIndex:
+ columns:
+ - column:
+ name: xpath
+ - column:
+ name: dataspace_id
+ indexName: UQ_FRAGMENT_XPATH
+ tableName: fragment
+ unique: true
diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceServiceSpec.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceServiceSpec.groovy
index 51f780940..231a57283 100644
--- a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceServiceSpec.groovy
+++ b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceServiceSpec.groovy
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
* Modifications Copyright (C) 2021 Pantheon.tech
+ * Modifications Copyright (C) 2021 Bell Canada.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -91,6 +92,22 @@ class CpsDataPersistenceServiceSpec extends CpsPersistenceSpecBase {
grandchildFragment.xpath == grandChildXpath
}
+ @Sql([CLEAR_DATA, SET_DATA])
+ def 'Store data node for multiple anchors using the same schema.'() {
+ def xpath = "/parent-new"
+ given: 'a fragment is stored for an anchor'
+ objectUnderTest.storeDataNode(DATASPACE_NAME, ANCHOR_NAME1, createDataNodeTree(xpath))
+ when: 'another fragment is stored for an other anchor, using the same schema set'
+ objectUnderTest.storeDataNode(DATASPACE_NAME, ANCHOR_NAME3, createDataNodeTree(xpath))
+ then: 'both fragments can be retrieved by their xpath'
+ def fragment1 = getFragmentByXpath(DATASPACE_NAME, ANCHOR_NAME1, xpath)
+ fragment1.anchor.name == ANCHOR_NAME1
+ fragment1.xpath == xpath
+ def fragment2 = getFragmentByXpath(DATASPACE_NAME, ANCHOR_NAME3, xpath)
+ fragment2.anchor.name == ANCHOR_NAME3
+ fragment2.xpath == xpath
+ }
+
@Unroll
@Sql([CLEAR_DATA, SET_DATA])
def 'Store datanode error scenario: #scenario.'() {
diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsPersistenceSpecBase.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsPersistenceSpecBase.groovy
index c8a8b9bf1..4ef068a25 100644
--- a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsPersistenceSpecBase.groovy
+++ b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsPersistenceSpecBase.groovy
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation
* Modifications Copyright (C) 2021 Pantheon.tech
+ * Modifications Copyright (C) 2021 Bell Canada.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
@@ -57,6 +58,7 @@ class CpsPersistenceSpecBase extends Specification {
static final String SCHEMA_SET_NAME2 = 'SCHEMA-SET-002'
static final String ANCHOR_NAME1 = 'ANCHOR-001'
static final String ANCHOR_NAME2 = 'ANCHOR-002'
+ static final String ANCHOR_NAME3 = 'ANCHOR-003'
static final String ANCHOR_FOR_DATA_NODES_WITH_LEAVES = 'ANCHOR-003'
}