Merge "lowered some code smells"
authorBrendan Tschaen <ctschaen@att.com>
Thu, 28 May 2020 21:29:47 +0000 (21:29 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 28 May 2020 21:29:47 +0000 (21:29 +0000)
docs/release-notes.rst
music-core/src/main/java/org/onap/music/lockingservice/cassandra/LockCleanUpDaemon.java
music-core/src/test/java/org/onap/music/datastore/MusicDataStoreTest.java
music-core/src/test/java/org/onap/music/datastore/jsonobjects/JSONObjectTest.java [new file with mode: 0644]
music-core/src/test/java/org/onap/music/datastore/jsonobjects/JsonDeleteTest.java
music-core/src/test/java/org/onap/music/datastore/jsonobjects/JsonSelectTest.java
music-core/src/test/java/org/onap/music/datastore/jsonobjects/RowIdentifierTest.java [new file with mode: 0644]
music-rest/src/test/java/org/onap/music/eelf/logging/MusicContainerFilterTest.java [new file with mode: 0644]

index e736d84..d5da2fb 100644 (file)
@@ -5,31 +5,33 @@
 
 Release Notes
 =============
-Initial Release for El Alto
+Initial Release for Frankfurt
 
-Version: 3.2.35
+Version: 3.2.40
 ---------------
 
-:Release Date: 2019-09-19
+:Release Date: 2020-05-20
 
 **New Features**
 
-- MUSIC features an 'ORM' layer. Applications directly using music will now have a streamlined API that matches the REST API for easier adoption and use.
+- MUSIC now runs on a springboot server, instead of a standalone tomcat server
 
-- MUSIC includes deadlock detection when creating and acquiring locks
+- HTTPS support for clients through AAF certificates
 
-- Continued adherence to ONAP S3P requirements
+- A background lock clean up daemon will periodically check the status of current locks, cleaning up 'stale' references.
+Clients should see a performance boost if they were previously dealing with many stale locks.
 
+- Improved error messaging to the user, allowing clients to better debug their applications
 
-**Bug Fixes**
+- Continued adherence to ONAP S3P requirements
 
-    - `MUSIC-434 <https://jira.onap.org/browse/MUSIC-434>`_ Sonar Fix : JsonDelete.java
 
-    - `MUSIC-432 <https://jira.onap.org/projects/MUSIC/issues/MUSIC-432`_ Use try-with resources to handle the resources used in the code
+**Bug Fixes**
+    - `MUSIC-573 <https://jira.onap.org/projects/MUSIC/issues/MUSIC-573`_ Pods still run as root
 
-    - `MUSIC-410 <https://jira.onap.org/projects/MUSIC/issues/MUSIC-410>`_ Use logger to log exception
+    - `MUSIC-557 <https://jira.onap.org/projects/MUSIC/issues/MUSIC-557`_ Test coverage goals met, and migrated to new sonar location
 
-    - `MUSIC-408 <https://jira.onap.org/projects/MUSIC/issues/MUSIC-408>`_ fix reduce method parameter
+    - `MUSIC-530 <https://jira.onap.org/browse/MUSIC-530>`_ Security Vulnerability in pom.xml fix
 
 
 
@@ -43,7 +45,7 @@ MUSIC code has been formally scanned during build time using NexusIQ and all Cri
 Quick Links:
 
 - `MUSIC project page <https://wiki.onap.org/display/DW/MUSIC+Project>`_
-- `MUSIC Dublin Release <https://wiki.onap.org/display/DW/MUSIC+El-Alto>`_
+- `MUSIC Frankfurt Release <https://wiki.onap.org/display/DW/MUSIC+Frankfurt>`_
 - `Passing Badge information for MUSIC <https://bestpractices.coreinfrastructure.org/en/projects/1722>`_
 - `MUSIC Architecture Page <TBD>`_
 - `Project Vulnerability Review Table for MUSIC <https://wiki.onap.org/pages/viewpage.action?pageId=64004601>`_
index 1f40f2b..623a07c 100644 (file)
@@ -56,7 +56,8 @@ public class LockCleanUpDaemon extends Thread {
             try {
                 Thread.sleep(MusicUtil.getLockDaemonSleepTimeMs());
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                logger.warn(EELFLoggerDelegate.applicationLogger, "Interrupted exception", e);
+
             }
         }
     }
