diff options
5 files changed, 79 insertions, 7 deletions
diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy index 5794f88ed8..ef43641ea8 100755 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy @@ -160,12 +160,12 @@ class DataRestControllerSpec extends Specification { then: 'a success response is returned' response.status == httpStatus.value() where: - scenario | xpath | exception || httpStatus - 'no dataspace' | '/x-path' | new DataspaceNotFoundException('') || HttpStatus.BAD_REQUEST - 'no anchor' | '/x-path' | new AnchorNotFoundException('', '') || HttpStatus.BAD_REQUEST - 'no data' | '/x-path' | new DataNodeNotFoundException('', '', '') || HttpStatus.NOT_FOUND - 'empty path' | '' | new IllegalStateException() || HttpStatus.NOT_IMPLEMENTED - 'already defined' | '/x-path' | new AlreadyDefinedException('', '') || HttpStatus.CONFLICT + scenario | xpath | exception || httpStatus + 'no dataspace' | '/x-path' | new DataspaceNotFoundException('') || HttpStatus.BAD_REQUEST + 'no anchor' | '/x-path' | new AnchorNotFoundException('', '') || HttpStatus.BAD_REQUEST + 'no data' | '/x-path' | new DataNodeNotFoundException('', '', '') || HttpStatus.NOT_FOUND + 'empty path' | '' | new IllegalStateException() || HttpStatus.NOT_IMPLEMENTED + 'already defined' | '/x-path' | new AlreadyDefinedException('', new Throwable()) || HttpStatus.CONFLICT } @Unroll diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml index 657701227d..921eeec173 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 0000000000..bfb0cf411c --- /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 51f7809403..231a57283c 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 c8a8b9bf1e..4ef068a25d 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' } |