@@ -108,12 +109,14 @@ public class LockCleanUpDaemon extends Thread {
     
     
     private void deleteLockIfStale(String lockTable, Row lock) throws MusicServiceException {
-        if (lock.isNull("createtime") && lock.isNull("acquiretime")) {
+        final String CREATETIME="createtime";
+        final String ACQUIRETIME="acquiretime";
+        if (lock.isNull(CREATETIME) && lock.isNull("acquiretime")) {
             return;
         }
 
-        long createTime = lock.isNull("createtime") ? 0 : Long.parseLong(lock.getString("createtime"));
-        long acquireTime = lock.isNull("acquiretime") ? 0 : Long.parseLong(lock.getString("acquiretime"));
+        long createTime = lock.isNull(CREATETIME) ? 0 : Long.parseLong(lock.getString(CREATETIME));
+        long acquireTime = lock.isNull(ACQUIRETIME) ? 0 : Long.parseLong(lock.getString(ACQUIRETIME));
         long row_access_time = Math.max(createTime, acquireTime);
         if (System.currentTimeMillis() > row_access_time + MusicUtil.getDefaultLockLeasePeriod()) {
             logger.info(EELFLoggerDelegate.applicationLogger, "Stale lock detected and being removed: " + lock);
index 4de995f..9260cd9 100644 (file)
@@ -80,10 +80,6 @@ public class MusicDataStoreTest {
         dataStore = new MusicDataStore(cluster, session);
     }
 
-    @Test
-    public void testMusicDataStore() {
-        //MusicDataStore mds = new MusicDataStore();
-    }
     
     @Test
     public void testMusicDataStoreClusterSession() {
diff --git a/music-core/src/test/java/org/onap/music/datastore/jsonobjects/JSONObjectTest.java b/music-core/src/test/java/org/onap/music/datastore/jsonobjects/JSONObjectTest.java
new file mode 100644 (file)
index 0000000..9fb549d
--- /dev/null
@@ -0,0 +1,54 @@
+
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP MUSIC
+ * ===================================================================
+ * Copyright (C) 2020 IBM Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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============================================
+ *
+ *
+ */
+package org.onap.music.datastore.jsonobjects;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class JSONObjectTest {
+
+    @Test
+    public void testGetData(){
+        JSONObject js=new JSONObject();
+        js.setData("test");
+        assertEquals(js.getData(),"test");
+
+    }
+}
index 0014f82..5b9cef8 100644 (file)
@@ -82,4 +82,32 @@ public class JsonDeleteTest {
 
     }
 
+    @Test
+    public void testGetKeyspaceName() {
+        jd.setKeyspaceName("keyspace");
+        assertEquals("keyspace",jd.getKeyspaceName());
+
+    }
+
+    @Test
+    public void testGetTableName() {
+        jd.setTableName("tablename");
+        assertEquals("tablename",jd.getTableName());
+
+    }
+
+    @Test
+    public void testGetPrimarKeyValue() {
+        jd.setPrimarKeyValue("primarykey");
+        assertEquals("primarykey",jd.getPrimarKeyValue());
+
+    }
+
+    @Test
+    public void testRowIdString() {
+        StringBuilder builder = new StringBuilder("testing");
+        jd.setRowIdString(builder);
+        assertEquals(jd.getRowIdString().toString(),builder.toString());
+    }
+
 }
index 21c022a..baada1d 100644 (file)
@@ -33,10 +33,10 @@ import java.util.Map;
 import org.junit.Test;
 
 public class JsonSelectTest {
+    JsonSelect js = new JsonSelect();
 
     @Test
     public void testGetConsistencyInfo() {
-        JsonSelect js = new JsonSelect();
         Map<String, String> mapSs = new HashMap<>();
         mapSs.put("k1", "one");
         js.setConsistencyInfo(mapSs);
@@ -45,11 +45,24 @@ public class JsonSelectTest {
 
     @Test
     public void testSerialize() throws IOException {
-        JsonSelect js = new JsonSelect();
         Map<String, String> mapSs = new HashMap<>();
         mapSs.put("Key", "Value");
         js.setConsistencyInfo(mapSs);
         js.serialize();
     }
 
+    @Test
+    public void testGetKeyspaceName() {
+        js.setKeyspaceName("testkeyspace");
+        assertEquals("testkeyspace",js.getKeyspaceName());
+
+    }
+
+    @Test
+    public void testGetTableName() {
+        js.setTableName("testkeyspace");
+        assertEquals("testkeyspace",js.getTableName());
+
+    }
+
 }
diff --git a/music-core/src/test/java/org/onap/music/datastore/jsonobjects/RowIdentifierTest.java b/music-core/src/test/java/org/onap/music/datastore/jsonobjects/RowIdentifierTest.java
new file mode 100644 (file)
index 0000000..e29f037
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP MUSIC
+ * ===================================================================
+ * Copyright (C) 2020 IBM Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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============================================
+ *
+ *
+ */
+package org.onap.music.datastore.jsonobjects;
+
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.datastore.jsonobjects.JsonUpdate;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class RowIdentifierTest {
+    String primarykey="primarykey";
+    String rowIdString="123";
+    PreparedQueryObject queryObject=new PreparedQueryObject("select * from employee");
+    JsonUpdate ju=new JsonUpdate();
+    JsonUpdate.RowIdentifier rowId= ju.new RowIdentifier(primarykey,rowIdString,queryObject);
+    @Test
+    public void testConstructor(){
+        rowId.setPrimaryKeyValue(primarykey);
+        rowId.setRowIdString(rowIdString);
+        assertEquals(rowId.getPrimaryKeyValue(),"primarykey");
+        assertEquals(rowId.getRowIdString(),"123");
+    }
+}
diff --git a/music-rest/src/test/java/org/onap/music/eelf/logging/MusicContainerFilterTest.java b/music-rest/src/test/java/org/onap/music/eelf/logging/MusicContainerFilterTest.java
new file mode 100644 (file)
index 0000000..cd7a9ca
--- /dev/null
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ *  Copyright (c) 2019 AT&T Intellectual Property
+ * ===================================================================
+ * Modifications Copyright (C) 2020 IBM.
+ * ===================================================================
+ *  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=============================================
+ * ====================================================================
+ *******************************************************************************/
+package org.onap.music.eelf.logging;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
+
+import org.springframework.stereotype.Component;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.music.main.MusicUtil;
+
+public class MusicContainerFilterTest {
+    MusicContainerFilter filter;
+
+    @Before
+    public void setup() throws IOException {
+        filter = new MusicContainerFilter();
+    }
+
+    @Test
+    public void testDoFilter() throws IOException {
+        ContainerResponseFilter fil=Mockito.mock(ContainerResponseFilter.class);
+        ContainerRequestContext req=Mockito.mock(ContainerRequestContext.class);
+        ContainerResponseContext res=Mockito.mock(ContainerResponseContext.class);
+        filter.filter(req,res);
+    }
+
+}