aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/music/datastore/MusicDataStore.java57
-rw-r--r--src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java4
-rw-r--r--src/main/java/org/onap/music/eelf/logging/format/AppMessages.java177
-rw-r--r--src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java106
-rw-r--r--src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java37
-rw-r--r--src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java44
-rw-r--r--src/main/java/org/onap/music/lockingservice/MusicLockState.java7
-rw-r--r--src/main/java/org/onap/music/lockingservice/MusicLockingService.java39
-rw-r--r--src/main/java/org/onap/music/lockingservice/ProtocolSupport.java30
-rw-r--r--src/main/java/org/onap/music/lockingservice/ZNodeName.java8
-rw-r--r--src/main/java/org/onap/music/lockingservice/ZkStatelessLockService.java70
-rwxr-xr-xsrc/main/java/org/onap/music/main/CachingUtil.java79
-rw-r--r--src/main/java/org/onap/music/main/MusicCore.java114
-rwxr-xr-xsrc/main/java/org/onap/music/main/MusicUtil.java872
-rwxr-xr-xsrc/main/java/org/onap/music/main/PropertiesListener.java4
-rw-r--r--src/main/java/org/onap/music/main/ResultType.java3
-rwxr-xr-xsrc/main/java/org/onap/music/rest/RestMusicAdminAPI.java20
-rwxr-xr-xsrc/main/java/org/onap/music/rest/RestMusicDataAPI.java228
-rw-r--r--src/test/java/org/onap/music/benchmarks/MicroBenchMarkRestClient.java73
-rw-r--r--src/test/java/org/onap/music/benchmarks/MicroBenchMarks.java440
-rw-r--r--src/test/java/org/onap/music/e2eTests/MusicConnector.java80
-rw-r--r--src/test/java/org/onap/music/e2eTests/TestMusicE2E.java478
-rw-r--r--src/test/java/org/onap/music/unittests/CassandraCQL.java3
-rw-r--r--src/test/java/org/onap/music/unittests/MusicDataStoreTest.java214
-rw-r--r--src/test/java/org/onap/music/unittests/MusicUtilTest.java20
-rw-r--r--src/test/java/org/onap/music/unittests/TestMusicCore.java71
-rw-r--r--src/test/java/org/onap/music/unittests/TestMusicCoreIntegration.java176
-rw-r--r--src/test/java/org/onap/music/unittests/TestRestMusicData.java450
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/AAFResponseTest.java54
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java86
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java86
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java72
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java53
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonOnboardTest.java78
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java41
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java99
-rw-r--r--src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java103
37 files changed, 2740 insertions, 1836 deletions
diff --git a/src/main/java/org/onap/music/datastore/MusicDataStore.java b/src/main/java/org/onap/music/datastore/MusicDataStore.java
index e1ae5b08..c64a96b3 100644
--- a/src/main/java/org/onap/music/datastore/MusicDataStore.java
+++ b/src/main/java/org/onap/music/datastore/MusicDataStore.java
@@ -30,6 +30,9 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicQueryException;
import org.onap.music.exceptions.MusicServiceException;
import org.onap.music.main.MusicUtil;
@@ -46,6 +49,7 @@ import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.TableMetadata;
import com.datastax.driver.core.exceptions.AlreadyExistsException;
+import com.datastax.driver.core.exceptions.InvalidQueryException;
import com.datastax.driver.core.exceptions.NoHostAvailableException;
/**
@@ -65,6 +69,13 @@ public class MusicDataStore {
public void setSession(Session session) {
this.session = session;
}
+
+ /**
+ * @param session
+ */
+ public Session getSession() {
+ return session;
+ }
/**
* @param cluster
@@ -124,7 +135,9 @@ public class MusicDataStore {
}
}
} catch (SocketException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.CONNCECTIVITYERROR, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
+ }catch(Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
}
return allPossibleIps;
}
@@ -152,7 +165,7 @@ public class MusicDataStore {
break;
} catch (NoHostAvailableException e) {
address = it.next();
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.HOSTUNAVAILABLE, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
}
}
}
@@ -179,7 +192,7 @@ public class MusicDataStore {
try {
session = cluster.connect();
} catch (Exception ex) {
- logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.CASSANDRACONNECTIVITY, ErrorSeverity.ERROR, ErrorTypes.SERVICEUNAVAILABLE);
throw new MusicServiceException(
"Error while connecting to Cassandra cluster.. " + ex.getMessage());
}
@@ -245,7 +258,7 @@ public class MusicDataStore {
}
}
- public boolean doesRowSatisfyCondition(Row row, Map<String, Object> condition) {
+ public boolean doesRowSatisfyCondition(Row row, Map<String, Object> condition) throws Exception {
ColumnDefinitions colInfo = row.getColumnDefinitions();
for (Map.Entry<String, Object> entry : condition.entrySet()) {
@@ -301,8 +314,7 @@ public class MusicDataStore {
boolean result = false;
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- logger.error(EELFLoggerDelegate.errorLogger,
- "Error while processing prepared query object");
+ logger.error(EELFLoggerDelegate.errorLogger, queryObject.getQuery(),AppMessages.QUERYERROR, ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ queryObject.getQuery() + "]");
}
@@ -310,7 +322,14 @@ public class MusicDataStore {
"In preprared Execute Put: the actual insert query:"
+ queryObject.getQuery() + "; the values"
+ queryObject.getValues());
- PreparedStatement preparedInsert = session.prepare(queryObject.getQuery());
+ PreparedStatement preparedInsert = null;
+ try {
+ preparedInsert = session.prepare(queryObject.getQuery());
+ } catch(InvalidQueryException iqe) {
+ logger.error(EELFLoggerDelegate.errorLogger, iqe.getMessage());
+ throw new MusicQueryException(iqe.getMessage());
+ }
+
try {
if (consistency.equalsIgnoreCase(MusicUtil.CRITICAL)) {
logger.info(EELFLoggerDelegate.applicationLogger, "Executing critical put query");
@@ -325,13 +344,12 @@ public class MusicDataStore {
}
catch (AlreadyExistsException ae) {
- logger.error(EELFLoggerDelegate.errorLogger, "Executing Session Failure for Request = "
- + "[" + queryObject.getQuery() + "]" + " Reason = " + ae.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ae.getMessage(),AppMessages.SESSIONFAILED+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ae.getMessage());
}
catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "Executing Session Failure for Request = "
- + "[" + queryObject.getQuery() + "]" + " Reason = " + e.getMessage());
- throw new MusicServiceException("Executing Session Failure for Request = " + "["
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.SESSIONFAILED+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Executing Session Failure for Request = " + "["
+ queryObject.getQuery() + "]" + " Reason = " + e.getMessage());
}
@@ -351,7 +369,8 @@ public class MusicDataStore {
throws MusicServiceException, MusicQueryException {
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ logger.error(EELFLoggerDelegate.errorLogger, "",AppMessages.QUERYERROR+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ queryObject.getQuery() + "]");
}
logger.info(EELFLoggerDelegate.applicationLogger,
@@ -363,8 +382,8 @@ public class MusicDataStore {
results = session.execute(preparedEventualGet.bind(queryObject.getValues().toArray()));
} catch (Exception ex) {
- logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage());
- throw new MusicServiceException(ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.UNKNOWNERROR+ "[" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ex.getMessage());
}
return results;
}
@@ -381,8 +400,8 @@ public class MusicDataStore {
public ResultSet executeCriticalGet(PreparedQueryObject queryObject)
throws MusicServiceException, MusicQueryException {
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- logger.error(EELFLoggerDelegate.errorLogger, "Error processing Prepared Query Object");
- throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ logger.error(EELFLoggerDelegate.errorLogger, "",AppMessages.QUERYERROR+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Error processing Prepared Query Object for the request = " + "["
+ queryObject.getQuery() + "]");
}
logger.info(EELFLoggerDelegate.applicationLogger,
@@ -393,8 +412,8 @@ public class MusicDataStore {
try {
results = session.execute(preparedEventualGet.bind(queryObject.getValues().toArray()));
} catch (Exception ex) {
- logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage());
- throw new MusicServiceException(ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.UNKNOWNERROR+ "[" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ex.getMessage());
}
return results;
diff --git a/src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java b/src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java
index 22c0104b..b7a9ec23 100644
--- a/src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java
+++ b/src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java
@@ -35,7 +35,8 @@ public class JsonInsert implements Serializable {
private String keyspaceName;
private String tableName;
private Map<String, Object> values;
- String ttl, timestamp;
+ private String ttl;
+ private String timestamp;
private Map<String, Object> row_specification;
private Map<String, String> consistencyInfo;
@@ -109,7 +110,6 @@ public class JsonInsert implements Serializable {
out = new ObjectOutputStream(bos);
out.writeObject(this);
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
return bos.toByteArray();
diff --git a/src/main/java/org/onap/music/eelf/logging/format/AppMessages.java b/src/main/java/org/onap/music/eelf/logging/format/AppMessages.java
new file mode 100644
index 00000000..f265eae3
--- /dev/null
+++ b/src/main/java/org/onap/music/eelf/logging/format/AppMessages.java
@@ -0,0 +1,177 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.format;
+
+/**
+ * @author inam
+ *
+ */
+public enum AppMessages {
+
+
+
+ /*
+ * 100-199 Security/Permission Related - Authentication problems
+ * [ERR100E] Missing Information
+ * [ERR101E] Authentication error occured
+ *
+ * 200-299 Availability/Timeout Related/IO - connectivity error - connection timeout
+ * [ERR200E] Connectivity
+ * [ERR201E] Host not available
+ * [ERR202E] Error while connecting to Cassandra cluster
+ * [ERR203E] IO Error has occured
+ * [ERR204E] Execution Interrupted
+ * [ERR205E] Session Expired
+ * [ERR206E] Cache not authenticated
+ *
+ *
+ * 300-399 Data Access/Integrity Related
+ *
+ * 400-499 - Cassandra Query Related
+ * [ERR400E] Error while processing prepared query object
+ * [ERR401E] Executing Session Failure for Request
+ * [ERR402E] Ill formed queryObject for the request
+ * [ERR403E] Error processing Prepared Query Object
+ *
+ * 500-599 - Zookeepr/Locking Related
+ * [ERR500E] Invalid lock
+ * [ERR501E] Locking Error has occured
+ * [ERR502E] Zookeeper error has occured
+ * [ERR503E] Failed to aquire lock store handle
+ * [ERR504E] Failed to create Lock Reference
+ * [ERR505E] Lock does not exist
+ * [ERR506E] Failed to aquire lock
+ * [ERR507E] Lock not aquired
+ * [ERR508E] Lock state not set
+ * [ERR509E] Lock not destroyed
+ * [ERR510E] Lock not released
+ * [ERR511E] Lock not deleted
+ * [ERR512E] Failed to get ZK Lock Handle
+ *
+ *
+ * 600 - 699 - Music Service Errors
+ * [ERR600E] Error initializing the cache
+ *
+ * 700-799 Schema Interface Type/Validation - received Pay-load checksum is
+ * invalid - received JSON is not valid
+ *
+ * 800-899 Business/Flow Processing Related - check out to service is not
+ * allowed - Roll-back is done - failed to generate heat file
+ *
+ *
+ * 900-999 Unknown Errors - Unexpected exception
+ * [ERR900E] Unexpected error occured
+ * [ERR901E] Number format exception
+ *
+ *
+ * 1000-1099 Reserved - do not use
+ *
+ */
+
+
+
+
+ MISSINGINFO("[ERR100E]", "Missing Information ","Details: NA", "Please check application credentials and headers"),
+ AUTHENTICATIONERROR("[ERR101E]", "Authentication error occured ","Details: NA", "Please verify application credentials"),
+ CONNCECTIVITYERROR("[ERR200E]"," Connectivity error","Details: NA ","Please check connectivity to external resources"),
+ HOSTUNAVAILABLE("[ERR201E]","Host not available","Details: NA","Please verify the host details"),
+ CASSANDRACONNECTIVITY("[ERR202E]","Error while connecting to Cassandra cluster",""," Please check cassandra cluster details"),
+ IOERROR("[ERR203E]","IO Error has occured","","Please check IO"),
+ EXECUTIONINTERRUPTED("[ERR204E]"," Execution Interrupted","",""),
+ SESSIONEXPIRED("[ERR205E]"," Session Expired","","Session has expired."),
+ CACHEAUTHENTICATION("[ERR206E]","Cache not authenticated",""," Cache not authenticated"),
+
+ QUERYERROR("[ERR400E]","Error while processing prepared query object",""," Please verify the query"),
+ SESSIONFAILED("[ERR401E]","Executing Session Failure for Request","","Please verify the session and request"),
+
+ INVALIDLOCK("[ERR500E]"," Invalid lock or acquire failed",""," Lock is not valid to aquire"),
+ LOCKINGERROR("[ERR501E]"," Locking Error has occured",""," Locking Error has occured"),
+ KEEPERERROR("[ERR502E]"," Zookeeper error has occured","","Please check zookeeper details"),
+ LOCKHANDLE("[ERR503E]","Failed to aquire lock store handle",""," Failed to aquire lock store handle"),
+ CREATELOCK("[ERR504E]","Failed to aquire lock store handle ","","Failed to aquire lock store handle "),
+ LOCKSTATE("[ERR508E]"," Lock state not set",""," Lock state not set"),
+ DESTROYLOCK("[ERR509E]"," Lock not destroyed",""," Lock not destroyed"),
+ RELEASELOCK("[ERR510E]"," Lock not released",""," Lock not released"),
+ DELTELOCK("[ERR511E]",""," Lock not deleted "," Lock not deleted "),
+ CACHEERROR("[ERR600E]"," Error initializing the cache",""," Error initializing the cache"),
+
+ UNKNOWNERROR("[ERR900E]"," Unexpected error occured",""," Please check logs for details");
+
+
+
+ ErrorTypes eType;
+ ErrorSeverity alarmSeverity;
+ ErrorSeverity errorSeverity;
+ String errorCode;
+ String errorDescription;
+ String details;
+ String resolution;
+
+
+ AppMessages(String errorCode, String errorDescription, String details,String resolution) {
+
+ this.errorCode = errorCode;
+ this.errorDescription = errorDescription;
+ this.details = details;
+ this.resolution = resolution;
+ }
+
+
+
+
+ AppMessages(ErrorTypes eType, ErrorSeverity alarmSeverity,
+ ErrorSeverity errorSeverity, String errorCode, String errorDescription, String details,
+ String resolution) {
+
+ this.eType = eType;
+ this.alarmSeverity = alarmSeverity;
+ this.errorSeverity = errorSeverity;
+ this.errorCode = errorCode;
+ this.errorDescription = errorDescription;
+ this.details = details;
+ this.resolution = resolution;
+ }
+
+ public String getDetails() {
+ return this.details;
+ }
+
+ public String getResolution() {
+ return this.resolution;
+ }
+
+ public String getErrorCode() {
+ return this.errorCode;
+ }
+
+ public String getErrorDescription() {
+ return this.errorDescription;
+ }
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java b/src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java
new file mode 100644
index 00000000..b18c1771
--- /dev/null
+++ b/src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java
@@ -0,0 +1,106 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.format;
+
+
+
+/**
+ * @author inam
+ *
+ */
+public enum ErrorCodes {
+
+
+ /*
+ * 100-199 Security/Permission Related - Authentication problems
+ * [ERR100E] Missing Information
+ * [ERR101E] Authentication error occured
+ *
+ * 200-299 Availability/Timeout Related/IO - connectivity error - connection timeout
+ * [ERR200E] Connectivity
+ * [ERR201E] Host not available
+ * [ERR202E] Error while connecting to Cassandra cluster
+ * [ERR203E] IO Error has occured
+ * [ERR204E] Execution Interrupted
+ * [ERR205E] Session Expired
+ * [ERR206E] Cache not authenticated
+ *
+ *
+ * 300-399 Data Access/Integrity Related
+ *
+ * 400-499 - Cassandra Query Related
+ * [ERR400E] Error while processing prepared query object
+ * [ERR401E] Executing Session Failure for Request
+ * [ERR402E] Ill formed queryObject for the request
+ * [ERR403E] Error processing Prepared Query Object
+ *
+ * 500-599 - Zookeepr/Locking Related
+ * [ERR500E] Invalid lock
+ * [ERR501E] Locking Error has occured
+ * [ERR502E] Zookeeper error has occured
+ * [ERR503E] Failed to aquire lock store handle
+ * [ERR504E] Failed to create Lock Reference
+ * [ERR505E] Lock does not exist
+ * [ERR506E] Failed to aquire lock
+ * [ERR507E] Lock not aquired
+ * [ERR508E] Lock state not set
+ * [ERR509E] Lock not destroyed
+ * [ERR510E] Lock not released
+ * [ERR511E] Lock not deleted
+ * [ERR512E] Failed to get ZK Lock Handle
+ *
+ *
+ * 600 - 699 - Music Service Errors
+ * [ERR600E] Error initializing the cache
+ *
+ * 700-799 Schema Interface Type/Validation - received Pay-load checksum is
+ * invalid - received JSON is not valid
+ *
+ * 800-899 Business/Flow Processing Related - check out to service is not
+ * allowed - Roll-back is done - failed to generate heat file
+ *
+ *
+ * 900-999 Unknown Errors - Unexpected exception
+ * [ERR900E] Unexpected error occured
+ * [ERR901E] Number format exception
+ *
+ *
+ * 1000-1099 Reserved - do not use
+ *
+ */
+
+ /*SUCCESS("Success"), FAILURE("Failure");
+
+ private String result;
+
+ ResultType(String result) {
+ this.result = result;
+ }
+
+ public String getResult() {
+ return result;
+ }
+*/
+
+
+
+}
diff --git a/src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java b/src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java
new file mode 100644
index 00000000..cda5dd31
--- /dev/null
+++ b/src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java
@@ -0,0 +1,37 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.format;
+
+/**
+ * @author inam
+ *
+ */
+public enum ErrorSeverity {
+ INFO,
+ WARN,
+ ERROR,
+ FATAL,
+ CRITICAL,
+ MAJOR,
+ MINOR,
+ NONE,
+}
diff --git a/src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java b/src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java
new file mode 100644
index 00000000..2536f4a4
--- /dev/null
+++ b/src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java
@@ -0,0 +1,44 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.format;
+
+import com.att.eelf.i18n.EELFResolvableErrorEnum;
+
+/**
+ * @author inam
+ *
+ */
+public enum ErrorTypes implements EELFResolvableErrorEnum {
+
+
+ CONNECTIONERROR,
+ SESSIONEXPIRED,
+ AUTHENTICATIONERROR,
+ SERVICEUNAVAILABLE,
+ QUERYERROR,
+ DATAERROR,
+ GENERALSERVICEERROR,
+ MUSICSERVICEERROR,
+ LOCKINGERROR,
+ UNKNOWN,
+
+}
diff --git a/src/main/java/org/onap/music/lockingservice/MusicLockState.java b/src/main/java/org/onap/music/lockingservice/MusicLockState.java
index 10cdc0e7..5d051be4 100644
--- a/src/main/java/org/onap/music/lockingservice/MusicLockState.java
+++ b/src/main/java/org/onap/music/lockingservice/MusicLockState.java
@@ -30,6 +30,9 @@ import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
// the state variable that will be stored in zookeeper, capturing the transitions of
public class MusicLockState implements Serializable {
@@ -104,7 +107,7 @@ public class MusicLockState implements Serializable {
out = new ObjectOutputStream(bos);
out.writeObject(this);
} catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.IOERROR, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
}
return bos.toByteArray();
}
@@ -117,7 +120,7 @@ public class MusicLockState implements Serializable {
in = new ObjectInputStream(bis);
o = in.readObject();
} catch (ClassNotFoundException | IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
}
return (MusicLockState) o;
}
diff --git a/src/main/java/org/onap/music/lockingservice/MusicLockingService.java b/src/main/java/org/onap/music/lockingservice/MusicLockingService.java
index 9b21f596..2fc8a151 100644
--- a/src/main/java/org/onap/music/lockingservice/MusicLockingService.java
+++ b/src/main/java/org/onap/music/lockingservice/MusicLockingService.java
@@ -28,6 +28,9 @@ import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicLockingException;
import org.onap.music.exceptions.MusicServiceException;
import org.onap.music.main.MusicUtil;
@@ -35,7 +38,7 @@ import org.onap.music.main.MusicUtil;
public class MusicLockingService implements Watcher {
-
+
private static final int SESSION_TIMEOUT = 180000;
ZkStatelessLockService zkLockHandle = null;
private CountDownLatch connectedSignal = new CountDownLatch(1);
@@ -48,10 +51,10 @@ public class MusicLockingService implements Watcher {
connectedSignal.await();
zkLockHandle = new ZkStatelessLockService(zk);
} catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.IOERROR, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
throw new MusicServiceException("IO Error has occured" + e.getMessage());
} catch (InterruptedException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
throw new MusicServiceException("Exception Occured " + e.getMessage());
}
}
@@ -65,13 +68,17 @@ public class MusicLockingService implements Watcher {
ZooKeeper zk = new ZooKeeper(lockServer, SESSION_TIMEOUT, this);
connectedSignal.await();
zkLockHandle = new ZkStatelessLockService(zk);
- } catch (IOException | InterruptedException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
- }
+ } catch (IOException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.IOERROR, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
+ }catch( InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch(Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }
}
public void createLockaIfItDoesNotExist(String lockName) {
- if (zkLockHandle.checkIfLockExists(lockName) == false) {
+ if (!zkLockHandle.checkIfLockExists(lockName)) {
String lockHolder = null;
MusicLockState ml = new MusicLockState(MusicLockState.LockStatus.UNLOCKED, lockHolder);
byte[] data = ml.serialize();
@@ -90,12 +97,14 @@ public class MusicLockingService implements Watcher {
try{
data = zkLockHandle.getNodeData(lockName);
}catch (Exception ex){
- logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
if(data !=null)
return MusicLockState.deSerialize(data);
- else
- throw new MusicLockingException("Invalid lock or acquire failed");
+ else {
+ logger.error(EELFLoggerDelegate.errorLogger,"",AppMessages.INVALIDLOCK, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ throw new MusicLockingException("Invalid lock or acquire failed");
+ }
}
public String createLockId(String lockName) {
@@ -109,9 +118,13 @@ public class MusicLockingService implements Watcher {
String lockName = "/" + st.nextToken("/");
try {
return zkLockHandle.lock(lockName, lockId);
- } catch (KeeperException | InterruptedException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
- }
+ } catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.LOCKINGERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch( InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch(Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }
return false;
}
diff --git a/src/main/java/org/onap/music/lockingservice/ProtocolSupport.java b/src/main/java/org/onap/music/lockingservice/ProtocolSupport.java
index df4d6ad6..4082b3b8 100644
--- a/src/main/java/org/onap/music/lockingservice/ProtocolSupport.java
+++ b/src/main/java/org/onap/music/lockingservice/ProtocolSupport.java
@@ -21,8 +21,6 @@
*/
package org.onap.music.lockingservice;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
@@ -30,6 +28,9 @@ import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Stat;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.lockingservice.ZooKeeperOperation;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -41,7 +42,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*
*/
class ProtocolSupport {
- private EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(ProtocolSupport.class);
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ProtocolSupport.class);
protected ZooKeeper zookeeper;
private AtomicBoolean closed = new AtomicBoolean(false);
@@ -49,10 +50,6 @@ class ProtocolSupport {
private int retryCount = 10;
private List<ACL> acl = ZooDefs.Ids.OPEN_ACL_UNSAFE;
- // public ProtocolSupport(ZooKeeper zookeeper) {
- // this.zookeeper = zookeeper;
- // }
-
/**
* Closes this strategy and releases any ZooKeeper resources; but keeps the ZooKeeper instance
* open
@@ -111,7 +108,9 @@ class ProtocolSupport {
/**
* Allow derived classes to perform some custom closing operations to release resources
*/
- protected void doClose() {}
+ protected void doClose() {
+ throw new UnsupportedOperationException();
+ }
/**
@@ -129,14 +128,15 @@ class ProtocolSupport {
try {
return operation.execute();
} catch (KeeperException.SessionExpiredException e) {
- LOG.debug("Session expired for: " + zookeeper + " so reconnecting due to: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.SESSIONEXPIRED+" for: " + zookeeper + " so reconnecting due to: " + e, ErrorSeverity.ERROR, ErrorTypes.SESSIONEXPIRED);
throw e;
} catch (KeeperException.ConnectionLossException e) {
if (exception == null) {
exception = e;
}
- LOG.debug("Attempt " + i + " failed with connection loss so "
- + "attempting to reconnect: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.CONNCECTIVITYERROR, ErrorSeverity.ERROR, ErrorTypes.SESSIONEXPIRED);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Attempt " + i + " failed with connection loss so attempting to reconnect: " + e);
+
retryDelay(i);
}
}
@@ -174,9 +174,9 @@ class ProtocolSupport {
}
});
} catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger,"Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
} catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger,"Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
}
@@ -199,7 +199,9 @@ class ProtocolSupport {
try {
Thread.sleep(attemptCount * retryDelay);
} catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger,"Failed to sleep: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Thread failed to sleep: " + e);
+ Thread.currentThread().interrupt();
}
}
}
diff --git a/src/main/java/org/onap/music/lockingservice/ZNodeName.java b/src/main/java/org/onap/music/lockingservice/ZNodeName.java
index eefc81a9..0c190f14 100644
--- a/src/main/java/org/onap/music/lockingservice/ZNodeName.java
+++ b/src/main/java/org/onap/music/lockingservice/ZNodeName.java
@@ -22,6 +22,8 @@
package org.onap.music.lockingservice;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
/**
* Represents an ephemeral znode name which has an ordered sequence number and can be sorted in
@@ -32,7 +34,7 @@ class ZNodeName implements Comparable<ZNodeName> {
private final String name;
private String prefix;
private int sequence = -1;
- private EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(ZNodeName.class);
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ZNodeName.class);
public ZNodeName(String name) {
if (name == null) {
@@ -48,9 +50,9 @@ class ZNodeName implements Comparable<ZNodeName> {
// If an exception occurred we misdetected a sequence suffix,
// so return -1.
} catch (NumberFormatException e) {
- LOG.error(EELFLoggerDelegate.errorLogger,"Number format exception for " + idx, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Number format exception "+idx, ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
} catch (ArrayIndexOutOfBoundsException e) {
- LOG.error(EELFLoggerDelegate.errorLogger,"Array out of bounds for " + idx, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Array out of bounds for "+idx, ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
}
}
}
diff --git a/src/main/java/org/onap/music/lockingservice/ZkStatelessLockService.java b/src/main/java/org/onap/music/lockingservice/ZkStatelessLockService.java
index bd8ddfe3..51efafbf 100644
--- a/src/main/java/org/onap/music/lockingservice/ZkStatelessLockService.java
+++ b/src/main/java/org/onap/music/lockingservice/ZkStatelessLockService.java
@@ -28,6 +28,9 @@ import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Stat;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
/**
* A <a href="package.html">protocol to implement an exclusive write lock or to elect a leader</a>.
@@ -44,7 +47,7 @@ public class ZkStatelessLockService extends ProtocolSupport {
zookeeper = zk;
}
- private static EELFLoggerDelegate LOG =
+ private static EELFLoggerDelegate logger =
EELFLoggerDelegate.getLogger(ZkStatelessLockService.class);
protected void createLock(final String path, final byte[] data) {
@@ -56,18 +59,18 @@ public class ZkStatelessLockService extends ProtocolSupport {
return true;
}
});
- } catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
- } catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
}
public void close() {
try {
zookeeper.close();
- } catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
}
@@ -80,10 +83,10 @@ public class ZkStatelessLockService extends ProtocolSupport {
return true;
}
});
- } catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
- } catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
}
@@ -95,8 +98,10 @@ public class ZkStatelessLockService extends ProtocolSupport {
else
return null;
- } catch (KeeperException | InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
return null;
}
@@ -108,8 +113,10 @@ public class ZkStatelessLockService extends ProtocolSupport {
if (stat != null) {
result = true;
}
- } catch (KeeperException | InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
return result;
}
@@ -123,8 +130,10 @@ public class ZkStatelessLockService extends ProtocolSupport {
LockZooKeeperOperation zop = new LockZooKeeperOperation(dir);
try {
retryOperation(zop);
- } catch (KeeperException | InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ }catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
+ }catch (KeeperException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
}
return zop.getId();
}
@@ -161,13 +170,13 @@ public class ZkStatelessLockService extends ProtocolSupport {
};
zopdel.execute();
} catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
// set that we have been interrupted.
Thread.currentThread().interrupt();
} catch (KeeperException.NoNodeException e) {
// do nothing
} catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
throw (RuntimeException) new RuntimeException(e.getMessage()).initCause(e);
}
}
@@ -187,13 +196,13 @@ public class ZkStatelessLockService extends ProtocolSupport {
}
return sortedNames.first().getName();
} catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
// set that we have been interrupted.
Thread.currentThread().interrupt();
} catch (KeeperException.NoNodeException e) {
// do nothing
} catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
throw (RuntimeException) new RuntimeException(e.getMessage()).initCause(e);
}
}
@@ -216,13 +225,14 @@ public class ZkStatelessLockService extends ProtocolSupport {
};
zopdel.execute();
} catch (InterruptedException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.EXECUTIONINTERRUPTED, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
// set that we have been interrupted.
Thread.currentThread().interrupt();
} catch (KeeperException.NoNodeException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
// do nothing
} catch (KeeperException e) {
- LOG.error(EELFLoggerDelegate.errorLogger, "Caught: " + e, e);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.KEEPERERROR, ErrorSeverity.ERROR, ErrorTypes.LOCKINGERROR);
throw (RuntimeException) new RuntimeException(e.getMessage()).initCause(e);
}
}
@@ -272,8 +282,8 @@ public class ZkStatelessLockService extends ProtocolSupport {
id = zookeeper.create(dir + "/" + prefix, data, getAcl(),
CreateMode.PERSISTENT_SEQUENTIAL);
- if (LOG.isDebugEnabled()) {
- LOG.debug("Created id: " + id);
+ if (logger.isDebugEnabled()) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "Created id: " + id);
}
if (id != null)
break;
@@ -281,10 +291,12 @@ public class ZkStatelessLockService extends ProtocolSupport {
if (id != null) {
List<String> names = zookeeper.getChildren(dir, false);
if (names.isEmpty()) {
- LOG.info(EELFLoggerDelegate.applicationLogger, "No children in: " + dir
+ logger.info(EELFLoggerDelegate.applicationLogger, "No children in: " + dir
+ " when we've just " + "created one! Lets recreate it...");
// lets force the recreation of the id
id = null;
+ return Boolean.FALSE;
+
} else {
// lets sort them explicitly (though they do seem to come back in order
// ususally :)
@@ -300,14 +312,14 @@ public class ZkStatelessLockService extends ProtocolSupport {
if (!lessThanMe.isEmpty()) {
ZNodeName lastChildName = lessThanMe.last();
String lastChildId = lastChildName.getName();
- if (LOG.isDebugEnabled()) {
- LOG.debug("watching less than me node: " + lastChildId);
+ if (logger.isDebugEnabled()) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "watching less than me node: " + lastChildId);
}
Stat stat = zookeeper.exists(lastChildId, false);
if (stat != null) {
return Boolean.FALSE;
} else {
- LOG.info(EELFLoggerDelegate.applicationLogger,
+ logger.info(EELFLoggerDelegate.applicationLogger,
"Could not find the" + " stats for less than me: "
+ lastChildName.getName());
}
diff --git a/src/main/java/org/onap/music/main/CachingUtil.java b/src/main/java/org/onap/music/main/CachingUtil.java
index 4b2b4824..aee3abbf 100755
--- a/src/main/java/org/onap/music/main/CachingUtil.java
+++ b/src/main/java/org/onap/music/main/CachingUtil.java
@@ -36,6 +36,9 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.onap.music.datastore.PreparedQueryObject;
import org.onap.music.datastore.jsonobjects.AAFResponse;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicServiceException;
import com.att.eelf.configuration.EELFLogger;
@@ -83,8 +86,8 @@ public class CachingUtil implements Runnable {
try {
pQuery.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), false));
} catch (Exception e1) {
+ logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(),AppMessages.CACHEERROR, ErrorSeverity.CRITICAL, ErrorTypes.GENERALSERVICEERROR);
e1.printStackTrace();
- logger.error(EELFLoggerDelegate.errorLogger,"Exception is "+ e1.getMessage() + "during initalizeAafCache");
}
ResultSet rs = MusicCore.get(pQuery);
Iterator<Row> it = rs.iterator();
@@ -109,11 +112,9 @@ public class CachingUtil implements Runnable {
+ nameSpace);
}
} catch (Exception e) {
- // TODO Auto-generated catch block
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.INFO, ErrorTypes.GENERALSERVICEERROR);
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Something at AAF was changed for ns: " + nameSpace+" So not updating Cache for the namespace. ");
e.printStackTrace();
- logger.error("Something at AAF was changed for ns: " + nameSpace
- + ". So not updating Cache for the namespace. ");
- logger.error("Exception is " + e.getMessage());
}
}
@@ -121,11 +122,11 @@ public class CachingUtil implements Runnable {
@Override
public void run() {
- logger.debug("Scheduled task invoked. Refreshing Cache...");
+ logger.info(EELFLoggerDelegate.applicationLogger,"Scheduled task invoked. Refreshing Cache...");
try {
initializeAafCache();
} catch (MusicServiceException e) {
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.INFO, ErrorTypes.GENERALSERVICEERROR);
}
}
@@ -134,9 +135,9 @@ public class CachingUtil implements Runnable {
if (aafCache.get(nameSpace) != null) {
if (keySpace != null && !musicCache.get(nameSpace).equals(keySpace)) {
- logger.debug("Create new application for the same namespace.");
+ logger.info(EELFLoggerDelegate.applicationLogger,"Create new application for the same namespace.");
} else if (aafCache.get(nameSpace).get(userId).equals(password)) {
- logger.debug("Authenticated with cache value..");
+ logger.info(EELFLoggerDelegate.applicationLogger,"Authenticated with cache value..");
// reset invalid attempts to 0
userAttempts.put(nameSpace, 0);
return true;
@@ -154,10 +155,11 @@ public class CachingUtil implements Runnable {
logger.info(EELFLoggerDelegate.applicationLogger,"Resetting failed attempt.");
userAttempts.put(nameSpace, 0);
} else {
+ logger.info(EELFLoggerDelegate.applicationLogger,"No more attempts allowed. Please wait for atleast 2 min.");
throw new Exception("No more attempts allowed. Please wait for atleast 2 min.");
}
}
- logger.error(EELFLoggerDelegate.errorLogger,"Cache not authenticated..");
+ logger.error(EELFLoggerDelegate.errorLogger,"",AppMessages.CACHEAUTHENTICATION,ErrorSeverity.WARN, ErrorTypes.GENERALSERVICEERROR);
logger.info(EELFLoggerDelegate.applicationLogger,"Check AAF again...");
}
}
@@ -178,6 +180,7 @@ public class CachingUtil implements Runnable {
private static AAFResponse triggerAAF(String nameSpace, String userId, String password)
throws Exception {
if (MusicUtil.getAafEndpointUrl() == null) {
+ logger.error(EELFLoggerDelegate.errorLogger,"",AppMessages.UNKNOWNERROR,ErrorSeverity.WARN, ErrorTypes.GENERALSERVICEERROR);
throw new Exception("AAF endpoint is not set. Please specify in the properties file.");
}
Client client = Client.create();
@@ -213,6 +216,7 @@ public class CachingUtil implements Runnable {
response.bufferEntity();
String x = response.getEntity(String.class);
AAFResponse responseObj = new ObjectMapper().readValue(x, AAFResponse.class);
+
return responseObj;
}
@@ -235,7 +239,7 @@ public class CachingUtil implements Runnable {
musicCache.put(keyspace, uuid);
} catch (Exception e) {
String msg = e.getMessage();
- logger.error("Exception occured during uuid retrieval from DB." + e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.QUERYERROR,ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
resultMap.put("Exception", "Unauthorized operation. Check AID and Keyspace. "
+ "Exception from MUSIC is: "
+ (msg == null ? "Keyspace is new so no AID should be passed in Header."
@@ -273,8 +277,8 @@ public class CachingUtil implements Runnable {
uuid = rs.getUUID("uuid").toString();
musicLockCache.put(nameSpace, uuid);
} catch (Exception e) {
- logger.error("Exception occured during uuid retrieval from DB." + e.getMessage());
- resultMap.put("Exception", "Unauthorized operation. Check AID and Namespace. ");
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.QUERYERROR,ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ resultMap.put("Exception", "Unauthorized operation. Check AID and Namespace. ");
return resultMap;
}
if (!musicLockCache.get(nameSpace).toString().equals(aid)) {
@@ -295,7 +299,7 @@ public class CachingUtil implements Runnable {
public static void updateMusicCache(String aid, String keyspace) {
- logger.info("Updating musicCache for keyspace " + keyspace + " with aid " + aid);
+ logger.info(EELFLoggerDelegate.applicationLogger,"Updating musicCache for keyspace " + keyspace + " with aid " + aid);
musicCache.put(keyspace, aid);
}
@@ -316,12 +320,11 @@ public class CachingUtil implements Runnable {
isAAF = String.valueOf(rs.getBool("is_aaf"));
appNameCache.put(namespace, isAAF);
} catch (Exception e) {
- logger.error("Exception occured during uuid retrieval from DB." + e.getMessage());
- e.printStackTrace();
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.QUERYERROR,ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ e.printStackTrace();
}
}
-
return Boolean.valueOf(isAAF);
}
@@ -354,7 +357,7 @@ public class CachingUtil implements Runnable {
try {
appName = rs.getString("application_name");
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Exception occured during uuid retrieval from DB."+e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.QUERYERROR, ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
e.printStackTrace();
}
return appName;
@@ -378,31 +381,49 @@ public class CachingUtil implements Runnable {
}
- public static Map<String, Object> verifyOnboarding(String ns, String userId, String password)
- throws Exception {
+ public static Map<String, Object> verifyOnboarding(String ns, String userId, String password) {
Map<String, Object> resultMap = new HashMap<>();
if (ns == null || userId == null || password == null) {
- logger.error(EELFLoggerDelegate.errorLogger,"One or more required headers is missing. userId: "+userId+" :: password: "+password);
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.MISSINGINFO ,ErrorSeverity.WARN, ErrorTypes.AUTHENTICATIONERROR);
+ logger.error(EELFLoggerDelegate.errorLogger,"One or more required headers is missing. userId: "+userId+" :: password: "+password);
resultMap.put("Exception",
"One or more required headers appName(ns), userId, password is missing. Please check.");
return resultMap;
}
PreparedQueryObject queryObject = new PreparedQueryObject();
queryObject.appendQueryString(
- "select * from admin.keyspace_master where application_name = ? and username = ? and password = ? allow filtering");
- queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), ns));
- queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), userId));
- queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), password));
- Row rs = MusicCore.get(queryObject).one();
+ "select * from admin.keyspace_master where application_name = ? allow filtering");
+ try {
+ queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), ns));
+ } catch(Exception e) {
+ resultMap.put("Exception",
+ "Unable to process input data. Invalid input data type. Please check ns, userId and password values. "+e.getMessage());
+ return resultMap;
+ }
+ Row rs = null;
+ try {
+ rs = MusicCore.get(queryObject).one();
+ } catch (MusicServiceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ resultMap.put("Exception", "Unable to process operation. Error is "+e.getMessage());
+ return resultMap;
+ }
if (rs == null) {
- logger.error(EELFLoggerDelegate.errorLogger,"Namespace, UserId and password doesn't match. namespace: "+ns+" and userId: "+userId);
-
- resultMap.put("Exception", "Namespace, UserId and password doesn't match. namespace: "+ns+" and userId: "+userId);
+ logger.error(EELFLoggerDelegate.errorLogger,"Application is not onboarded. Please contact admin.");
+ resultMap.put("Exception", "Application is not onboarded. Please contact admin.");
} else {
+ if(!(rs.getString("username").equals(userId)) && !(rs.getString("password").equals("password"))) {
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.AUTHENTICATIONERROR, ErrorSeverity.WARN, ErrorTypes.AUTHENTICATIONERROR);
+ logger.error(EELFLoggerDelegate.errorLogger,"Namespace, UserId and password doesn't match. namespace: "+ns+" and userId: "+userId);
+ resultMap.put("Exception", "Namespace, UserId and password doesn't match. namespace: "+ns+" and userId: "+userId);
+ return resultMap;
+ }
boolean is_aaf = rs.getBool("is_aaf");
String keyspace = rs.getString("keyspace_name");
if (!is_aaf) {
if (!keyspace.equals(MusicUtil.DEFAULTKEYSPACENAME)) {
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.MISSINGINFO ,ErrorSeverity.WARN, ErrorTypes.DATAERROR);
logger.error(EELFLoggerDelegate.errorLogger,"Non AAF applications are allowed to have only one keyspace per application.");
resultMap.put("Exception",
"Non AAF applications are allowed to have only one keyspace per application.");
diff --git a/src/main/java/org/onap/music/main/MusicCore.java b/src/main/java/org/onap/music/main/MusicCore.java
index 3d5cf4e5..73a6ee55 100644
--- a/src/main/java/org/onap/music/main/MusicCore.java
+++ b/src/main/java/org/onap/music/main/MusicCore.java
@@ -31,7 +31,9 @@ import org.onap.music.datastore.MusicDataStore;
import org.onap.music.datastore.PreparedQueryObject;
import org.onap.music.datastore.jsonobjects.JsonKeySpace;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
-// import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicLockingException;
import org.onap.music.exceptions.MusicQueryException;
import org.onap.music.exceptions.MusicServiceException;
@@ -66,7 +68,7 @@ public class MusicCore {
this.selectQueryForTheRow = selectQueryForTheRow;
}
- public boolean testCondition() {
+ public boolean testCondition() throws Exception {
// first generate the row
ResultSet results = quorumGet(selectQueryForTheRow);
Row row = results.one();
@@ -83,7 +85,7 @@ public class MusicCore {
try {
mLockHandle = new MusicLockingService();
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to aquire Locl store handle" + e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.LOCKHANDLE,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
throw new MusicLockingException("Failed to aquire Locl store handle " + e);
}
}
@@ -111,12 +113,24 @@ public class MusicCore {
/**
*
* @return
+ * @throws MusicServiceException
*/
- public static MusicDataStore getDSHandle() {
+ public static MusicDataStore getDSHandle() throws MusicServiceException {
logger.info(EELFLoggerDelegate.applicationLogger,"Acquiring data store handle");
long start = System.currentTimeMillis();
if (mDstoreHandle == null) {
- mDstoreHandle = new MusicDataStore();
+ // Quick Fix - Best to put this into every call to getDSHandle?
+ if (! MusicUtil.getMyCassaHost().equals("localhost") ) {
+ mDstoreHandle = new MusicDataStore(MusicUtil.getMyCassaHost());
+ } else {
+ mDstoreHandle = new MusicDataStore();
+ }
+ }
+ if(mDstoreHandle.getSession() == null) {
+ String message = "Connection to Cassandra has not been enstablished."
+ + " Please check connection properites and reboot.";
+ logger.info(EELFLoggerDelegate.applicationLogger, message);
+ throw new MusicServiceException(message);
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to acquire data store handle:" + (end - start) + " ms");
@@ -130,7 +144,8 @@ public class MusicCore {
try {
lockId = getLockingServiceHandle().createLockId("/" + lockName);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to create Lock Reference " + lockName);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.CREATELOCK+lockName,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
+
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to create lock reference:" + (end - start) + " ms");
@@ -169,7 +184,7 @@ public class MusicCore {
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to get lock state:" + (end - start) + " ms");
return mls;
} catch (NullPointerException | MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"No lock object exists as of now.." + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.INVALIDLOCK,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
return null;
}
@@ -194,14 +209,18 @@ public class MusicCore {
}
}
} else
- logger.debug("There is no lock state object for " + key);
-
+ logger.error(EELFLoggerDelegate.errorLogger,key, AppMessages.INVALIDLOCK,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
+
/*
* call the traditional acquire lock now and if the result returned is true, set the
* begin time-stamp and lease period
*/
if (acquireLock(key, lockId).getResult() == ResultType.SUCCESS) {
mls = getMusicLockState(key);// get latest state
+ if ( mls == null ) {
+ logger.info(EELFLoggerDelegate.applicationLogger,"Music Lock State is null");
+ return new ReturnType(ResultType.FAILURE, "Could not acquire lock, Lock State is null");
+ }
if (mls.getLeaseStartTime() == -1) {// set it again only if it is not set already
mls.setLeaseStartTime(System.currentTimeMillis());
mls.setLeasePeriod(leasePeriod);
@@ -217,7 +236,8 @@ public class MusicCore {
}
} catch (Exception e) {
StringWriter sw = new StringWriter();
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), "[ERR506E] Failed to aquire lock ",ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
+
String exceptionAsString = sw.toString();
return new ReturnType(ResultType.FAILURE,
"Exception thrown in acquireLockWithLease:\n" + exceptionAsString);
@@ -234,9 +254,9 @@ public class MusicCore {
try {
result = getLockingServiceHandle().isMyTurn(lockId);
} catch (MusicLockingException e2) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to aquireLock lockId " + lockId + " " + e2);
+ logger.error(EELFLoggerDelegate.errorLogger,AppMessages.INVALIDLOCK + lockId + " " + e2);
}
- if (result == false) {
+ if (!result) {
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: Not your turn, someone else has the lock");
try {
if (!getLockingServiceHandle().lockIdExists(lockId)) {
@@ -244,7 +264,7 @@ public class MusicCore {
return new ReturnType(ResultType.FAILURE, "Lockid doesn't exist");
}
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to check if lockid exists - lockId " + lockId + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.INVALIDLOCK+lockId,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: returning failure");
return new ReturnType(ResultType.FAILURE, "Not your turn, someone else has the lock");
@@ -253,7 +273,7 @@ public class MusicCore {
// this is for backward compatibility where locks could also be acquired on just
// keyspaces or tables.
- if (isTableOrKeySpaceLock(key) == true) {
+ if (isTableOrKeySpaceLock(key)) {
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: A table or keyspace lock so no need to perform sync...so returning true");
return new ReturnType(ResultType.SUCCESS, "A table or keyspace lock so no need to perform sync...so returning true");
}
@@ -270,7 +290,7 @@ public class MusicCore {
return new ReturnType(ResultType.SUCCESS, "You already have the lock!");
}
} catch (NullPointerException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"In acquire lock:No one has tried to acquire the lock yet..");
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.INVALIDLOCK+lockId,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
// change status to "being locked". This state transition is necessary to ensure syncing
@@ -286,14 +306,18 @@ public class MusicCore {
try {
getLockingServiceHandle().setLockState(key, newMls);
} catch (MusicLockingException e1) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to set Lock state " + key + " " + e1);
+ logger.error(EELFLoggerDelegate.errorLogger,e1.getMessage(), AppMessages.LOCKSTATE+key,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: Set lock state to being_locked");
// do syncing if this was a forced lock release
if (needToSyncQuorum) {
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: Since there was a forcible release, need to sync quorum!");
- syncQuorum(key);
+ try {
+ syncQuorum(key);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,"Failed to set Lock state " + e);
+ }
}
// change status to locked
@@ -303,7 +327,7 @@ public class MusicCore {
try {
getLockingServiceHandle().setLockState(key, newMls);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to set Lock state " + key + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.LOCKSTATE+key,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
logger.info(EELFLoggerDelegate.applicationLogger,"In acquire lock: Set lock state to locked and assigned current lock ref "
+ lockId + " as holder");
@@ -325,7 +349,7 @@ public class MusicCore {
}
- private static void syncQuorum(String key) {
+ private static void syncQuorum(String key) throws Exception {
logger.info(EELFLoggerDelegate.applicationLogger,"Performing sync operation---");
String[] splitString = key.split("\\.");
String keyspaceName = splitString[0];
@@ -346,8 +370,6 @@ public class MusicCore {
selectQuery.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName + " WHERE "
+ primaryKeyName + "= ?" + ";");
selectQuery.addValue(cqlFormattedPrimaryKeyValue);
- // String selectQuery = "SELECT * FROM "+keyspaceName+"."+tableName+ " WHERE
- // "+primaryKeyName+"="+cqlFormattedPrimaryKeyValue+";";
ResultSet results = null;
try {
results = getDSHandle().executeCriticalGet(selectQuery);
@@ -356,7 +378,6 @@ public class MusicCore {
ColumnDefinitions colInfo = row.getColumnDefinitions();
int totalColumns = colInfo.size();
int counter = 1;
- // String fieldValueString="";
StringBuilder fieldValueString = new StringBuilder("");
for (Definition definition : colInfo) {
String colName = definition.getName();
@@ -365,7 +386,6 @@ public class MusicCore {
DataType colType = definition.getType();
Object valueObj = getDSHandle().getColValue(row, colName, colType);
Object valueString = MusicUtil.convertToActualDataType(colType, valueObj);
- // fieldValueString = fieldValueString+ colName+"="+valueString;
fieldValueString.append(colName + " = ?");
updateQuery.addValue(valueString);
if (counter != (totalColumns - 1))
@@ -375,12 +395,10 @@ public class MusicCore {
updateQuery.appendQueryString("UPDATE " + keyspaceName + "." + tableName + " SET "
+ fieldValueString + " WHERE " + primaryKeyName + "= ? " + ";");
updateQuery.addValue(cqlFormattedPrimaryKeyValue);
- // String updateQuery = "UPDATE "+keyspaceName+"."+tableName+" SET "+fieldValueString+"
- // WHERE "+primaryKeyName+"="+cqlFormattedPrimaryKeyValue+";";
getDSHandle().executePut(updateQuery, "critical");
} catch (MusicServiceException | MusicQueryException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to execute update query " + updateQuery + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.QUERYERROR +""+updateQuery ,ErrorSeverity.MAJOR, ErrorTypes.QUERYERROR);
}
}
@@ -397,7 +415,8 @@ public class MusicCore {
try {
results = getDSHandle().executeCriticalGet(query);
} catch (MusicServiceException | MusicQueryException e) {
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.UNKNOWNERROR ,ErrorSeverity.MAJOR, ErrorTypes.GENERALSERVICEERROR);
+
}
return results;
@@ -407,8 +426,9 @@ public class MusicCore {
*
* @param results
* @return
+ * @throws MusicServiceException
*/
- public static Map<String, HashMap<String, Object>> marshallResults(ResultSet results) {
+ public static Map<String, HashMap<String, Object>> marshallResults(ResultSet results) throws MusicServiceException {
return getDSHandle().marshalData(results);
}
@@ -422,7 +442,7 @@ public class MusicCore {
try {
return getLockingServiceHandle().whoseTurnIsIt("/" + lockName) + "";
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed whoseTurnIsIt " + lockName + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.LOCKINGERROR+lockName ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
return null;
@@ -444,7 +464,7 @@ public class MusicCore {
try {
getLockingServiceHandle().unlockAndDeleteId(lockId);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to Destroy Lock Ref " + lockId + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.DESTROYLOCK+lockId ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to destroy lock reference:" + (end - start) + " ms");
@@ -455,7 +475,7 @@ public class MusicCore {
try {
getLockingServiceHandle().unlockAndDeleteId(lockId);
} catch (MusicLockingException e1) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to release Lock " + lockId + " " + e1);
+ logger.error(EELFLoggerDelegate.errorLogger,e1.getMessage(), AppMessages.RELEASELOCK+lockId ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
String lockName = getLockNameFromId(lockId);
MusicLockState mls;
@@ -472,7 +492,7 @@ public class MusicCore {
try {
getLockingServiceHandle().setLockState(lockName, mls);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to release Lock " + lockName + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.RELEASELOCK+lockId ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to release lock:" + (end - start) + " ms");
@@ -493,7 +513,7 @@ public class MusicCore {
try {
getLockingServiceHandle().deleteLock("/" + lockName);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to Delete Lock " + lockName + " " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.DELTELOCK+lockName ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken to delete lock:" + (end - start) + " ms");
@@ -506,8 +526,9 @@ public class MusicCore {
* @param keyspace
* @param tablename
* @return
+ * @throws MusicServiceException
*/
- public static TableMetadata returnColumnMetadata(String keyspace, String tablename) {
+ public static TableMetadata returnColumnMetadata(String keyspace, String tablename) throws MusicServiceException {
return getDSHandle().returnColumnMetadata(keyspace, tablename);
}
@@ -520,7 +541,7 @@ public class MusicCore {
try {
getLockingServiceHandle().getzkLockHandle().createNode(nodeName);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to get ZK Lock Handle " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), "[ERR512E] Failed to get ZK Lock Handle " ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
}
@@ -535,7 +556,7 @@ public class MusicCore {
try {
getLockingServiceHandle().getzkLockHandle().setNodeData(nodeName, data);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to get ZK Lock Handle " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), "[ERR512E] Failed to get ZK Lock Handle " ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
logger.info(EELFLoggerDelegate.applicationLogger,"Performed zookeeper write to " + nodeName);
long end = System.currentTimeMillis();
@@ -553,7 +574,7 @@ public class MusicCore {
try {
data = getLockingServiceHandle().getzkLockHandle().getNodeData(nodeName);
} catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,"Failed to get ZK Lock Handle " + e);
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), "[ERR512E] Failed to get ZK Lock Handle " ,ErrorSeverity.CRITICAL, ErrorTypes.LOCKINGERROR);
}
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken for the actual zk put:" + (end - start) + " ms");
@@ -578,6 +599,7 @@ public class MusicCore {
try {
result = getDSHandle().executePut(queryObject, MusicUtil.EVENTUAL);
} catch (MusicServiceException | MusicQueryException ex) {
+ logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage(), "[ERR512E] Failed to get ZK Lock Handle " ,ErrorSeverity.WARN, ErrorTypes.MUSICSERVICEERROR);
logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage() + " " + ex.getCause() + " " + ex);
}
if (result) {
@@ -604,10 +626,16 @@ public class MusicCore {
MusicLockState mls = getLockingServiceHandle()
.getLockState(keyspaceName + "." + tableName + "." + primaryKey);
if (mls.getLockHolder().equals(lockId) == true) {
- if (conditionInfo != null)// check if condition is true
+ if (conditionInfo != null)
+ try {
if (conditionInfo.testCondition() == false)
return new ReturnType(ResultType.FAILURE,
"Lock acquired but the condition is not true");
+ } catch (Exception e) {
+ return new ReturnType(ResultType.FAILURE,
+ "Exception thrown while doing the critical put, check sanctity of the row/conditions:\n"
+ + e.getMessage());
+ }
getDSHandle().executePut(queryObject, MusicUtil.CRITICAL);
long end = System.currentTimeMillis();
logger.info(EELFLoggerDelegate.applicationLogger,"Time taken for the critical put:" + (end - start) + " ms");
@@ -642,7 +670,7 @@ public class MusicCore {
try {
result = getDSHandle().executePut(queryObject, consistency);
} catch (MusicQueryException | MusicServiceException ex) {
- logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage(), AppMessages.UNKNOWNERROR ,ErrorSeverity.WARN, ErrorTypes.MUSICSERVICEERROR);
throw new MusicServiceException(ex.getMessage());
}
return result;
@@ -688,7 +716,7 @@ public class MusicCore {
} else
throw new MusicServiceException("YOU DO NOT HAVE THE LOCK");
} catch (MusicQueryException | MusicServiceException | MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.UNKNOWNERROR ,ErrorSeverity.WARN, ErrorTypes.MUSICSERVICEERROR);
}
return results;
}
@@ -866,6 +894,7 @@ public class MusicCore {
return resultMap;
}
if (aid == null && (userId == null || password == null)) {
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.MISSINGINFO ,ErrorSeverity.WARN, ErrorTypes.DATAERROR);
logger.error(EELFLoggerDelegate.errorLogger,"One or more required headers is missing. userId: " + userId
+ " :: password: " + password);
resultMap.put("Exception",
@@ -878,11 +907,12 @@ public class MusicCore {
try {
isValid = CachingUtil.authenticateAAFUser(nameSpace, userId, password, keyspace);
} catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.AUTHENTICATIONERROR ,ErrorSeverity.WARN, ErrorTypes.AUTHENTICATIONERROR);
logger.error(EELFLoggerDelegate.errorLogger,"Got exception while AAF authentication for namespace " + nameSpace);
resultMap.put("Exception", e.getMessage());
}
if (!isValid) {
- logger.error(EELFLoggerDelegate.errorLogger,"User not authenticated with AAF.");
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.AUTHENTICATIONERROR ,ErrorSeverity.WARN, ErrorTypes.AUTHENTICATIONERROR);
resultMap.put("Exception", "User not authenticated...");
}
if (!resultMap.isEmpty())
@@ -921,7 +951,7 @@ public class MusicCore {
pQuery.addValue(MusicUtil.convertToActualDataType(DataType.text(), password));
pQuery.addValue(MusicUtil.convertToActualDataType(DataType.text(), userId));
pQuery.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), isAAF));
- CachingUtil.updateMusicCache(uuid, keyspace);
+ //CachingUtil.updateMusicCache(uuid, keyspace);
MusicCore.eventualPut(pQuery);
resultMap.put("aid", uuid);
}
diff --git a/src/main/java/org/onap/music/main/MusicUtil.java b/src/main/java/org/onap/music/main/MusicUtil.java
index a31e33f9..0f77614e 100755
--- a/src/main/java/org/onap/music/main/MusicUtil.java
+++ b/src/main/java/org/onap/music/main/MusicUtil.java
@@ -45,436 +45,444 @@ import com.datastax.driver.core.DataType;
*
*/
public class MusicUtil {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
-
- private static int myId = 0;
- private static ArrayList<String> allIds = new ArrayList<String>();
- private static String publicIp = "";
- private static ArrayList<String> allPublicIps = new ArrayList<String>();
- private static String myZkHost = "localhost";
- private static String myCassaHost = "localhost";
- private static String defaultMusicIp = "localhost";
- private static boolean debug = true;
- private static String version = "2.3.0";
- private static String musicRestIp = "localhost";
- private static String musicPropertiesFilePath = "/opt/app/music/etc/music.properties";
- private static long defaultLockLeasePeriod = 6000;
- private static final String[] propKeys = new String[] { "zookeeper.host", "cassandra.host", "music.ip", "debug",
- "version", "music.rest.ip", "music.properties", "lock.lease.period", "id", "all.ids", "public.ip",
- "all.pubic.ips", "cassandra.user", "cassandra.password", "aaf.endpoint.url" };
-
- public static final String ATOMIC = "atomic";
- public static final String EVENTUAL = "eventual";
- public static final String CRITICAL = "critical";
- public static final String ATOMICDELETELOCK = "atomic_delete_lock";
-
- public static final String DEFAULTKEYSPACENAME = "TBD";
- private static String cassName = "cassandra";
- private static String cassPwd;
- private static String aafEndpointUrl = null;
-
- /**
- * @return the cassName
- */
- public static String getCassName() {
- return cassName;
- }
-
- /**
- * @return the cassPwd
- */
- public static String getCassPwd() {
- return cassPwd;
- }
-
- /**
- * @return the aafEndpointUrl
- */
- public static String getAafEndpointUrl() {
- return aafEndpointUrl;
- }
-
- /**
- *
- * @param aafEndpointUrl
- */
- public static void setAafEndpointUrl(String aafEndpointUrl) {
- MusicUtil.aafEndpointUrl = aafEndpointUrl;
- }
-
- /**
- *
- * @return
- */
- public static int getMyId() {
- return myId;
- }
-
- /**
- *
- * @param myId
- */
- public static void setMyId(int myId) {
- MusicUtil.myId = myId;
- }
-
- /**
- *
- * @return
- */
- public static ArrayList<String> getAllIds() {
- return allIds;
- }
-
- /**
- *
- * @param allIds
- */
- public static void setAllIds(List<String> allIds) {
- MusicUtil.allIds = (ArrayList<String>) allIds;
- }
-
- /**
- *
- * @return
- */
- public static String getPublicIp() {
- return publicIp;
- }
-
- /**
- *
- * @param publicIp
- */
- public static void setPublicIp(String publicIp) {
- MusicUtil.publicIp = publicIp;
- }
-
- /**
- *
- * @return
- */
- public static ArrayList<String> getAllPublicIps() {
- return allPublicIps;
- }
-
- /**
- *
- * @param allPublicIps
- */
- public static void setAllPublicIps(List<String> allPublicIps) {
- MusicUtil.allPublicIps = (ArrayList<String>) allPublicIps;
- }
-
- /**
- * Returns An array of property names that should be in the Properties
- * files.
- *
- * @return
- */
- public static String[] getPropkeys() {
- return propKeys;
- }
-
- /**
- * Get MusicRestIp - default = localhost property file value - music.rest.ip
- *
- * @return
- */
- public static String getMusicRestIp() {
- return musicRestIp;
- }
-
- /**
- * Set MusicRestIp
- *
- * @param musicRestIp
- */
- public static void setMusicRestIp(String musicRestIp) {
- MusicUtil.musicRestIp = musicRestIp;
- }
-
- /**
- * Get MusicPropertiesFilePath - Default = /opt/music/music.properties
- * property file value - music.properties
- *
- * @return
- */
- public static String getMusicPropertiesFilePath() {
- return musicPropertiesFilePath;
- }
-
- /**
- * Set MusicPropertiesFilePath
- *
- * @param musicPropertiesFilePath
- */
- public static void setMusicPropertiesFilePath(String musicPropertiesFilePath) {
- MusicUtil.musicPropertiesFilePath = musicPropertiesFilePath;
- }
-
- /**
- * Get DefaultLockLeasePeriod - Default = 6000 property file value -
- * lock.lease.period
- *
- * @return
- */
- public static long getDefaultLockLeasePeriod() {
- return defaultLockLeasePeriod;
- }
-
- /**
- * Set DefaultLockLeasePeriod
- *
- * @param defaultLockLeasePeriod
- */
- public static void setDefaultLockLeasePeriod(long defaultLockLeasePeriod) {
- MusicUtil.defaultLockLeasePeriod = defaultLockLeasePeriod;
- }
-
- /**
- * Set Debug
- *
- * @param debug
- */
- public static void setDebug(boolean debug) {
- MusicUtil.debug = debug;
- }
-
- /**
- * Is Debug - Default = true property file value - debug
- *
- * @return
- */
- public static boolean isDebug() {
- return debug;
- }
-
- /**
- * Set Version
- *
- * @param version
- */
- public static void setVersion(String version) {
- MusicUtil.version = version;
- }
-
- /**
- * Return the version property file value - version
- *
- * @return
- */
- public static String getVersion() {
- return version;
- }
-
- /**
- * Get MyZkHost - Zookeeper Hostname - Default = localhost property file
- * value - zookeeper.host
- *
- * @return
- */
- public static String getMyZkHost() {
- return myZkHost;
- }
-
- /**
- * Set MyZkHost - Zookeeper Hostname
- *
- * @param myZkHost
- */
- public static void setMyZkHost(String myZkHost) {
- MusicUtil.myZkHost = myZkHost;
- }
-
- /**
- * Get MyCassHost - Cassandra Hostname - Default = localhost property file
- * value - cassandra.host
- *
- * @return
- */
- public static String getMyCassaHost() {
- return myCassaHost;
- }
-
- /**
- * Set MyCassHost - Cassandra Hostname
- *
- * @param myCassaHost
- */
- public static void setMyCassaHost(String myCassaHost) {
- MusicUtil.myCassaHost = myCassaHost;
- }
-
- /**
- * Get DefaultMusicIp - Default = localhost property file value - music.ip
- *
- * @return
- */
- public static String getDefaultMusicIp() {
- return defaultMusicIp;
- }
-
- /**
- * Set DefaultMusicIp
- *
- * @param defaultMusicIp
- */
- public static void setDefaultMusicIp(String defaultMusicIp) {
- MusicUtil.defaultMusicIp = defaultMusicIp;
- }
-
- /**
- *
- * @return
- */
- public static String getTestType() {
- String testType = "";
- try {
- Scanner fileScanner = new Scanner(new File(""));
- testType = fileScanner.next();// ignore the my id line
- String batchSize = fileScanner.next();// ignore the my public ip
- // line
- fileScanner.close();
- } catch (FileNotFoundException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
- }
- return testType;
-
- }
-
- /**
- *
- * @param time
- */
- public static void sleep(long time) {
- try {
- Thread.sleep(time);
- } catch (InterruptedException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
- }
- }
-
- /**
- * Utility function to check if the query object is valid.
- *
- * @param withparams
- * @param queryObject
- * @return
- */
- public static boolean isValidQueryObject(boolean withparams, PreparedQueryObject queryObject) {
- if (withparams) {
- int noOfValues = queryObject.getValues().size();
- int noOfParams = 0;
- char[] temp = queryObject.getQuery().toCharArray();
- for (int i = 0; i < temp.length; i++) {
- if (temp[i] == '?')
- noOfParams++;
- }
- return (noOfValues == noOfParams);
- } else {
- return !queryObject.getQuery().isEmpty();
- }
-
- }
-
- public static void setCassName(String cassName) {
- MusicUtil.cassName = cassName;
- }
-
- public static void setCassPwd(String cassPwd) {
- MusicUtil.cassPwd = cassPwd;
- }
-
- public static String convertToCQLDataType(DataType type, Object valueObj) {
-
- String value = "";
- switch (type.getName()) {
- case UUID:
- value = valueObj + "";
- break;
- case TEXT:
- case VARCHAR:
- String valueString = valueObj + "";
- valueString = valueString.replace("'", "''");
- value = "'" + valueString + "'";
- break;
- case MAP: {
- Map<String, Object> otMap = (Map<String, Object>) valueObj;
- value = "{" + jsonMaptoSqlString(otMap, ",") + "}";
- break;
- }
- default:
- value = valueObj + "";
- break;
- }
- return value;
- }
-
- /**
- *
- * @param colType
- * @param valueObj
- * @return
- * @throws Exception
- */
- public static Object convertToActualDataType(DataType colType, Object valueObj) {
- String valueObjString = valueObj + "";
- switch (colType.getName()) {
- case UUID:
- return UUID.fromString(valueObjString);
- case VARINT:
- return BigInteger.valueOf(Long.parseLong(valueObjString));
- case BIGINT:
- return Long.parseLong(valueObjString);
- case INT:
- return Integer.parseInt(valueObjString);
- case FLOAT:
- return Float.parseFloat(valueObjString);
- case DOUBLE:
- return Double.parseDouble(valueObjString);
- case BOOLEAN:
- return Boolean.parseBoolean(valueObjString);
- case MAP:
- return (Map<String, Object>) valueObj;
- default:
- return valueObjString;
- }
- }
-
- /**
- *
- * Utility function to parse json map into sql like string
- *
- * @param jMap
- * @param lineDelimiter
- * @return
- */
-
- public static String jsonMaptoSqlString(Map<String, Object> jMap, String lineDelimiter) {
- StringBuilder sqlString = new StringBuilder();
- int counter = 0;
- for (Map.Entry<String, Object> entry : jMap.entrySet()) {
- Object ot = entry.getValue();
- String value = ot + "";
- if (ot instanceof String) {
- value = "'" + value.replace("'", "''") + "'";
- }
- sqlString.append("'" + entry.getKey() + "':" + value);
- if (counter != jMap.size() - 1)
- sqlString.append(lineDelimiter);
- counter = counter + 1;
- }
- return sqlString.toString();
- }
-
- public static Map<String, HashMap<String, Object>> setErrorResponse(MusicServiceException ex) {
- Map<String, HashMap<String, Object>> results = new HashMap<>();
- HashMap<String, Object> tempMap = new HashMap<>();
- Map<String, Object> result = new HashMap<>();
- result.put("error-description", ex.getMessage());
- tempMap.put("error", result);
- results.put("result", tempMap);
- return results;
- }
+ private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
+
+ public static final String ATOMIC = "atomic";
+ public static final String EVENTUAL = "eventual";
+ public static final String CRITICAL = "critical";
+ public static final String ATOMICDELETELOCK = "atomic_delete_lock";
+
+ public static final String DEFAULTKEYSPACENAME = "TBD";
+
+
+ private static int myId = 0;
+ private static ArrayList<String> allIds = new ArrayList<>();
+ private static String publicIp = "";
+ private static ArrayList<String> allPublicIps = new ArrayList<>();
+ private static String myZkHost = "localhost";
+ private static String myCassaHost = "localhost";
+ private static String defaultMusicIp = "localhost";
+ private static boolean debug = true;
+ private static String version = "2.3.0";
+ private static String musicRestIp = "localhost";
+ private static String musicPropertiesFilePath = "/opt/app/music/etc/music.properties";
+ private static long defaultLockLeasePeriod = 6000;
+ private static final String[] propKeys = new String[] { "zookeeper.host", "cassandra.host", "music.ip", "debug",
+ "version", "music.rest.ip", "music.properties", "lock.lease.period", "id", "all.ids", "public.ip",
+ "all.pubic.ips", "cassandra.user", "cassandra.password", "aaf.endpoint.url" };
+
+ private static String cassName = "cassandra";
+ private static String cassPwd;
+ private static String aafEndpointUrl = null;
+
+ private MusicUtil() {
+ throw new IllegalStateException("Utility Class");
+ }
+
+
+ /**
+ * @return the cassName
+ */
+ public static String getCassName() {
+ return cassName;
+ }
+
+ /**
+ * @return the cassPwd
+ */
+ public static String getCassPwd() {
+ return cassPwd;
+ }
+
+ /**
+ * @return the aafEndpointUrl
+ */
+ public static String getAafEndpointUrl() {
+ return aafEndpointUrl;
+ }
+
+ /**
+ *
+ * @param aafEndpointUrl
+ */
+ public static void setAafEndpointUrl(String aafEndpointUrl) {
+ MusicUtil.aafEndpointUrl = aafEndpointUrl;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static int getMyId() {
+ return myId;
+ }
+
+ /**
+ *
+ * @param myId
+ */
+ public static void setMyId(int myId) {
+ MusicUtil.myId = myId;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static List<String> getAllIds() {
+ return allIds;
+ }
+
+ /**
+ *
+ * @param allIds
+ */
+ public static void setAllIds(List<String> allIds) {
+ MusicUtil.allIds = (ArrayList<String>) allIds;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static String getPublicIp() {
+ return publicIp;
+ }
+
+ /**
+ *
+ * @param publicIp
+ */
+ public static void setPublicIp(String publicIp) {
+ MusicUtil.publicIp = publicIp;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static List<String> getAllPublicIps() {
+ return allPublicIps;
+ }
+
+ /**
+ *
+ * @param allPublicIps
+ */
+ public static void setAllPublicIps(List<String> allPublicIps) {
+ MusicUtil.allPublicIps = (ArrayList<String>) allPublicIps;
+ }
+
+ /**
+ * Returns An array of property names that should be in the Properties
+ * files.
+ *
+ * @return
+ */
+ public static String[] getPropkeys() {
+ return propKeys;
+ }
+
+ /**
+ * Get MusicRestIp - default = localhost property file value - music.rest.ip
+ *
+ * @return
+ */
+ public static String getMusicRestIp() {
+ return musicRestIp;
+ }
+
+ /**
+ * Set MusicRestIp
+ *
+ * @param musicRestIp
+ */
+ public static void setMusicRestIp(String musicRestIp) {
+ MusicUtil.musicRestIp = musicRestIp;
+ }
+
+ /**
+ * Get MusicPropertiesFilePath - Default = /opt/music/music.properties
+ * property file value - music.properties
+ *
+ * @return
+ */
+ public static String getMusicPropertiesFilePath() {
+ return musicPropertiesFilePath;
+ }
+
+ /**
+ * Set MusicPropertiesFilePath
+ *
+ * @param musicPropertiesFilePath
+ */
+ public static void setMusicPropertiesFilePath(String musicPropertiesFilePath) {
+ MusicUtil.musicPropertiesFilePath = musicPropertiesFilePath;
+ }
+
+ /**
+ * Get DefaultLockLeasePeriod - Default = 6000 property file value -
+ * lock.lease.period
+ *
+ * @return
+ */
+ public static long getDefaultLockLeasePeriod() {
+ return defaultLockLeasePeriod;
+ }
+
+ /**
+ * Set DefaultLockLeasePeriod
+ *
+ * @param defaultLockLeasePeriod
+ */
+ public static void setDefaultLockLeasePeriod(long defaultLockLeasePeriod) {
+ MusicUtil.defaultLockLeasePeriod = defaultLockLeasePeriod;
+ }
+
+ /**
+ * Set Debug
+ *
+ * @param debug
+ */
+ public static void setDebug(boolean debug) {
+ MusicUtil.debug = debug;
+ }
+
+ /**
+ * Is Debug - Default = true property file value - debug
+ *
+ * @return
+ */
+ public static boolean isDebug() {
+ return debug;
+ }
+
+ /**
+ * Set Version
+ *
+ * @param version
+ */
+ public static void setVersion(String version) {
+ MusicUtil.version = version;
+ }
+
+ /**
+ * Return the version property file value - version
+ *
+ * @return
+ */
+ public static String getVersion() {
+ return version;
+ }
+
+ /**
+ * Get MyZkHost - Zookeeper Hostname - Default = localhost property file
+ * value - zookeeper.host
+ *
+ * @return
+ */
+ public static String getMyZkHost() {
+ return myZkHost;
+ }
+
+ /**
+ * Set MyZkHost - Zookeeper Hostname
+ *
+ * @param myZkHost
+ */
+ public static void setMyZkHost(String myZkHost) {
+ MusicUtil.myZkHost = myZkHost;
+ }
+
+ /**
+ * Get MyCassHost - Cassandra Hostname - Default = localhost property file
+ * value - cassandra.host
+ *
+ * @return
+ */
+ public static String getMyCassaHost() {
+ return myCassaHost;
+ }
+
+ /**
+ * Set MyCassHost - Cassandra Hostname
+ *
+ * @param myCassaHost
+ */
+ public static void setMyCassaHost(String myCassaHost) {
+ MusicUtil.myCassaHost = myCassaHost;
+ }
+
+ /**
+ * Get DefaultMusicIp - Default = localhost property file value - music.ip
+ *
+ * @return
+ */
+ public static String getDefaultMusicIp() {
+ return defaultMusicIp;
+ }
+
+ /**
+ * Set DefaultMusicIp
+ *
+ * @param defaultMusicIp
+ */
+ public static void setDefaultMusicIp(String defaultMusicIp) {
+ MusicUtil.defaultMusicIp = defaultMusicIp;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static String getTestType() {
+ String testType = "";
+ try {
+ Scanner fileScanner = new Scanner(new File(""));
+ testType = fileScanner.next();// ignore the my id line
+ String batchSize = fileScanner.next();// ignore the my public ip
+ // line
+ fileScanner.close();
+ } catch (FileNotFoundException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ }
+ return testType;
+
+ }
+
+ /**
+ *
+ * @param time
+ */
+ public static void sleep(long time) {
+ try {
+ Thread.sleep(time);
+ } catch (InterruptedException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ /**
+ * Utility function to check if the query object is valid.
+ *
+ * @param withparams
+ * @param queryObject
+ * @return
+ */
+ public static boolean isValidQueryObject(boolean withparams, PreparedQueryObject queryObject) {
+ if (withparams) {
+ int noOfValues = queryObject.getValues().size();
+ int noOfParams = 0;
+ char[] temp = queryObject.getQuery().toCharArray();
+ for (int i = 0; i < temp.length; i++) {
+ if (temp[i] == '?')
+ noOfParams++;
+ }
+ return (noOfValues == noOfParams);
+ } else {
+ return !queryObject.getQuery().isEmpty();
+ }
+
+ }
+
+ public static void setCassName(String cassName) {
+ MusicUtil.cassName = cassName;
+ }
+
+ public static void setCassPwd(String cassPwd) {
+ MusicUtil.cassPwd = cassPwd;
+ }
+
+ public static String convertToCQLDataType(DataType type, Object valueObj) throws Exception {
+
+ String value = "";
+ switch (type.getName()) {
+ case UUID:
+ value = valueObj + "";
+ break;
+ case TEXT:
+ case VARCHAR:
+ String valueString = valueObj + "";
+ valueString = valueString.replace("'", "''");
+ value = "'" + valueString + "'";
+ break;
+ case MAP: {
+ Map<String, Object> otMap = (Map<String, Object>) valueObj;
+ value = "{" + jsonMaptoSqlString(otMap, ",") + "}";
+ break;
+ }
+ default:
+ value = valueObj + "";
+ break;
+ }
+ return value;
+ }
+
+ /**
+ *
+ * @param colType
+ * @param valueObj
+ * @return
+ * @throws Exception
+ */
+ public static Object convertToActualDataType(DataType colType, Object valueObj) throws Exception{
+ String valueObjString = valueObj + "";
+ switch (colType.getName()) {
+ case UUID:
+ return UUID.fromString(valueObjString);
+ case VARINT:
+ return BigInteger.valueOf(Long.parseLong(valueObjString));
+ case BIGINT:
+ return Long.parseLong(valueObjString);
+ case INT:
+ return Integer.parseInt(valueObjString);
+ case FLOAT:
+ return Float.parseFloat(valueObjString);
+ case DOUBLE:
+ return Double.parseDouble(valueObjString);
+ case BOOLEAN:
+ return Boolean.parseBoolean(valueObjString);
+ case MAP:
+ return (Map<String, Object>) valueObj;
+ default:
+ return valueObjString;
+ }
+ }
+
+ /**
+ *
+ * Utility function to parse json map into sql like string
+ *
+ * @param jMap
+ * @param lineDelimiter
+ * @return
+ */
+
+ public static String jsonMaptoSqlString(Map<String, Object> jMap, String lineDelimiter) throws Exception{
+ StringBuilder sqlString = new StringBuilder();
+ int counter = 0;
+ for (Map.Entry<String, Object> entry : jMap.entrySet()) {
+ Object ot = entry.getValue();
+ String value = ot + "";
+ if (ot instanceof String) {
+ value = "'" + value.replace("'", "''") + "'";
+ }
+ sqlString.append("'" + entry.getKey() + "':" + value);
+ if (counter != jMap.size() - 1)
+ sqlString.append(lineDelimiter);
+ counter = counter + 1;
+ }
+ return sqlString.toString();
+ }
+
+ public static Map<String, HashMap<String, Object>> setErrorResponse(MusicServiceException ex) {
+ Map<String, HashMap<String, Object>> results = new HashMap<>();
+ HashMap<String, Object> tempMap = new HashMap<>();
+ Map<String, Object> result = new HashMap<>();
+ result.put("error-description", ex.getMessage());
+ tempMap.put("error", result);
+ results.put("result", tempMap);
+ return results;
+ }
}
diff --git a/src/main/java/org/onap/music/main/PropertiesListener.java b/src/main/java/org/onap/music/main/PropertiesListener.java
index de231542..afd35387 100755
--- a/src/main/java/org/onap/music/main/PropertiesListener.java
+++ b/src/main/java/org/onap/music/main/PropertiesListener.java
@@ -32,6 +32,9 @@ import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
@WebListener
public class PropertiesListener implements ServletContextListener {
@@ -127,6 +130,7 @@ public class PropertiesListener implements ServletContextListener {
}
}
} catch (IOException e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.IOERROR ,ErrorSeverity.CRITICAL, ErrorTypes.CONNECTIONERROR);
logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
}
diff --git a/src/main/java/org/onap/music/main/ResultType.java b/src/main/java/org/onap/music/main/ResultType.java
index f19ada4a..6b0c5252 100644
--- a/src/main/java/org/onap/music/main/ResultType.java
+++ b/src/main/java/org/onap/music/main/ResultType.java
@@ -22,7 +22,8 @@
package org.onap.music.main;
public enum ResultType {
- SUCCESS("Success"), FAILURE("Failure");
+ SUCCESS("Success"), FAILURE("Failure"),
+ SYNTAXERROR("SyntaxError"), EXCEPTION("Exception");
private String result;
diff --git a/src/main/java/org/onap/music/rest/RestMusicAdminAPI.java b/src/main/java/org/onap/music/rest/RestMusicAdminAPI.java
index 0265d039..cbe9ec9c 100755
--- a/src/main/java/org/onap/music/rest/RestMusicAdminAPI.java
+++ b/src/main/java/org/onap/music/rest/RestMusicAdminAPI.java
@@ -39,6 +39,9 @@ import javax.ws.rs.core.MediaType;
import org.onap.music.datastore.PreparedQueryObject;
import org.onap.music.datastore.jsonobjects.JsonOnboard;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.main.CachingUtil;
import org.onap.music.main.MusicCore;
import org.onap.music.main.MusicUtil;
@@ -72,6 +75,7 @@ public class RestMusicAdminAPI {
String password = jsonObj.getPassword();
response.addHeader("X-latestVersion", MusicUtil.getVersion());
if (appName == null || userId == null || isAAF == null || password == null) {
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.MISSINGINFO ,ErrorSeverity.CRITICAL, ErrorTypes.DATAERROR);
resultMap.put("Exception",
"Please check the request parameters. Some of the required values appName(ns), userId, password, isAAF are missing.");
return resultMap;
@@ -163,8 +167,14 @@ public class RestMusicAdminAPI {
Row row = (Row) it.next();
resultMap.put( row.getUUID("uuid").toString(),row.getString("keyspace_name"));
}
- if (resultMap.isEmpty())
- resultMap.put("ERROR", "Application is not onboarded. Please contact admin.");
+ if (resultMap.isEmpty()) {
+ if(uuid != null)
+ resultMap.put("Exception", "Please make sure Aid is correct and application is onboarded.");
+ else {
+ resultMap.put("Exception",
+ "Application is not onboarded. Please make sure all the information is correct.");
+ }
+ }
return resultMap;
}
@@ -195,7 +205,7 @@ public class RestMusicAdminAPI {
String ks = row.getString("keyspace_name");
if (!ks.equals(MusicUtil.DEFAULTKEYSPACENAME)) {
PreparedQueryObject queryObject = new PreparedQueryObject();
- queryObject.appendQueryString("DROP KEYSPACE " + ks + ";");
+ queryObject.appendQueryString("DROP KEYSPACE IF EXISTS " + ks + ";");
MusicCore.nonKeyRelatedPut(queryObject, consistency);
}
}
@@ -208,7 +218,7 @@ public class RestMusicAdminAPI {
resultMap.put("Success", "Your application has been deleted successfully");
} else {
resultMap.put("Exception",
- "Oops. Spomething went wrong. Please make sure Aid is correct or Application is onboarded");
+ "Oops. Something went wrong. Please make sure Aid is correct or Application is onboarded");
}
return resultMap;
}
@@ -325,7 +335,7 @@ public class RestMusicAdminAPI {
resultMap.put("Success", "Your application has been updated successfully");
} else {
resultMap.put("Exception",
- "Oops. Spomething went wrong. Please make sure Aid is correct and application is onboarded");
+ "Oops. Something went wrong. Please make sure Aid is correct and application is onboarded");
}
return resultMap;
diff --git a/src/main/java/org/onap/music/rest/RestMusicDataAPI.java b/src/main/java/org/onap/music/rest/RestMusicDataAPI.java
index f1d88efa..e7af8f9f 100755
--- a/src/main/java/org/onap/music/rest/RestMusicDataAPI.java
+++ b/src/main/java/org/onap/music/rest/RestMusicDataAPI.java
@@ -43,6 +43,10 @@ import org.onap.music.datastore.jsonobjects.JsonKeySpace;
import org.onap.music.datastore.jsonobjects.JsonTable;
import org.onap.music.datastore.jsonobjects.JsonUpdate;
import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.exceptions.MusicLockingException;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicServiceException;
import org.onap.music.main.CachingUtil;
import org.onap.music.main.MusicCore;
@@ -51,6 +55,8 @@ import org.onap.music.main.MusicUtil;
import org.onap.music.main.ResultType;
import org.onap.music.main.ReturnType;
import org.onap.music.response.jsonobjects.JsonResponse;
+
+import com.att.eelf.configuration.EELFLogger;
import com.datastax.driver.core.DataType;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
@@ -144,15 +150,21 @@ public class RestMusicDataAPI {
JsonKeySpace kspObject,
@ApiParam(value = "Keyspace Name",
required = true) @PathParam("name") String keyspaceName,
- @Context HttpServletResponse response) throws Exception {
+ @Context HttpServletResponse response) {
Map<String, Object> resultMap = CachingUtil.verifyOnboarding(ns, userId, password);
response.addHeader(xLatestVersion, MusicUtil.getVersion());
if (!resultMap.isEmpty()) {
return resultMap;
}
- resultMap = MusicCore.autheticateUser(ns, userId, password, keyspaceName, aid,
- "createKeySpace");
+ try {
+ resultMap = MusicCore.autheticateUser(ns, userId, password, keyspaceName, aid,
+ "createKeySpace");
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.applicationLogger,
+ "Exception while authenting the user.");
+ return resultMap;
+ }
String newAid = null;
if (!resultMap.isEmpty()) {
if (resultMap.containsKey("aid")) {
@@ -169,7 +181,12 @@ public class RestMusicDataAPI {
boolean result = false;
long start = System.currentTimeMillis();
Map<String, Object> replicationInfo = kspObject.getReplicationInfo();
- String repString = "{" + MusicUtil.jsonMaptoSqlString(replicationInfo, ",") + "}";
+ String repString = null;
+ try {
+ repString = "{" + MusicUtil.jsonMaptoSqlString(replicationInfo, ",") + "}";
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ }
queryObject.appendQueryString(
"CREATE KEYSPACE " + keyspaceName + " WITH replication = " + repString);
if (kspObject.getDurabilityOfWrites() != null) {
@@ -200,7 +217,12 @@ public class RestMusicDataAPI {
queryObject.appendQueryString(
"DELETE FROM admin.keyspace_master where uuid = " + newAid);
queryObject.appendQueryString(";");
- result = MusicCore.nonKeyRelatedPut(queryObject, consistency);
+ try {
+ result = MusicCore.nonKeyRelatedPut(queryObject, consistency);
+ } catch (MusicServiceException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ resultMap.put("Exception", e.getMessage());
+ }
resultMap.remove("aid");
resultMap.remove("uuid");
return resultMap;
@@ -209,10 +231,23 @@ public class RestMusicDataAPI {
queryObject = new PreparedQueryObject();
queryObject.appendQueryString(
"UPDATE admin.keyspace_master SET keyspace_name=? where uuid = ?;");
- queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(),
+ try {
+ queryObject.addValue(MusicUtil.convertToActualDataType(DataType.text(),
MusicUtil.DEFAULTKEYSPACENAME));
- queryObject.addValue(MusicUtil.convertToActualDataType(DataType.uuid(), newAid));
- result = MusicCore.nonKeyRelatedPut(queryObject, consistency);
+ queryObject.addValue(MusicUtil.convertToActualDataType(DataType.uuid(), newAid));
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ resultMap.put("Exception", "Unable to process input data. Invalid input data type. "
+ + "Please check keyspace_name and aid.. ");
+ }
+ try {
+ result = MusicCore.nonKeyRelatedPut(queryObject, consistency);
+ } catch (MusicServiceException e) {
+ e.printStackTrace();
+ logger.error(EELFLoggerDelegate.errorLogger, "Unable to process operation. Error: "+e.getMessage());
+ resultMap.put("Exception", "Unable to process operation. Error: "+e.getMessage());
+ return resultMap;
+ }
resultMap.remove("aid");
resultMap.remove("uuid");
return resultMap;
@@ -230,11 +265,18 @@ public class RestMusicDataAPI {
queryObject.appendQueryString(";");
result = MusicCore.nonKeyRelatedPut(queryObject, consistency);
} catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.UNKNOWNERROR ,ErrorSeverity.WARN, ErrorTypes.MUSICSERVICEERROR);
}
resultMap.remove("uuid");
- if (CachingUtil.isAAFApplication(ns))
- resultMap.remove("aid");
+ try {
+ if (CachingUtil.isAAFApplication(ns))
+ resultMap.remove("aid");
+ } catch (MusicServiceException e) {
+ e.printStackTrace();
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ resultMap.put("Exception", e.getMessage());
+ return resultMap;
+ }
resultMap.put("Status", String.valueOf(result));
return resultMap;
@@ -348,6 +390,7 @@ public class RestMusicDataAPI {
@ApiParam(value = "Table Name",
required = true) @PathParam("tablename") String tablename,
@Context HttpServletResponse response) throws Exception {
+
Map<String, Object> resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
aid, "createTable");
response.addHeader(xLatestVersion, MusicUtil.getVersion());
@@ -366,11 +409,17 @@ public class RestMusicDataAPI {
int counter = 0;
String primaryKey;
for (Map.Entry<String, String> entry : fields.entrySet()) {
- fieldsString.append("" + entry.getKey() + " " + entry.getValue() + "");
+
if (entry.getKey().equals("PRIMARY KEY")) {
- primaryKey = entry.getValue().substring(entry.getValue().indexOf('(') + 1);
- primaryKey = primaryKey.substring(0, primaryKey.indexOf(')'));
- }
+ if(! entry.getValue().contains("("))
+ primaryKey = entry.getValue();
+ else {
+ primaryKey = entry.getValue().substring(entry.getValue().indexOf('(') + 1);
+ primaryKey = primaryKey.substring(0, primaryKey.indexOf(')'));
+ }
+ fieldsString.append("" + entry.getKey() + " (" + primaryKey + ")");
+ } else
+ fieldsString.append("" + entry.getKey() + " " + entry.getValue() + "");
if (counter == fields.size() - 1)
fieldsString.append(")");
else
@@ -500,9 +549,15 @@ public class RestMusicDataAPI {
required = true) @PathParam("keyspace") String keyspace,
@ApiParam(value = "Table Name",
required = true) @PathParam("tablename") String tablename,
- @Context HttpServletResponse response) throws Exception {
- Map<String, Object> resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
- aid, "insertIntoTable");
+ @Context HttpServletResponse response) {
+ Map<String, Object> resultMap = null;
+ try {
+ resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
+ aid, "insertIntoTable");
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
response.addHeader(xLatestVersion, MusicUtil.getVersion());
if (resultMap.containsKey("aid"))
resultMap.remove("aid");
@@ -512,7 +567,17 @@ public class RestMusicDataAPI {
ReturnType result = null;
Map<String, Object> valuesMap = insObj.getValues();
PreparedQueryObject queryObject = new PreparedQueryObject();
- TableMetadata tableInfo = MusicCore.returnColumnMetadata(keyspace, tablename);
+ TableMetadata tableInfo = null;
+ try {
+ tableInfo = MusicCore.returnColumnMetadata(keyspace, tablename);
+ if(tableInfo == null)
+ throw new MusicServiceException("Table name doesn't exists. Please check the table name.");
+ } catch (MusicServiceException e) {
+ e.printStackTrace();
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ resultMap.put(ResultType.SYNTAXERROR.getResult(), e.getMessage());
+ return resultMap;
+ }
String primaryKeyName = tableInfo.getPrimaryKey().get(0).getName();
StringBuilder fieldsString = new StringBuilder("(vector_ts,");
String vectorTs =
@@ -532,7 +597,13 @@ public class RestMusicDataAPI {
DataType colType = tableInfo.getColumn(entry.getKey()).getType();
- Object formattedValue = MusicUtil.convertToActualDataType(colType, valueObj);
+ Object formattedValue = null;
+ try {
+ formattedValue = MusicUtil.convertToActualDataType(colType, valueObj);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ //return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
valueString.append("?");
queryObject.addValue(formattedValue);
@@ -593,7 +664,7 @@ public class RestMusicDataAPI {
: new ReturnType(ResultType.FAILURE,
"Null result - Please Contact admin").toMap();
} catch (Exception ex) {
- logger.info(EELFLoggerDelegate.applicationLogger, ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage(), AppMessages.UNKNOWNERROR ,ErrorSeverity.WARN, ErrorTypes.MUSICSERVICEERROR);
return new ReturnType(ResultType.FAILURE, ex.getMessage()).toMap();
}
}
@@ -631,9 +702,15 @@ public class RestMusicDataAPI {
required = true) @PathParam("keyspace") String keyspace,
@ApiParam(value = "Table Name",
required = true) @PathParam("tablename") String tablename,
- @Context UriInfo info, @Context HttpServletResponse response) throws Exception {
- Map<String, Object> resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
- aid, "updateTable");
+ @Context UriInfo info, @Context HttpServletResponse response) {
+ Map<String, Object> resultMap;
+ try {
+ resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
+ aid, "updateTable");
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
response.addHeader(xLatestVersion, MusicUtil.getVersion());
if (resultMap.containsKey("aid"))
resultMap.remove("aid");
@@ -651,7 +728,15 @@ public class RestMusicDataAPI {
PreparedQueryObject queryObject = new PreparedQueryObject();
Map<String, Object> valuesMap = updateObj.getValues();
- TableMetadata tableInfo = MusicCore.returnColumnMetadata(keyspace, tablename);
+ TableMetadata tableInfo;
+ try {
+ tableInfo = MusicCore.returnColumnMetadata(keyspace, tablename);
+ } catch (MusicServiceException e) {
+ e.printStackTrace();
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ resultMap.put("Exception", e.getMessage());
+ return resultMap;
+ }
if (tableInfo == null) {
return new ReturnType(ResultType.FAILURE,
"Table information not found. Please check input for table name= "
@@ -665,7 +750,13 @@ public class RestMusicDataAPI {
for (Map.Entry<String, Object> entry : valuesMap.entrySet()) {
Object valueObj = entry.getValue();
DataType colType = tableInfo.getColumn(entry.getKey()).getType();
- Object valueString = MusicUtil.convertToActualDataType(colType, valueObj);
+ Object valueString = null;
+ try {
+ valueString = MusicUtil.convertToActualDataType(colType, valueObj);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ //return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
fieldValueString.append(entry.getKey() + "= ?");
queryObject.addValue(valueString);
if (counter != valuesMap.size() - 1)
@@ -699,7 +790,12 @@ public class RestMusicDataAPI {
RowIdentifier rowId = null;
try {
rowId = getRowIdentifier(keyspace, tablename, info.getQueryParameters(), queryObject);
+ if(rowId == null || rowId.primarKeyValue.isEmpty()) {
+ resultMap.put(ResultType.SYNTAXERROR.getResult(), "Mandatory WHERE clause is missing. Please check the input request.");
+ return resultMap;
+ }
} catch (MusicServiceException ex) {
+ logger.error(EELFLoggerDelegate.errorLogger,ex.getMessage());
return new ReturnType(ResultType.FAILURE, ex.getMessage()).toMap();
}
@@ -730,11 +826,21 @@ public class RestMusicDataAPI {
queryObject, lockId, conditionInfo);
} else if (consistency.equalsIgnoreCase("atomic_delete_lock")) {
// this function is mainly for the benchmarks
- operationResult = MusicCore.atomicPutWithDeleteLock(keyspace, tablename,
- rowId.primarKeyValue, queryObject, conditionInfo);
+ try {
+ operationResult = MusicCore.atomicPutWithDeleteLock(keyspace, tablename,
+ rowId.primarKeyValue, queryObject, conditionInfo);
+ } catch (MusicLockingException e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
} else if (consistency.equalsIgnoreCase(MusicUtil.ATOMIC)) {
- operationResult = MusicCore.atomicPut(keyspace, tablename, rowId.primarKeyValue,
- queryObject, conditionInfo);
+ try {
+ operationResult = MusicCore.atomicPut(keyspace, tablename, rowId.primarKeyValue,
+ queryObject, conditionInfo);
+ } catch (MusicLockingException e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ return new ReturnType(ResultType.FAILURE, e.getMessage()).toMap();
+ }
}
long actualUpdateCompletionTime = System.currentTimeMillis();
@@ -788,15 +894,25 @@ public class RestMusicDataAPI {
required = true) @PathParam("keyspace") String keyspace,
@ApiParam(value = "Table Name",
required = true) @PathParam("tablename") String tablename,
- @Context UriInfo info, @Context HttpServletResponse response) throws Exception {
- Map<String, Object> resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
- aid, "deleteFromTable");
+ @Context UriInfo info, @Context HttpServletResponse response) {
+ Map<String, Object> resultMap = null;
+ try {
+ resultMap = MusicCore.autheticateUser(ns, userId, password, keyspace,
+ aid, "deleteFromTable");
+ } catch (Exception e) {
+ resultMap.put("Exception", e.getMessage());
+ return resultMap;
+ }
response.addHeader(xLatestVersion, MusicUtil.getVersion());
if (resultMap.containsKey("aid"))
resultMap.remove("aid");
if (!resultMap.isEmpty()) {
return resultMap;
}
+ if(delObj == null) {
+ resultMap.put("Exception", "Request body is missing. Please check your input data and retry.");
+ return resultMap;
+ }
PreparedQueryObject queryObject = new PreparedQueryObject();
StringBuilder columnString = new StringBuilder();
@@ -851,21 +967,25 @@ public class RestMusicDataAPI {
String consistency = delObj.getConsistencyInfo().get("type");
ReturnType operationResult = null;
-
- if (consistency.equalsIgnoreCase(MusicUtil.EVENTUAL))
- operationResult = MusicCore.eventualPut(queryObject);
- else if (consistency.equalsIgnoreCase(MusicUtil.CRITICAL)) {
- String lockId = delObj.getConsistencyInfo().get("lockId");
- operationResult = MusicCore.criticalPut(keyspace, tablename, rowId.primarKeyValue,
- queryObject, lockId, conditionInfo);
- } else if (consistency.equalsIgnoreCase(MusicUtil.ATOMIC)) {
- operationResult = MusicCore.atomicPut(keyspace, tablename, rowId.primarKeyValue,
- queryObject, conditionInfo);
- }
- else if (consistency.equalsIgnoreCase(MusicUtil.ATOMICDELETELOCK)) {
- operationResult = MusicCore.atomicPutWithDeleteLock(keyspace, tablename, rowId.primarKeyValue,
- queryObject, conditionInfo);
- }
+ try {
+ if (consistency.equalsIgnoreCase(MusicUtil.EVENTUAL))
+ operationResult = MusicCore.eventualPut(queryObject);
+ else if (consistency.equalsIgnoreCase(MusicUtil.CRITICAL)) {
+ String lockId = delObj.getConsistencyInfo().get("lockId");
+ operationResult = MusicCore.criticalPut(keyspace, tablename, rowId.primarKeyValue,
+ queryObject, lockId, conditionInfo);
+ } else if (consistency.equalsIgnoreCase(MusicUtil.ATOMIC)) {
+ operationResult = MusicCore.atomicPut(keyspace, tablename, rowId.primarKeyValue,
+ queryObject, conditionInfo);
+ }
+ else if (consistency.equalsIgnoreCase(MusicUtil.ATOMICDELETELOCK)) {
+ operationResult = MusicCore.atomicPutWithDeleteLock(keyspace, tablename, rowId.primarKeyValue,
+ queryObject, conditionInfo);
+ }
+ } catch (MusicLockingException e) {
+ resultMap.put("Exception", "Unable to perform Delete operation. Exception from music: "+e.getMessage());
+ return resultMap;
+ }
try {
return operationResult.toMap();
} catch (NullPointerException e) {
@@ -1039,7 +1159,7 @@ public class RestMusicDataAPI {
if (resultMap.containsKey("aid"))
resultMap.remove("aid");
if (!resultMap.isEmpty()) {
- logger.error("Error while authentication... ");
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.AUTHENTICATIONERROR ,ErrorSeverity.WARN, ErrorTypes.AUTHENTICATIONERROR);
HashMap<String, Object> tempMap = new HashMap<>();
tempMap.putAll(resultMap);
Map<String, HashMap<String, Object>> results = new HashMap<>();
@@ -1064,6 +1184,7 @@ public class RestMusicDataAPI {
ResultSet results = MusicCore.get(queryObject);
return MusicCore.marshallResults(results);
} catch (MusicServiceException ex) {
+ logger.error(EELFLoggerDelegate.errorLogger,"", AppMessages.UNKNOWNERROR ,ErrorSeverity.ERROR, ErrorTypes.MUSICSERVICEERROR);
return MusicUtil.setErrorResponse(ex);
}
@@ -1077,7 +1198,6 @@ public class RestMusicDataAPI {
* @param limit
* @return
* @throws MusicServiceException
- * @throws Exception
*/
public PreparedQueryObject selectSpecificQuery(String version, String minorVersion,
String patchVersion, String aid, String ns, String userId, String password,
@@ -1108,7 +1228,6 @@ public class RestMusicDataAPI {
* @param queryObject
* @return
* @throws MusicServiceException
- * @throws Exception
*/
private RowIdentifier getRowIdentifier(String keyspace, String tablename,
MultivaluedMap<String, String> rowParams, PreparedQueryObject queryObject)
@@ -1130,7 +1249,12 @@ public class RestMusicDataAPI {
List<String> valueList = entry.getValue();
String indValue = valueList.get(0);
DataType colType = tableInfo.getColumn(entry.getKey()).getType();
- Object formattedValue = MusicUtil.convertToActualDataType(colType, indValue);
+ Object formattedValue = null;
+ try {
+ formattedValue = MusicUtil.convertToActualDataType(colType, indValue);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e.getMessage());
+ }
primaryKey.append(indValue);
rowSpec.append(keyName + "= ?");
queryObject.addValue(formattedValue);
diff --git a/src/test/java/org/onap/music/benchmarks/MicroBenchMarkRestClient.java b/src/test/java/org/onap/music/benchmarks/MicroBenchMarkRestClient.java
deleted file mode 100644
index 2dcecfc2..00000000
--- a/src/test/java/org/onap/music/benchmarks/MicroBenchMarkRestClient.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * org.onap.music
- * ===================================================================
- * Copyright (c) 2017 AT&T Intellectual Property
- * ===================================================================
- * 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.benchmarks;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import org.onap.music.main.MusicUtil;
-
-
-@Path("/tests")
-public class MicroBenchMarkRestClient {
- static double version = 9.7;
-
- @GET
- @Path("/run")
- @Produces(MediaType.TEXT_PLAIN)
- public String runTests() {
- String testType = MusicUtil.getTestType();
- String candidateName = "shankar" + System.currentTimeMillis();
- MicroBenchMarks msHandle = new MicroBenchMarks();
- switch (testType) {
- case "musicPut":
- return msHandle.musicPutAndUpdate(candidateName);
-
- case "musicCriticalPut":
- return msHandle.musicCriticalPutAndUpdate(candidateName);
-
- case "musicGet":
- return msHandle.musicGet();
-
- case "cassaPut":
- return msHandle.cassaPutAndUpdate(candidateName);
-
- case "cassaQuorumPut":
- return msHandle.cassaQuorumPutAndUpdate(candidateName);
-
- case "cassaGet":
- return msHandle.cassaGet();
-
- case "zkPut":
- return msHandle.zkPutAndUpdate(candidateName);
-
- case "zkGet":
- return msHandle.zkGet();
-
- }
- return "something wrong!";
-
- }
-
-}
-
diff --git a/src/test/java/org/onap/music/benchmarks/MicroBenchMarks.java b/src/test/java/org/onap/music/benchmarks/MicroBenchMarks.java
deleted file mode 100644
index c267d254..00000000
--- a/src/test/java/org/onap/music/benchmarks/MicroBenchMarks.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * org.onap.music
- * ===================================================================
- * Copyright (c) 2017 AT&T Intellectual Property
- * ===================================================================
- * 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.benchmarks;
-
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.core.MediaType;
-import org.onap.music.datastore.jsonobjects.JsonInsert;
-import org.onap.music.datastore.jsonobjects.JsonKeySpace;
-import org.onap.music.datastore.jsonobjects.JsonTable;
-import org.onap.music.main.MusicUtil;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-
-public class MicroBenchMarks {
- final String keyspaceName = "shankarks";
- final String musicurl = "http://" + MusicUtil.getMusicRestIp() + ":8080/MUSIC/rest/formal";
- final String userForGets = "shankarUserForGets";
-
- public MicroBenchMarks() {
- bootStrap();
- }
-
- private void createVotingKeyspace() {
- System.out.println(keyspaceName);
- Map<String, Object> replicationInfo = new HashMap<String, Object>();
- replicationInfo.put("class", "SimpleStrategy");
- replicationInfo.put("replication_factor", 3);
- String durabilityOfWrites = "false";
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
- JsonKeySpace jsonKp = new JsonKeySpace();
- jsonKp.setConsistencyInfo(consistencyInfo);
- jsonKp.setDurabilityOfWrites(durabilityOfWrites);
- jsonKp.setReplicationInfo(replicationInfo);
-
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- WebResource webResource = client.resource(musicurl + "/keyspaces/" + keyspaceName);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jsonKp);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- }
-
- private void createVotingTable() {
- Map<String, String> fields = new HashMap<String, String>();
- fields.put("name", "text");
- fields.put("count", "varint");
- fields.put("PRIMARY KEY", "(name)");
-
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonTable jtab = new JsonTable();
- jtab.setFields(fields);
- jtab.setConsistencyInfo(consistencyInfo);
-
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- WebResource webResource = client
- .resource(musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount");
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jtab);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- }
-
- private void createEntryForCandidate(String candidateName) {
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("name", candidateName);
- values.put("count", 0);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- String url = musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount/rows";
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- private String createLock(String lockName) {
- Client client = Client.create();
- String msg = musicurl + "/locks/create/" + lockName;
- WebResource webResource = client.resource(msg);
- System.out.println(msg);
-
- WebResource.Builder wb = webResource.accept(MediaType.TEXT_PLAIN);
-
- ClientResponse response = wb.post(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- String output = response.getEntity(String.class);
-
- return output;
- }
-
- private boolean acquireLock(String lockId) {
- Client client = Client.create();
- String msg = musicurl + "/locks/acquire/" + lockId;
- System.out.println(msg);
- WebResource webResource = client.resource(msg);
-
-
- WebResource.Builder wb = webResource.accept(MediaType.TEXT_PLAIN);
-
- ClientResponse response = wb.get(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- String output = response.getEntity(String.class);
- Boolean status = Boolean.parseBoolean(output);
- System.out.println("Server response .... \n");
- System.out.println(output);
- return status;
- }
-
- private void unlock(String lockId) {
- Client client = Client.create();
- WebResource webResource = client.resource(musicurl + "/locks/release/" + lockId);
-
- ClientResponse response = webResource.delete(ClientResponse.class);
-
-
- if (response.getStatus() != 204) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
- }
-
- public String musicCriticalPutAndUpdate(String candidateName) {
- /*
- * create lock for the candidate. The music API dictates that the lock name must be of the
- * form keyspacename.tableName.primaryKeyName
- */
- createEntryForCandidate(candidateName);
- System.out.println("trying to acquire lock!");
-
- String lockName = keyspaceName + ".votecount." + candidateName;
- String lockId = createLock(lockName);
- while (acquireLock(lockId) != true);
-
- System.out.println("acquired lock!");
- // update candidate entry if you have the lock
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", 5);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "atomic");
- consistencyInfo.put("lockId", lockId);
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount/rows?name="
- + candidateName;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- // release lock now that the operation is done
- unlock(lockId);
- return "musicCriticalPutAndUpdate:" + url;
-
- }
-
- public String musicPutAndUpdate(String candidateName) {
- createEntryForCandidate(candidateName);
-
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", 5);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount/rows?name="
- + candidateName;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- return "musicPutAndUpdate:" + url;
- }
-
- public String musicGet() {
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- String url = musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount/rows?name="
- + userForGets;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- Map<String, Object> output = response.getEntity(Map.class);
- return "musicGet:" + url;
- }
-
- public String cassaQuorumPutAndUpdate(String candidateName) {
- // http://135.197.226.98:8080/MUSIC/rest/formal/purecassa/keyspaces/shankarks/tables/employees/rows?emp_name=shankaruser1
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", 5);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "atomic");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicurl + "/purecassa/keyspaces/" + keyspaceName
- + "/tables/votecount/rows?name=" + candidateName;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- return "cassaQuorumPutAndUpdate:" + url;
-
- }
-
- public String cassaPutAndUpdate(String candidateName) {
- // http://135.197.226.98:8080/MUSIC/rest/formal/purecassa/keyspaces/shankarks/tables/employees/rows?emp_name=shankaruser1
- long start = System.currentTimeMillis();
- createEntryForCandidate(candidateName);
-
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", 5);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicurl + "/purecassa/keyspaces/" + keyspaceName
- + "/tables/votecount/rows?name=" + candidateName;
- WebResource webResource = client.resource(url);
- long end = System.currentTimeMillis();
- String time = (end - start) + "";
-
- start = System.currentTimeMillis();
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
- end = System.currentTimeMillis();
- String time2 = (end - start) + "";
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- return "cassaPutAndUpdate:" + url;
- }
-
- public String cassaGet() {
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- String url = musicurl + "/keyspaces/" + keyspaceName + "/tables/votecount/rows?name="
- + userForGets;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- Map<String, Object> output = response.getEntity(Map.class);
- return "cassaGet:" + url;
- }
-
- private void zkCreate(String candidateName) {
- // http://135.197.226.98:8080/MUSIC/rest/formal/purezk/shankarzknode
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- WebResource webResource = client.resource(musicurl + "/purezk/" + candidateName);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- public String zkPutAndUpdate(String candidateName) {
- // http://135.197.226.99:8080/MUSIC/rest/formal/purezk/shankarzknode
-
- // CREATE IT FIRST
- zkCreate(candidateName);
-
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", 5);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "atomic");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicurl + "/purezk/" + candidateName;
- System.out.println("in zk put:" + url);
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- return "zkPutAndUpdate:" + url;
- }
-
- public String zkGet() {
- Client client = Client.create();
- String url = musicurl + "/purezk/" + userForGets;
- System.out.println("in zk get:" + url);
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("text/plain").get(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- String output = response.getEntity(String.class);
- return "zkGet:" + url;
- }
-
-
- public void bootStrap() {
- // createVotingKeyspace();
- // createVotingTable();
- // createEntryForCandidate(userForGets);
- // zkPutAndUpdate(userForGets);
- }
-
-
-}
diff --git a/src/test/java/org/onap/music/e2eTests/MusicConnector.java b/src/test/java/org/onap/music/e2eTests/MusicConnector.java
deleted file mode 100644
index bb3d1f1b..00000000
--- a/src/test/java/org/onap/music/e2eTests/MusicConnector.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * org.onap.music
- * ===================================================================
- * Copyright (c) 2017 AT&T Intellectual Property
- * ===================================================================
- * 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.e2eTests;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-public class MusicConnector {
-
- // change this to point to relevant cluster
- public String[] musicNodes;
-
- public MusicConnector(String[] musicNodes) {
- this.musicNodes = musicNodes;
- }
-
- private String getMusicNodeIp() {
- Random r = new Random();
- int index = r.nextInt(musicNodes.length);
- return musicNodes[index];
- }
-
- /*
- * public static String toggle(String serverAddress){ if(serverAddress.equals(agaveMusicNode)){
- * System.out.println("Agave is down...connect to Big Site"); serverAddress = bigSiteMusicNode;
- * }else if(serverAddress.equals(bigSiteMusicNode)){
- * System.out.println("Big Site is down...connect to Agave"); serverAddress = agaveMusicNode; }
- * return serverAddress; }
- */
-
- public String getMusicNodeURL() {
- String musicurl = "http://" + getMusicNodeIp() + ":8080/MUSIC/rest";
- System.out.println(musicurl);
- return musicurl;
- }
-
- public boolean isHostUp(String serverAddress) {
- Boolean isUp = false;
- try {
- InetAddress inet = InetAddress.getByName(serverAddress);
- isUp = inet.isReachable(1000);
- } catch (UnknownHostException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return isUp;
- }
-
- /*
- * private static String getMusicNodeIp(){
- *
- * //return "54.224.168.13"; return bigSiteMusicNode; String serverAddress; serverAddress =
- * agaveMusicNode; while(isHostUp(serverAddress) != true) serverAddress = toggle(serverAddress);
- * return serverAddress; }
- */
-}
diff --git a/src/test/java/org/onap/music/e2eTests/TestMusicE2E.java b/src/test/java/org/onap/music/e2eTests/TestMusicE2E.java
deleted file mode 100644
index 25021e82..00000000
--- a/src/test/java/org/onap/music/e2eTests/TestMusicE2E.java
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * org.onap.music
- * ===================================================================
- * Copyright (c) 2017 AT&T Intellectual Property
- * ===================================================================
- * 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.e2eTests;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.core.MediaType;
-import org.onap.music.datastore.jsonobjects.JsonDelete;
-import org.onap.music.datastore.jsonobjects.JsonInsert;
-import org.onap.music.datastore.jsonobjects.JsonKeySpace;
-import org.onap.music.datastore.jsonobjects.JsonTable;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-
-public class TestMusicE2E {
- String keyspaceName;
- ArrayList<String> lockNames;
- MusicConnector musicHandle;
-
- public TestMusicE2E(String[] musicIps) {
- lockNames = new ArrayList<String>();
- musicHandle = new MusicConnector(musicIps);
- bootStrap();
- }
-
- public void createVotingKeyspace() {
- keyspaceName = "VotingAppForMusic" + System.currentTimeMillis();
- Map<String, Object> replicationInfo = new HashMap<String, Object>();
- replicationInfo.put("class", "SimpleStrategy");
- replicationInfo.put("replication_factor", 1);
- String durabilityOfWrites = "false";
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
- JsonKeySpace jsonKp = new JsonKeySpace();
- jsonKp.setConsistencyInfo(consistencyInfo);
- jsonKp.setDurabilityOfWrites(durabilityOfWrites);
- jsonKp.setReplicationInfo(replicationInfo);
-
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- WebResource webResource = client
- .resource(musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jsonKp);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- }
-
- public void createVotingTable() {
- Map<String, String> fields = new HashMap<String, String>();
- fields.put("name", "text");
- fields.put("count", "varint");
- fields.put("PRIMARY KEY", "(name)");
-
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonTable jtab = new JsonTable();
- jtab.setFields(fields);
- jtab.setConsistencyInfo(consistencyInfo);
-
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount";
- System.out.println("create url:" + url);
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jtab);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- }
-
- private void checkMusicVersion() {
- Client client = Client.create();
- System.out.println(musicHandle.getMusicNodeURL() + "/version");
-
-
- // System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
- WebResource webResource = client.resource(musicHandle.getMusicNodeURL() + "/version");
-
-
- ClientResponse response = webResource.accept("text/plain").header("Connection", "close")
- .get(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- String output = response.getEntity(String.class);
-
- // System.out.println("Output from Server .... \n");
- System.out.println(output);
-
- }
-
- private void createEntryForCandidate(String candidateName) {
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("name", candidateName);
- values.put("count", 0);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount/rows";
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .post(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus() + "url:"
- + url + " candidate name:" + candidateName);
-
-
- }
-
- private String createLock(String lockName) {
- Client client = Client.create();
- String msg = musicHandle.getMusicNodeURL() + "/locks/create/" + lockName;
- WebResource webResource = client.resource(msg);
- System.out.println(msg);
- WebResource.Builder wb = webResource.accept(MediaType.TEXT_PLAIN);
-
- ClientResponse response = wb.post(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException(
- "Failed : HTTP error code : " + response.getStatus() + "url:" + msg);
- }
-
- String output = response.getEntity(String.class);
-
- // System.out.println("Server response .... \n");
- // System.out.println(output);
- return output;
- }
-
- private boolean acquireLock(String lockId) {
- Client client = Client.create();
- String msg = musicHandle.getMusicNodeURL() + "/locks/acquire/" + lockId;
- System.out.println(msg);
- WebResource webResource = client.resource(msg);
-
-
- WebResource.Builder wb = webResource.accept(MediaType.TEXT_PLAIN);
-
- ClientResponse response = wb.get(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException(
- "Failed : HTTP error code : " + response.getStatus() + "url:" + msg);
- }
-
- String output = response.getEntity(String.class);
- Boolean status = Boolean.parseBoolean(output);
- System.out.println("Server response .... \n");
- System.out.println(output);
- return status;
- }
-
- private void unlock(String lockId) {
- Client client = Client.create();
- WebResource webResource =
- client.resource(musicHandle.getMusicNodeURL() + "/locks/release/" + lockId);
-
- ClientResponse response = webResource.delete(ClientResponse.class);
-
-
- if (response.getStatus() != 204) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
- }
-
- private void updateVoteCountAtomically(String candidateName, int count) {
- /*
- * create lock for the candidate. The music API dictates that the lock name must be of the
- * form keyspacename.tableName.primaryKeyName
- */
- System.out.println("trying to acquire lock!");
-
- String lockName = keyspaceName + ".votecount." + candidateName;
- lockNames.add(lockName);
- String lockId = createLock(lockName);
- while (acquireLock(lockId) != true);
-
- System.out.println("acquired lock!");
- // update candidate entry if you have the lock
- Map<String, Object> values = new HashMap<String, Object>();
- values.put("count", count);
-
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "critical");
- consistencyInfo.put("lockId", lockId);
-
- JsonInsert jIns = new JsonInsert();
- jIns.setValues(values);
- jIns.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount/rows?name=" + candidateName;
- System.out.println(url);
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .put(ClientResponse.class, jIns);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException(
- "Failed : HTTP error code : " + response.getStatus() + "url:" + url);
-
- // release lock now that the operation is done
- unlock(lockId);
-
- }
-
- private void deleteCandidateEntryEventually(String candidateName) {
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonDelete jDel = new JsonDelete();
- jDel.setConsistencyInfo(consistencyInfo);
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount/rows?name=" + candidateName;
- System.out.println(url);
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").type("application/json")
- .delete(ClientResponse.class, jDel);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException(
- "Failed : HTTP error code : " + response.getStatus() + "url:" + url);
-
- }
-
- public Map<String, Object> readVoteCountForCandidate(String candidateName) {
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount/rows?name=" + candidateName;
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- Map<String, Object> output = response.getEntity(Map.class);
- return output;
- }
-
- public Map<String, Object> readAllVotes() {
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
- String url = musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName
- + "/tables/votecount/rows";
- WebResource webResource = client.resource(url);
-
- ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
-
- Map<String, Object> output = response.getEntity(Map.class);
- return output;
- }
-
-
- /*
- * Unable to use this because of the error: Exception in thread "main"
- * com.sun.jersey.api.client.ClientHandlerException: java.net.ProtocolException: HTTP method
- * DELETE doesn't support output. Seems to be a error in the rest java combination according to
- * the interwebs
- */
- private void dropKeySpace() {
- Map<String, String> consistencyInfo = new HashMap<String, String>();
- consistencyInfo.put("type", "eventual");
-
- JsonKeySpace jsonKp = new JsonKeySpace();
- jsonKp.setConsistencyInfo(consistencyInfo);
-
- ClientConfig clientConfig = new DefaultClientConfig();
-
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
-
- Client client = Client.create(clientConfig);
-
- WebResource webResource = client
- .resource(musicHandle.getMusicNodeURL() + "/keyspaces/" + keyspaceName);
-
- ClientResponse response =
- webResource.type("application/json").delete(ClientResponse.class, jsonKp);
-
- if (response.getStatus() < 200 || response.getStatus() > 299)
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- private void deleteLock(String lockName) {
- Client client = Client.create();
- WebResource webResource = client
- .resource(musicHandle.getMusicNodeURL() + "/locks/delete/" + lockName);
-
- ClientResponse response = webResource.delete(ClientResponse.class);
-
-
- if (response.getStatus() != 204) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
- }
-
- private void resetMusic() {
- Client client = Client.create();
- WebResource webResource = client.resource(musicHandle.getMusicNodeURL() + "/reset");
-
- ClientResponse response = webResource.delete(ClientResponse.class);
-
-
- if (response.getStatus() != 204) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- }
-
- public void deleteAllLocks() {
- for (String lockName : lockNames) {
- deleteLock(lockName);
- }
- }
-
-
- public void bootStrap() {
- checkMusicVersion();
- createVotingKeyspace();
-
-
- createVotingTable();
-
-
- // the next few lines just create an entry in the voting table for all these candidates with
- // vote count as 0
- createEntryForCandidate("Popeye");
-
- createEntryForCandidate("Judy");
-
- createEntryForCandidate("Flash");
-
- createEntryForCandidate("Mickey");
-
- }
-
- public void overAllTests() {
- // update the count atomically
- updateVoteCountAtomically("Popeye", 5);
-
- updateVoteCountAtomically("Judy", 7);
-
- updateVoteCountAtomically("Mickey", 8);
-
- updateVoteCountAtomically("Flash", 2);
-
-
- // read votecount
- System.out.println(readAllVotes());
-
- System.out.println(readVoteCountForCandidate("Popeye"));
-
- System.out.println(readVoteCountForCandidate("Flash"));
-
- deleteCandidateEntryEventually("Mickey");
-
- System.out.println(readAllVotes());
-
- dropKeySpace();
-
- deleteAllLocks();
- }
-
- public void flipTest() {
- checkMusicVersion();
- }
-
- public static String executeBashScript(String pathToScript, String arg1, String arg2) {
- try {
- ProcessBuilder pb = new ProcessBuilder(pathToScript, arg1, arg2);
- final Process process = pb.start();
- InputStream is = process.getInputStream();
- InputStreamReader isr = new InputStreamReader(is);
- BufferedReader br = new BufferedReader(isr);
- return br.readLine();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public static void main(String[] args) {
- long start = System.currentTimeMillis();
- for (int i = 0; i < 2; ++i) {
- TestMusicE2E vHandle = new TestMusicE2E(args);
- vHandle.overAllTests();
-
- System.out.println("=====================================");
- System.out.println("Test no." + i + " completed:");
- }
- long diff = System.currentTimeMillis() - start;
- System.out.println(diff);
- }
-
-
-}
diff --git a/src/test/java/org/onap/music/unittests/CassandraCQL.java b/src/test/java/org/onap/music/unittests/CassandraCQL.java
index ed8f13f4..a4c250c2 100644
--- a/src/test/java/org/onap/music/unittests/CassandraCQL.java
+++ b/src/test/java/org/onap/music/unittests/CassandraCQL.java
@@ -232,13 +232,14 @@ public class CassandraCQL {
try {
try {
- EmbeddedCassandraServerHelper.startEmbeddedCassandra(60000);
+ EmbeddedCassandraServerHelper.startEmbeddedCassandra(80000);
} catch (ConfigurationException | TTransportException | IOException e) {
System.out.println(e.getMessage());
}
cluster = new Cluster.Builder().addContactPoint(address).withPort(9142).build();
+ cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(20000);
session = cluster.connect();
break;
diff --git a/src/test/java/org/onap/music/unittests/MusicDataStoreTest.java b/src/test/java/org/onap/music/unittests/MusicDataStoreTest.java
index 520a5fe4..16d2af02 100644
--- a/src/test/java/org/onap/music/unittests/MusicDataStoreTest.java
+++ b/src/test/java/org/onap/music/unittests/MusicDataStoreTest.java
@@ -22,6 +22,7 @@
package org.onap.music.unittests;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -34,113 +35,128 @@ import org.onap.music.exceptions.MusicServiceException;
import org.onap.music.datastore.MusicDataStore;
import org.onap.music.datastore.PreparedQueryObject;
+
+import com.datastax.driver.core.DataType;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
+import com.datastax.driver.core.TableMetadata;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MusicDataStoreTest {
- static MusicDataStore dataStore;
- static PreparedQueryObject testObject;
+ static MusicDataStore dataStore;
+ static PreparedQueryObject testObject;
- @BeforeClass
- public static void init() {
- dataStore = CassandraCQL.connectToEmbeddedCassandra();
+ @BeforeClass
+ public static void init() {
+ dataStore = CassandraCQL.connectToEmbeddedCassandra();
- }
+ }
- @AfterClass
- public static void close() throws MusicServiceException, MusicQueryException {
+ @AfterClass
+ public static void close() throws MusicServiceException, MusicQueryException {
- testObject = new PreparedQueryObject();
- testObject.appendQueryString(CassandraCQL.dropKeyspace);
- dataStore.executePut(testObject, "eventual");
- dataStore.close();
-
- }
-
- @Test
- public void Test1_SetUp() throws MusicServiceException, MusicQueryException {
- boolean result = false;
- testObject = new PreparedQueryObject();
- testObject.appendQueryString(CassandraCQL.createKeySpace);
- result = dataStore.executePut(testObject, "eventual");;
- testObject = new PreparedQueryObject();
- testObject.appendQueryString(CassandraCQL.createTableEmployees);
- result = dataStore.executePut(testObject, "eventual");
- assertEquals(true, result);
-
- }
-
- @Test
- public void Test2_ExecutePut_eventual_insert() throws MusicServiceException, MusicQueryException {
- testObject = CassandraCQL.setPreparedInsertQueryObject1();
- boolean result = dataStore.executePut(testObject, "eventual");
- assertEquals(true, result);
- }
-
- @Test
- public void Test3_ExecutePut_critical_insert() throws MusicServiceException, MusicQueryException {
- testObject = CassandraCQL.setPreparedInsertQueryObject2();
- boolean result = dataStore.executePut(testObject, "Critical");
- assertEquals(true, result);
- }
-
- @Test
- public void Test4_ExecutePut_eventual_update() throws MusicServiceException, MusicQueryException {
- testObject = CassandraCQL.setPreparedUpdateQueryObject();
- boolean result = false;
- result = dataStore.executePut(testObject, "eventual");
- assertEquals(true, result);
- }
-
- @Test
- public void Test5_ExecuteEventualGet() throws MusicServiceException, MusicQueryException {
- testObject = new PreparedQueryObject();
- testObject.appendQueryString(CassandraCQL.selectALL);
- boolean result = false;
- int count = 0;
- ResultSet output = null;
- output = dataStore.executeEventualGet(testObject);
- System.out.println(output);
- ;
- for (Row row : output) {
- count++;
- System.out.println(row.toString());
- }
- if (count == 2) {
- result = true;
- }
- assertEquals(true, result);
- }
-
- @Test
- public void Test6_ExecuteCriticalGet() throws MusicServiceException, MusicQueryException {
- testObject = CassandraCQL.setPreparedGetQuery();
- boolean result = false;
- int count = 0;
- ResultSet output = null;
- output = dataStore.executeCriticalGet(testObject);
- System.out.println(output);
- ;
- for (Row row : output) {
- count++;
- System.out.println(row.toString());
- }
- if (count == 1) {
- result = true;
- }
- assertEquals(true, result);
- }
-
- @Test(expected = NullPointerException.class)
- public void Test7_exception() {
- PreparedQueryObject queryObject = null;
- try {
- dataStore.executePut(queryObject, "critical");
- } catch (MusicQueryException | MusicServiceException e) {
- System.out.println(e.getMessage());
- }
-
- }
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.dropKeyspace);
+ dataStore.executePut(testObject, "eventual");
+ dataStore.close();
+
+ }
+
+ @Test
+ public void Test1_SetUp() throws MusicServiceException, MusicQueryException {
+ boolean result = false;
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.createKeySpace);
+ result = dataStore.executePut(testObject, "eventual");;
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.createTableEmployees);
+ result = dataStore.executePut(testObject, "eventual");
+ assertEquals(true, result);
+
+ }
+
+ @Test
+ public void Test2_ExecutePut_eventual_insert() throws MusicServiceException, MusicQueryException {
+ testObject = CassandraCQL.setPreparedInsertQueryObject1();
+ boolean result = dataStore.executePut(testObject, "eventual");
+ assertEquals(true, result);
+ }
+
+ @Test
+ public void Test3_ExecutePut_critical_insert() throws MusicServiceException, MusicQueryException {
+ testObject = CassandraCQL.setPreparedInsertQueryObject2();
+ boolean result = dataStore.executePut(testObject, "Critical");
+ assertEquals(true, result);
+ }
+
+ @Test
+ public void Test4_ExecutePut_eventual_update() throws MusicServiceException, MusicQueryException {
+ testObject = CassandraCQL.setPreparedUpdateQueryObject();
+ boolean result = false;
+ result = dataStore.executePut(testObject, "eventual");
+ assertEquals(true, result);
+ }
+
+ @Test
+ public void Test5_ExecuteEventualGet() throws MusicServiceException, MusicQueryException {
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.selectALL);
+ boolean result = false;
+ int count = 0;
+ ResultSet output = null;
+ output = dataStore.executeEventualGet(testObject);
+ System.out.println(output);
+ ;
+ for (Row row : output) {
+ count++;
+ System.out.println(row.toString());
+ }
+ if (count == 2) {
+ result = true;
+ }
+ assertEquals(true, result);
+ }
+
+ @Test
+ public void Test6_ExecuteCriticalGet() throws MusicServiceException, MusicQueryException {
+ testObject = CassandraCQL.setPreparedGetQuery();
+ boolean result = false;
+ int count = 0;
+ ResultSet output = null;
+ output = dataStore.executeCriticalGet(testObject);
+ System.out.println(output);
+ ;
+ for (Row row : output) {
+ count++;
+ System.out.println(row.toString());
+ }
+ if (count == 1) {
+ result = true;
+ }
+ assertEquals(true, result);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void Test7_exception() {
+ PreparedQueryObject queryObject = null;
+ try {
+ dataStore.executePut(queryObject, "critical");
+ } catch (MusicQueryException | MusicServiceException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+
+ @Test
+ public void Test8_columnDataType() {
+ DataType data = dataStore.returnColumnDataType("testCassa", "employees", "empName");
+ String datatype = data.toString();
+ assertEquals("text",datatype);
+ }
+
+ @Test
+ public void Test8_columnMetdaData() {
+ TableMetadata data = dataStore.returnColumnMetadata("testCassa", "employees");
+ assertNotNull(data);
+ }
}
diff --git a/src/test/java/org/onap/music/unittests/MusicUtilTest.java b/src/test/java/org/onap/music/unittests/MusicUtilTest.java
index 35ec3791..47edc1e3 100644
--- a/src/test/java/org/onap/music/unittests/MusicUtilTest.java
+++ b/src/test/java/org/onap/music/unittests/MusicUtilTest.java
@@ -73,11 +73,11 @@ public class MusicUtilTest {
assertEquals(MusicUtil.getAllIds().get(0),"1");
}
- @Test
- public void testGetPublicIp() {
- MusicUtil.setPublicIp("10.0.0.1");
- assertEquals(MusicUtil.getPublicIp(),"10.0.0.1");
- }
+// @Test
+// public void testGetPublicIp() {
+// MusicUtil.setPublicIp("10.0.0.1");
+// assertEquals(MusicUtil.getPublicIp(),"10.0.0.1");
+// }
@Test
public void testGetAllPublicIps() {
@@ -124,11 +124,11 @@ public class MusicUtilTest {
assertEquals(MusicUtil.getVersion(),"1.0.0");
}
- @Test
+ /*@Test
public void testGetMyZkHost() {
MusicUtil.setMyZkHost("10.0.0.2");
assertEquals(MusicUtil.getMyZkHost(),"10.0.0.2");
- }
+ }*/
@Test
public void testGetMyCassaHost() {
@@ -169,7 +169,7 @@ public class MusicUtilTest {
}
@Test
- public void testConvertToCQLDataType() {
+ public void testConvertToCQLDataType() throws Exception {
Map<String,Object> myMap = new HashMap<String,Object>();
myMap.put("name","tom");
assertEquals(MusicUtil.convertToCQLDataType(DataType.varchar(),"Happy People"),"'Happy People'");
@@ -179,7 +179,7 @@ public class MusicUtilTest {
}
@Test
- public void testConvertToActualDataType() {
+ public void testConvertToActualDataType() throws Exception {
assertEquals(MusicUtil.convertToActualDataType(DataType.varchar(),"Happy People"),"Happy People");
assertEquals(MusicUtil.convertToActualDataType(DataType.uuid(),"29dc2afa-c2c0-47ae-afae-e72a645308ab"),UUID.fromString("29dc2afa-c2c0-47ae-afae-e72a645308ab"));
assertEquals(MusicUtil.convertToActualDataType(DataType.varint(),"1234"),BigInteger.valueOf(Long.parseLong("1234")));
@@ -195,7 +195,7 @@ public class MusicUtilTest {
}
@Test
- public void testJsonMaptoSqlString() {
+ public void testJsonMaptoSqlString() throws Exception {
Map<String,Object> myMap = new HashMap<>();
myMap.put("name","tom");
myMap.put("value",5);
diff --git a/src/test/java/org/onap/music/unittests/TestMusicCore.java b/src/test/java/org/onap/music/unittests/TestMusicCore.java
index 2deb3496..c571085a 100644
--- a/src/test/java/org/onap/music/unittests/TestMusicCore.java
+++ b/src/test/java/org/onap/music/unittests/TestMusicCore.java
@@ -37,12 +37,14 @@ import org.onap.music.lockingservice.MusicLockState;
import org.onap.music.lockingservice.MusicLockingService;
import org.onap.music.lockingservice.MusicLockState.LockStatus;
import org.onap.music.main.MusicCore;
+import org.onap.music.main.MusicUtil;
import org.onap.music.main.ResultType;
import org.onap.music.main.ReturnType;
import org.onap.music.main.MusicCore.Condition;
import org.onap.music.datastore.MusicDataStore;
import org.onap.music.datastore.PreparedQueryObject;
import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Session;
@RunWith(MockitoJUnitRunner.class)
public class TestMusicCore {
@@ -55,6 +57,9 @@ public class TestMusicCore {
@Mock
private PreparedQueryObject preparedQueryObject;
+
+ @Mock
+ private Session session;
@Before
public void setUp() {
@@ -145,6 +150,29 @@ public class TestMusicCore {
assertEquals(lock.getMessage(), "Lockid doesn't exist");
Mockito.verify(mLockHandle).lockIdExists("bs1");
}
+
+ @Test
+ public void testAcquireLockWithLeasewithLease() throws MusicLockingException {
+ MusicLockState musicLockState = new MusicLockState(LockStatus.LOCKED, "id1");
+ musicLockState.setLeasePeriod(0);
+ ReturnType expectedResult = new ReturnType(ResultType.SUCCESS, "Succes");
+ Mockito.when(mLockHandle.getLockState("ks1.tn1.pk1")).thenReturn(musicLockState);
+ Mockito.when(mLockHandle.isMyTurn("id1")).thenReturn(true);
+ ReturnType actualResult = MusicCore.acquireLockWithLease("ks1.tn1.pk1", "id1", 6000);
+ assertEquals(expectedResult.getResult(), actualResult.getResult());
+ Mockito.verify(mLockHandle).isMyTurn("id1");
+ Mockito.verify(mLockHandle, Mockito.atLeastOnce()).getLockState("ks1.tn1.pk1");
+ }
+
+ @Test
+ public void testAcquireLockWithLeasewithException() throws MusicLockingException {
+ ReturnType expectedResult = new ReturnType(ResultType.FAILURE, "failure");
+ Mockito.when(mLockHandle.getLockState("ks1.tn1.pk1")).thenThrow(new MusicLockingException());
+ Mockito.when(mLockHandle.isMyTurn("id1")).thenReturn(true);
+ ReturnType actualResult = MusicCore.acquireLockWithLease("ks1.tn1.pk1", "id1", 6000);
+ assertEquals(expectedResult.getResult(), actualResult.getResult());
+ Mockito.verify(mLockHandle, Mockito.atLeastOnce()).getLockState("ks1.tn1.pk1");
+ }
@Test
public void testAcquireLockWithLeasewithLockStatusLOCKED() throws MusicLockingException {
@@ -183,15 +211,17 @@ public class TestMusicCore {
Mockito.verify(mLockHandle).getLockState("ks1.tn1.pk1");
}
- /*
- * @Test public void testQuorumGet() { mDstoreHandle = Mockito.mock(MusicDataStore.class); rs =
- * Mockito.mock(ResultSet.class);
- * Mockito.when(mDstoreHandle.executeCriticalGet("qu1")).thenReturn(rs); ResultSet rs1 =
- * MusicCore.quorumGet("qu1"); assertNotNull(rs1);
- * Mockito.verify(mDstoreHandle).executeCriticalGet("qu1");
- *
- * }
- */
+ @Test
+ public void testQuorumGet() throws MusicServiceException, MusicQueryException {
+ preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
+ mDstoreHandle = Mockito.mock(MusicDataStore.class);
+ rs = Mockito.mock(ResultSet.class);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
+ Mockito.when(mDstoreHandle.executeCriticalGet(preparedQueryObject)).thenReturn(rs);
+ ResultSet rs1 = MusicCore.quorumGet(preparedQueryObject);
+ assertNotNull(rs1);
+ }
@Test
public void testGetLockNameFromId() {
@@ -244,6 +274,8 @@ public class TestMusicCore {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
ReturnType expectedResult = new ReturnType(ResultType.SUCCESS, "Succes");
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mDstoreHandle.executePut(preparedQueryObject, "eventual")).thenReturn(true);
ReturnType actualResult = MusicCore.eventualPut(preparedQueryObject);
assertEquals(expectedResult.getResult(), actualResult.getResult());
@@ -256,19 +288,24 @@ public class TestMusicCore {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
ReturnType expectedResult = new ReturnType(ResultType.FAILURE, "Failure");
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mDstoreHandle.executePut(preparedQueryObject, "eventual")).thenReturn(false);
ReturnType actualResult = MusicCore.eventualPut(preparedQueryObject);
assertEquals(expectedResult.getResult(), actualResult.getResult());
Mockito.verify(mDstoreHandle).executePut(preparedQueryObject, "eventual");
+ //Mockito.verify(mDstoreHandle).executePut(preparedQueryObject, MusicUtil.EVENTUAL);
}
@Test
public void testCriticalPutPreparedQuerywithValidLockId()
- throws MusicServiceException, MusicQueryException, MusicLockingException {
+ throws Exception {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
MusicLockState musicLockState = new MusicLockState(LockStatus.UNLOCKED, "id1");
Mockito.when(condition.testCondition()).thenReturn(true);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
ReturnType expectedResult = new ReturnType(ResultType.SUCCESS, "Succes");
Mockito.when(mLockHandle.getLockState("ks1" + "." + "tn1" + "." + "pk1"))
.thenReturn(musicLockState);
@@ -296,7 +333,7 @@ public class TestMusicCore {
}
@Test
- public void testCriticalPutPreparedQuerywithvalidLockIdandTestConditionFalse() throws MusicLockingException {
+ public void testCriticalPutPreparedQuerywithvalidLockIdandTestConditionFalse() throws Exception {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
MusicLockState musicLockState = new MusicLockState(LockStatus.UNLOCKED, "id1");
@@ -315,6 +352,8 @@ public class TestMusicCore {
public void testNonKeyRelatedPutPreparedQuery() throws Exception {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mDstoreHandle.executePut(preparedQueryObject, "consistency")).thenReturn(true);
Boolean result = MusicCore.nonKeyRelatedPut(preparedQueryObject, "consistency");
assertTrue(result);
@@ -322,12 +361,14 @@ public class TestMusicCore {
}
@Test
- public void testAtomicPutPreparedQuery() throws MusicServiceException, MusicQueryException, MusicLockingException {
+ public void testAtomicPutPreparedQuery() throws Exception {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
Mockito.when(mLockHandle.createLockId("/" + "ks1.tn1.pk1")).thenReturn("id1");
MusicLockState musicLockState = new MusicLockState(LockStatus.LOCKED, "id1");
ReturnType expectedResult = new ReturnType(ResultType.SUCCESS, "Succes");
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mLockHandle.getLockState("ks1.tn1.pk1")).thenReturn(musicLockState);
Mockito.when(mLockHandle.isMyTurn("id1")).thenReturn(true);
Mockito.when(condition.testCondition()).thenReturn(true);
@@ -365,6 +406,8 @@ public class TestMusicCore {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
rs = Mockito.mock(ResultSet.class);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mLockHandle.createLockId("/" + "ks1.tn1.pk1")).thenReturn("id1");
MusicLockState musicLockState = new MusicLockState(LockStatus.LOCKED, "id1");
Mockito.when(mLockHandle.getLockState("ks1.tn1.pk1")).thenReturn(musicLockState);
@@ -401,6 +444,8 @@ public class TestMusicCore {
mDstoreHandle = Mockito.mock(MusicDataStore.class);
rs = Mockito.mock(ResultSet.class);
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mDstoreHandle.executeEventualGet(preparedQueryObject)).thenReturn(rs);
ResultSet rs1 = MusicCore.get(preparedQueryObject);
assertNotNull(rs1);
@@ -414,6 +459,8 @@ public class TestMusicCore {
preparedQueryObject = Mockito.mock(PreparedQueryObject.class);
MusicLockState musicLockState = new MusicLockState(LockStatus.UNLOCKED, "id1");
rs = Mockito.mock(ResultSet.class);
+ session = Mockito.mock(Session.class);
+ Mockito.when(mDstoreHandle.getSession()).thenReturn(session);
Mockito.when(mLockHandle.getLockState("ks1" + "." + "tn1" + "." + "pk1"))
.thenReturn(musicLockState);
Mockito.when(mDstoreHandle.executeCriticalGet(preparedQueryObject)).thenReturn(rs);
diff --git a/src/test/java/org/onap/music/unittests/TestMusicCoreIntegration.java b/src/test/java/org/onap/music/unittests/TestMusicCoreIntegration.java
new file mode 100644
index 00000000..823badaa
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/TestMusicCoreIntegration.java
@@ -0,0 +1,176 @@
+/*
+ * ============LICENSE_START========================================== org.onap.music
+ * =================================================================== Copyright (c) 2017 AT&T
+ * Intellectual Property ===================================================================
+ * 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.unittests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import java.io.File;
+import java.util.List;
+import org.apache.curator.test.TestingServer;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.exceptions.MusicQueryException;
+import org.onap.music.exceptions.MusicServiceException;
+import org.onap.music.lockingservice.MusicLockState;
+import org.onap.music.lockingservice.MusicLockingService;
+import org.onap.music.lockingservice.MusicLockState.LockStatus;
+import org.onap.music.main.MusicCore;
+import org.onap.music.main.MusicUtil;
+import org.onap.music.main.ResultType;
+import org.onap.music.main.ReturnType;
+import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class TestMusicCoreIntegration {
+
+ static TestingServer zkServer;
+ static PreparedQueryObject testObject;
+ static String lockId = null;
+ static String lockName = "ks1.tb1.pk1";
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ MusicCore.mDstoreHandle = CassandraCQL.connectToEmbeddedCassandra();
+ zkServer = new TestingServer(2181, new File("/tmp/zk"));
+ MusicCore.mLockHandle = new MusicLockingService();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("####Port:" + zkServer.getPort());
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ System.out.println("After class");
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.dropKeyspace);
+ MusicCore.eventualPut(testObject);
+ MusicCore.deleteLock(lockName);
+ MusicCore.mDstoreHandle.close();
+ MusicCore.mLockHandle.getzkLockHandle().close();
+ MusicCore.mLockHandle.close();
+ zkServer.stop();
+
+ }
+
+ @Test
+ public void Test1_SetUp() throws MusicServiceException, MusicQueryException {
+ MusicCore.mLockHandle = new MusicLockingService();
+ boolean result = false;
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.createKeySpace);
+ MusicCore.eventualPut(testObject);
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(CassandraCQL.createTableEmployees);
+ result = MusicCore.nonKeyRelatedPut(testObject, MusicUtil.EVENTUAL);
+ assertTrue(result);
+ }
+
+ @Test
+ public void Test2_atomicPut() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject = CassandraCQL.setPreparedInsertQueryObject1();
+ ReturnType returnType = MusicCore.atomicPut("testCassa", "employees", "Mr Test one",
+ testObject, null);
+ assertEquals(ResultType.SUCCESS, returnType.getResult());
+ }
+
+ @Test
+ public void Test3_atomicPutWithDeleteLock() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject = CassandraCQL.setPreparedInsertQueryObject2();
+ ReturnType returnType = MusicCore.atomicPutWithDeleteLock("testCassa", "employees",
+ "Mr Test two", testObject, null);
+ assertEquals(ResultType.SUCCESS, returnType.getResult());
+ }
+
+ @Test
+ public void Test4_atomicGetWithDeleteLock() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject = CassandraCQL.setPreparedGetQuery();
+ ResultSet resultSet = MusicCore.atomicGetWithDeleteLock("testCassa", "employees",
+ "Mr Test one", testObject);
+ List<Row> rows = resultSet.all();
+ assertEquals(1, rows.size());
+ }
+
+ @Test
+ public void Test5_atomicGet() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject = CassandraCQL.setPreparedGetQuery();
+ ResultSet resultSet =
+ MusicCore.atomicGet("testCassa", "employees", "Mr Test two", testObject);
+ List<Row> rows = resultSet.all();
+ assertEquals(1, rows.size());
+ }
+
+ @Test
+ public void Test6_createLockReference() throws Exception {
+ lockId = MusicCore.createLockReference(lockName);
+ assertNotNull(lockId);
+ }
+
+ @Test
+ public void Test7_acquireLockwithLease() throws Exception {
+ ReturnType lockLeaseStatus = MusicCore.acquireLockWithLease(lockName, lockId, 1000);
+ assertEquals(ResultType.SUCCESS, lockLeaseStatus.getResult());
+ }
+
+ @Test
+ public void Test8_acquireLock() throws Exception {
+ ReturnType lockStatus = MusicCore.acquireLock(lockName, lockId);
+ assertEquals(ResultType.SUCCESS, lockStatus.getResult());
+ }
+
+ @Test
+ public void Test9_release() throws Exception {
+ MusicLockState musicLockState = new MusicLockState(LockStatus.LOCKED, "id1");
+ MusicLockState musicLockState1 = new MusicLockState(LockStatus.UNLOCKED, "id1");
+ MusicCore.whoseTurnIsIt(lockName);
+ MusicLockState mls = MusicCore.getMusicLockState(lockName);
+ boolean voluntaryRelease = true;
+ MusicLockState mls1 = MusicCore.releaseLock(lockId, voluntaryRelease);
+ assertEquals(musicLockState.getLockStatus(), mls.getLockStatus());
+ assertEquals(musicLockState1.getLockStatus(), mls1.getLockStatus());
+ }
+
+ @Test
+ public void Test10_create() {
+ MusicCore.pureZkCreate("/nodeName");
+ }
+
+ @Test
+ public void Test11_write() {
+ MusicCore.pureZkWrite("nodeName", "I'm Test".getBytes());
+ }
+
+ @Test
+ public void Test12_read() {
+ byte[] data = MusicCore.pureZkRead("nodeName");
+ String data1 = new String(data);
+ assertEquals("I'm Test", data1);
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/TestRestMusicData.java b/src/test/java/org/onap/music/unittests/TestRestMusicData.java
new file mode 100644
index 00000000..e4d06f70
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/TestRestMusicData.java
@@ -0,0 +1,450 @@
+/*
+ * ============LICENSE_START========================================== org.onap.music
+ * =================================================================== Copyright (c) 2017 AT&T
+ * Intellectual Property ===================================================================
+ * 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.unittests;
+
+import static org.junit.Assert.assertEquals;
+import static org.onap.music.main.MusicCore.mLockHandle;
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriInfo;
+import org.apache.curator.test.TestingServer;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.datastore.jsonobjects.JsonDelete;
+import org.onap.music.datastore.jsonobjects.JsonInsert;
+import org.onap.music.datastore.jsonobjects.JsonKeySpace;
+import org.onap.music.datastore.jsonobjects.JsonOnboard;
+import org.onap.music.datastore.jsonobjects.JsonSelect;
+import org.onap.music.datastore.jsonobjects.JsonTable;
+import org.onap.music.datastore.jsonobjects.JsonUpdate;
+import org.onap.music.lockingservice.MusicLockingService;
+import org.onap.music.main.CachingUtil;
+import org.onap.music.main.MusicCore;
+import org.onap.music.main.MusicUtil;
+import org.onap.music.rest.RestMusicAdminAPI;
+import org.onap.music.rest.RestMusicDataAPI;
+import org.onap.music.rest.RestMusicLocksAPI;
+import com.datastax.driver.core.DataType;
+import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
+import com.sun.jersey.core.util.MultivaluedMapImpl;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+@RunWith(MockitoJUnitRunner.class)
+public class TestRestMusicData {
+
+ RestMusicDataAPI data = new RestMusicDataAPI();
+ RestMusicAdminAPI admin = new RestMusicAdminAPI();
+ RestMusicLocksAPI lock = new RestMusicLocksAPI();
+ static PreparedQueryObject testObject;
+ static TestingServer zkServer;
+
+ @Mock
+ HttpServletResponse http;
+
+ @Mock
+ UriInfo info;
+
+ static String appName = "TestApp";
+ static String userId = "TestUser";
+ static String password = "TestPassword";
+ static boolean isAAF = false;
+ static UUID uuid = UUID.fromString("abc66ccc-d857-4e90-b1e5-df98a3d40ce6");
+ static String keyspaceName = "testCassa";
+ static String tableName = "employees";
+ static String xLatestVersion = "X-latestVersion";
+ static String onboardUUID = null;
+ static String lockId = null;
+ static String lockName = "testCassa.employees.sample3";
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ MusicCore.mDstoreHandle = CassandraCQL.connectToEmbeddedCassandra();
+ zkServer = new TestingServer(2181, new File(" mp/zk"));
+ MusicCore.mLockHandle = new MusicLockingService();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ System.out.println("After class");
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString("DROP KEYSPACE IF EXISTS " + keyspaceName);
+ MusicCore.eventualPut(testObject);
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString("DROP KEYSPACE IF EXISTS admin");
+ MusicCore.eventualPut(testObject);
+ MusicCore.mDstoreHandle.close();
+ MusicCore.mLockHandle.getzkLockHandle().close();
+ MusicCore.mLockHandle.close();
+ zkServer.stop();
+ }
+
+ @Test
+ public void Test1_createKeyspace() throws Exception {
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString("CREATE KEYSPACE admin WITH REPLICATION = "
+ + "{'class' : 'SimpleStrategy' , "
+ + "'replication_factor': 1} AND DURABLE_WRITES = true");
+ MusicCore.eventualPut(testObject);
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(
+ "CREATE TABLE admin.keyspace_master (" + " uuid uuid, keyspace_name text,"
+ + " application_name text, is_api boolean,"
+ + " password text, username text,"
+ + " is_aaf boolean, PRIMARY KEY (uuid)\n" + ");");
+ MusicCore.eventualPut(testObject);
+
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(
+ "INSERT INTO admin.keyspace_master (uuid, keyspace_name, application_name, is_api, "
+ + "password, username, is_aaf) VALUES (?,?,?,?,?,?,?)");
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.uuid(), uuid));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(),
+ MusicUtil.DEFAULTKEYSPACENAME));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), appName));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), "True"));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), password));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), userId));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), isAAF));
+ MusicCore.eventualPut(testObject);
+
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(
+ "INSERT INTO admin.keyspace_master (uuid, keyspace_name, application_name, is_api, "
+ + "password, username, is_aaf) VALUES (?,?,?,?,?,?,?)");
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.uuid(),
+ UUID.fromString("bbc66ccc-d857-4e90-b1e5-df98a3d40de6")));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(),
+ MusicUtil.DEFAULTKEYSPACENAME));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), "TestApp1"));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), "True"));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), password));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), "TestUser1"));
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.cboolean(), isAAF));
+ MusicCore.eventualPut(testObject);
+
+ testObject = new PreparedQueryObject();
+ testObject.appendQueryString(
+ "select uuid from admin.keyspace_master where application_name = ? allow filtering");
+ testObject.addValue(MusicUtil.convertToActualDataType(DataType.text(), appName));
+ ResultSet rs = MusicCore.get(testObject);
+ List<Row> rows = rs.all();
+ if (rows.size() > 0) {
+ System.out.println("#######UUID is:" + rows.get(0).getUUID("uuid"));
+ }
+ }
+
+ @Test
+ public void Test2_createKeyspace() throws Exception {
+ JsonKeySpace jsonKeyspace = new JsonKeySpace();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, Object> replicationInfo = new HashMap<>();
+ consistencyInfo.put("type", "eventual");
+ replicationInfo.put("class", "SimpleStrategy");
+ replicationInfo.put("replication_factor", 1);
+ jsonKeyspace.setConsistencyInfo(consistencyInfo);
+ jsonKeyspace.setDurabilityOfWrites("true");
+ jsonKeyspace.setKeyspaceName(keyspaceName);
+ jsonKeyspace.setReplicationInfo(replicationInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.createKeySpace("1", "1", "1", null, appName, userId,
+ password, jsonKeyspace, keyspaceName, http);
+ assertEquals(uuid.toString(), resultMap.get("aid"));
+ }
+
+ @Test
+ public void Test3_createKeyspace1() throws Exception {
+ JsonKeySpace jsonKeyspace = new JsonKeySpace();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, Object> replicationInfo = new HashMap<>();
+ consistencyInfo.put("type", "eventual");
+ replicationInfo.put("class", "SimpleStrategy");
+ replicationInfo.put("replication_factor", 1);
+ jsonKeyspace.setConsistencyInfo(consistencyInfo);
+ jsonKeyspace.setDurabilityOfWrites("true");
+ jsonKeyspace.setKeyspaceName("TestApp1");
+ jsonKeyspace.setReplicationInfo(replicationInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.createKeySpace("1", "1", "1", null, "TestApp1",
+ "TestUser1", password, jsonKeyspace, keyspaceName, http);
+ System.out.println("#######status is " + resultMap.get("Exception"));
+ assertEquals("Couldn't create keyspace. Please make sure all the information is correct.",
+ resultMap.get("Exception"));
+ }
+
+ @Test
+ public void Test3_createTable() throws Exception {
+ JsonTable jsonTable = new JsonTable();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, String> fields = new HashMap<>();
+ fields.put("uuid", "text");
+ fields.put("emp_name", "text");
+ fields.put("emp_salary", "varint");
+ fields.put("PRIMARY KEY", "(emp_name)");
+ consistencyInfo.put("type", "eventual");
+ jsonTable.setConsistencyInfo(consistencyInfo);
+ jsonTable.setKeyspaceName(keyspaceName);
+ jsonTable.setPrimaryKey("emp_name");
+ jsonTable.setTableName(tableName);
+ jsonTable.setFields(fields);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.createTable("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password,
+ jsonTable, keyspaceName, tableName, http);
+ assertEquals("SUCCESS", resultMap.get("status"));
+ }
+
+ @Test
+ public void Test4_insertIntoTable() throws Exception {
+ JsonInsert jsonInsert = new JsonInsert();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, Object> values = new HashMap<>();
+ values.put("uuid", "cfd66ccc-d857-4e90-b1e5-df98a3d40cd6");
+ values.put("emp_name", "testName");
+ values.put("emp_salary", 500);
+ consistencyInfo.put("type", "eventual");
+ jsonInsert.setConsistencyInfo(consistencyInfo);
+ jsonInsert.setKeyspaceName(keyspaceName);
+ jsonInsert.setTableName(tableName);
+ jsonInsert.setValues(values);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.insertIntoTable("1", "1", "1", "abc66ccc-d857-4e90-b1e5-df98a3d40ce6",
+ appName, userId, password, jsonInsert, keyspaceName, tableName, http);
+ assertEquals("Success", resultMap.get("result"));
+ }
+
+ @Test
+ public void Test4_insertIntoTable2() throws Exception {
+ JsonInsert jsonInsert = new JsonInsert();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, Object> values = new HashMap<>();
+ values.put("uuid", "cfd66ccc-d857-4e90-b1e5-df98a3d40cd6");
+ values.put("emp_name", "test1");
+ values.put("emp_salary", 1500);
+ consistencyInfo.put("type", "eventual");
+ jsonInsert.setConsistencyInfo(consistencyInfo);
+ jsonInsert.setKeyspaceName(keyspaceName);
+ jsonInsert.setTableName(tableName);
+ jsonInsert.setValues(values);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.insertIntoTable("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password,
+ jsonInsert, keyspaceName, tableName, http);
+ assertEquals("Success", resultMap.get("result"));
+ }
+
+ @Test
+ public void Test5_updateTable() throws Exception {
+ JsonUpdate jsonUpdate = new JsonUpdate();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ MultivaluedMap<String, String> row = new MultivaluedMapImpl();
+ Map<String, Object> values = new HashMap<>();
+ row.add("emp_name", "testName");
+ values.put("emp_salary", 2500);
+ consistencyInfo.put("type", "atomic");
+ jsonUpdate.setConsistencyInfo(consistencyInfo);
+ jsonUpdate.setKeyspaceName(keyspaceName);
+ jsonUpdate.setTableName(tableName);
+ jsonUpdate.setValues(values);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Mockito.when(info.getQueryParameters()).thenReturn(row);
+ Map<String, Object> resultMap = data.updateTable("1", "1", "1", "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName,
+ userId, password, jsonUpdate, keyspaceName, tableName, info, http);
+ assertEquals("Success", resultMap.get("result"));
+ }
+
+ @Test
+ public void Test6_select() throws Exception {
+ JsonSelect jsonSelect = new JsonSelect();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ MultivaluedMap<String, String> row = new MultivaluedMapImpl();
+ row.add("emp_name", "testName");
+ consistencyInfo.put("type", "atomic");
+ jsonSelect.setConsistencyInfo(consistencyInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Mockito.when(info.getQueryParameters()).thenReturn(row);
+ Map<String, HashMap<String, Object>> resultMap = data.select("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password, keyspaceName, tableName, info, http);
+ assertEquals("2500", resultMap.get("row 0").get("emp_salary").toString());
+ }
+
+ @Test
+ public void Test6_selectCritical() throws Exception {
+ JsonInsert jsonInsert = new JsonInsert();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ MultivaluedMap<String, String> row = new MultivaluedMapImpl();
+ row.add("emp_name", "testName");
+ consistencyInfo.put("type", "atomic");
+ jsonInsert.setConsistencyInfo(consistencyInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Mockito.when(info.getQueryParameters()).thenReturn(row);
+ Map<String, HashMap<String, Object>> resultMap = data.selectCritical("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password, jsonInsert, keyspaceName, tableName,
+ info, http);
+ assertEquals("2500", resultMap.get("row 0").get("emp_salary").toString());
+ }
+
+ @Test
+ public void Test6_deleteFromTable() throws Exception {
+ JsonDelete jsonDelete = new JsonDelete();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ MultivaluedMap<String, String> row = new MultivaluedMapImpl();
+ row.add("emp_name", "test1");
+ consistencyInfo.put("type", "atomic");
+ jsonDelete.setConsistencyInfo(consistencyInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Mockito.when(info.getQueryParameters()).thenReturn(row);
+ Map<String, Object> resultMap = data.deleteFromTable("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password,
+ jsonDelete, keyspaceName, tableName, info, http);
+ assertEquals("Success", resultMap.get("result"));
+ }
+
+ @Test
+ public void Test7_dropTable() throws Exception {
+ JsonTable jsonTable = new JsonTable();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ consistencyInfo.put("type", "atomic");
+ jsonTable.setConsistencyInfo(consistencyInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.dropTable("1", "1", "1",
+ "abc66ccc-d857-4e90-b1e5-df98a3d40ce6", appName, userId, password,
+ jsonTable, keyspaceName, tableName, http);
+ assertEquals("SUCCESS", resultMap.get("status"));
+ }
+
+ @Test
+ public void Test8_deleteKeyspace() throws Exception {
+ JsonKeySpace jsonKeyspace = new JsonKeySpace();
+ Map<String, String> consistencyInfo = new HashMap<>();
+ Map<String, Object> replicationInfo = new HashMap<>();
+ consistencyInfo.put("type", "eventual");
+ replicationInfo.put("class", "SimpleStrategy");
+ replicationInfo.put("replication_factor", 1);
+ jsonKeyspace.setConsistencyInfo(consistencyInfo);
+ jsonKeyspace.setDurabilityOfWrites("true");
+ jsonKeyspace.setKeyspaceName("TestApp1");
+ jsonKeyspace.setReplicationInfo(replicationInfo);
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = data.dropKeySpace("1", "1", "1", "abc66ccc-d857-4e90-b1e5-df98a3d40ce6",
+ appName, userId, password, jsonKeyspace, keyspaceName, http);
+ assertEquals("SUCCESS", resultMap.get("status"));
+ }
+
+ @Test
+ public void Test6_onboard() throws Exception {
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser2");
+ jsonOnboard.setPassword("TestPassword2");
+ Map<String, Object> resultMap = admin.onboardAppWithMusic(jsonOnboard, http);
+ resultMap.containsKey("success");
+ onboardUUID = resultMap.get("Generated AID").toString();
+ assertEquals("Your application TestApp2 has been onboarded with MUSIC.", resultMap.get("Success"));
+ }
+
+ @Test
+ public void Test7_onboardSearch() throws Exception {
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setAid(onboardUUID);
+ Map<String, Object> resultMap = admin.getOnboardedInfoSearch(jsonOnboard, http);
+ resultMap.containsKey("success");
+ assertEquals(MusicUtil.DEFAULTKEYSPACENAME, resultMap.get(onboardUUID));
+
+ }
+
+ @Test
+ public void Test8_onboardUpdate() throws Exception {
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setIsAAF("false");
+ jsonOnboard.setUserId("TestUser3");
+ jsonOnboard.setPassword("TestPassword3");
+ jsonOnboard.setAid(onboardUUID);
+ Map<String, Object> resultMap = admin.updateOnboardApp(jsonOnboard, http);
+ resultMap.containsKey("success");
+ assertEquals("Your application has been updated successfully", resultMap.get("Success"));
+ }
+
+ @Test
+ public void Test9_onboardDelete() throws Exception {
+ JsonOnboard jsonOnboard = new JsonOnboard();
+ jsonOnboard.setAppname("TestApp2");
+ jsonOnboard.setAid(onboardUUID);
+ Map<String, Object> resultMap = admin.deleteOnboardApp(jsonOnboard, http);
+ resultMap.containsKey("success");
+ assertEquals("Your application has been deleted successfully", resultMap.get("Success"));
+ }
+
+ @Test
+ public void Test3_createLockReference() throws Exception {
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = lock.createLockReference(lockName, uuid.toString(), appName, null, null, http);
+ @SuppressWarnings("unchecked")
+ Map<String, Object> resultMap1 = (Map<String, Object>) resultMap.get("lock");
+ lockId = (String) resultMap1.get("lock");
+ assertEquals("SUCCESS", resultMap.get("status").toString());
+ }
+
+ @Test
+ public void Test4_accquireLock() throws Exception {
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = lock.accquireLock(lockId, uuid.toString(), appName, null, null, http);
+ assertEquals("SUCCESS", resultMap.get("status").toString());
+ }
+
+ @Test
+ public void Test5_currentLockHolder() throws Exception {
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = lock.currentLockHolder(lockName, uuid.toString(), appName, null, null, http);
+ assertEquals("SUCCESS", resultMap.get("status").toString());
+ }
+
+ @Test
+ public void Test7_unLock() throws Exception {
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = lock.unLock(lockId, uuid.toString(), appName, null, null, http);
+ assertEquals("SUCCESS", resultMap.get("status").toString());
+ }
+
+ @Test
+ public void Test8_delete() throws Exception {
+ Mockito.doNothing().when(http).addHeader(xLatestVersion, MusicUtil.getVersion());
+ Map<String, Object> resultMap = lock.deleteLock(lockName, uuid.toString(), appName, null, null, http);
+ assertEquals("SUCCESS", resultMap.get("status").toString());
+ }
+} \ No newline at end of file
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/AAFResponseTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/AAFResponseTest.java
new file mode 100644
index 00000000..354668c7
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/AAFResponseTest.java
@@ -0,0 +1,54 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.ArrayList;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.AAFResponse;
+import org.onap.music.datastore.jsonobjects.NameSpace;
+
+public class AAFResponseTest {
+
+ @Test
+ public void testGetNs() {
+ NameSpace ns = new NameSpace();
+ AAFResponse ar = new AAFResponse();
+ ArrayList<NameSpace> nsArray = new ArrayList<>();
+ ns.setName("tom");
+ ArrayList<String> admin = new ArrayList<>();
+ admin.add("admin1");
+ ns.setAdmin(admin);
+ nsArray.add(ns);
+ ar.setNs(nsArray);
+ assertEquals("tom",ar.getNs().get(0).getName());
+ assertEquals("admin1",ar.getNs().get(0).getAdmin().get(0));
+
+ }
+
+// @Test
+// public void testSetNs() {
+// fail("Not yet implemented");
+// }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java
new file mode 100644
index 00000000..885694bd
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java
@@ -0,0 +1,86 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonDelete;
+
+public class JsonDeleteTest {
+
+ JsonDelete jd = null;
+
+ @Before
+ public void init() {
+ jd = new JsonDelete();
+ }
+
+
+ @Test
+ public void testGetConditions() {
+ Map<String,Object> mapSo = new HashMap<>();
+ mapSo = new HashMap<>();
+ mapSo.put("key1","one");
+ mapSo.put("key2","two");
+ jd.setConditions(mapSo);
+ assertEquals("one",jd.getConditions().get("key1"));
+ }
+
+ @Test
+ public void testGetConsistencyInfo() {
+ Map<String,String> mapSs = new HashMap<>();
+ mapSs = new HashMap<>();
+ mapSs.put("key3","three");
+ mapSs.put("key4","four");
+ jd.setConsistencyInfo(mapSs);
+ assertEquals("three",jd.getConsistencyInfo().get("key3"));
+ }
+
+ @Test
+ public void testGetColumns() {
+ ArrayList<String> ary = new ArrayList<>();
+ ary = new ArrayList<>();
+ ary.add("e1");
+ ary.add("e2");
+ ary.add("e3");
+ jd.setColumns(ary);
+ assertEquals("e1",jd.getColumns().get(0));
+ }
+
+ @Test
+ public void testGetTtl() {
+ jd.setTtl("2000");
+ assertEquals("2000",jd.getTtl());
+ }
+
+ @Test
+ public void testGetTimestamp() {
+ jd.setTimestamp("20:00");
+ assertEquals("20:00",jd.getTimestamp());
+
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java
new file mode 100644
index 00000000..69403cc7
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java
@@ -0,0 +1,86 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonInsert;
+
+public class JsonInsertTest {
+
+ JsonInsert ji = new JsonInsert();
+
+ @Test
+ public void testGetKeyspaceName() {
+ ji.setKeyspaceName("keyspace");
+ assertEquals("keyspace",ji.getKeyspaceName());
+ }
+
+ @Test
+ public void testGetTableName() {
+ ji.setTableName("table");
+ assertEquals("table",ji.getTableName());
+ }
+
+ @Test
+ public void testGetConsistencyInfo() {
+ Map<String,String> cons = new HashMap<>();
+ cons.put("test","true");
+ ji.setConsistencyInfo(cons);
+ assertEquals("true",ji.getConsistencyInfo().get("test"));
+ }
+
+ @Test
+ public void testGetTtl() {
+ ji.setTtl("ttl");
+ assertEquals("ttl",ji.getTtl());
+ }
+
+ @Test
+ public void testGetTimestamp() {
+ ji.setTimestamp("10:30");
+ assertEquals("10:30",ji.getTimestamp());
+ }
+
+ @Test
+ public void testGetValues() {
+ Map<String,Object> cons = new HashMap<>();
+ cons.put("val1","one");
+ cons.put("val2","two");
+ ji.setValues(cons);
+ assertEquals("one",ji.getValues().get("val1"));
+ }
+
+ @Test
+ public void testGetRow_specification() {
+ Map<String,Object> cons = new HashMap<>();
+ cons.put("val1","one");
+ cons.put("val2","two");
+ ji.setRow_specification(cons);
+ assertEquals("two",ji.getRow_specification().get("val2"));
+ }
+
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java
new file mode 100644
index 00000000..882d5d5e
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java
@@ -0,0 +1,72 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonKeySpace;
+
+public class JsonKeySpaceTest {
+
+ JsonKeySpace jk = null;
+
+
+ @Before
+ public void init() {
+ jk = new JsonKeySpace();
+ }
+
+
+
+ @Test
+ public void testGetConsistencyInfo() {
+ Map<String, String> mapSs = new HashMap<>();
+ mapSs.put("k1", "one");
+ jk.setConsistencyInfo(mapSs);
+ assertEquals("one",jk.getConsistencyInfo().get("k1"));
+ }
+
+ @Test
+ public void testGetReplicationInfo() {
+ Map<String,Object> mapSo = new HashMap<>();
+ mapSo.put("k1", "one");
+ jk.setReplicationInfo(mapSo);
+ assertEquals("one",jk.getReplicationInfo().get("k1"));
+
+ }
+
+ @Test
+ public void testGetDurabilityOfWrites() {
+ jk.setDurabilityOfWrites("1");
+ assertEquals("1",jk.getDurabilityOfWrites());
+ }
+
+ @Test
+ public void testGetKeyspaceName() {
+ jk.setKeyspaceName("Keyspace");
+ assertEquals("Keyspace",jk.getKeyspaceName());
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java
new file mode 100644
index 00000000..63f901c6
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java
@@ -0,0 +1,53 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonLeasedLock;
+
+public class JsonLeasedLockTest {
+
+ JsonLeasedLock jl = null;
+
+ @Before
+ public void init() {
+ jl = new JsonLeasedLock();
+ }
+
+
+ @Test
+ public void testGetLeasePeriod() {
+ long lease = 20000;
+ jl.setLeasePeriod(lease);
+ assertEquals(lease,jl.getLeasePeriod());
+ }
+
+ @Test
+ public void testGetNotifyUrl() {
+ String url = "http://somewhere.com";
+ jl.setNotifyUrl(url);
+ assertEquals(url,jl.getNotifyUrl());
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonOnboardTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonOnboardTest.java
new file mode 100644
index 00000000..82f1748a
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonOnboardTest.java
@@ -0,0 +1,78 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonOnboard;
+
+public class JsonOnboardTest {
+
+ JsonOnboard jo = null;
+
+ @Before
+ public void init() {
+ jo = new JsonOnboard();
+ }
+
+
+ @Test
+ public void testGetPassword() {
+ String password = "password";
+ jo.setPassword(password);
+ assertEquals(password,jo.getPassword());
+ }
+
+ @Test
+ public void testGetAid() {
+ String aid = "aid";
+ jo.setAid(aid);
+ assertEquals(aid,jo.getAid());
+
+ }
+
+ @Test
+ public void testGetAppname() {
+ String appName = "appName";
+ jo.setAppname(appName);
+ assertEquals(appName,jo.getAppname());
+
+ }
+
+ @Test
+ public void testGetUserId() {
+ String userId = "userId";
+ jo.setUserId(userId);
+ assertEquals(userId,jo.getUserId());
+
+ }
+
+ @Test
+ public void testGetIsAAF() {
+ String aaf = "true";
+ jo.setIsAAF(aaf);
+ assertEquals(aaf,jo.getIsAAF());
+
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java
new file mode 100644
index 00000000..0243232f
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java
@@ -0,0 +1,41 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonSelect;
+
+public class JsonSelectTest {
+
+ @Test
+ public void testGetConsistencyInfo() {
+ JsonSelect js = new JsonSelect();
+ Map<String, String> mapSs = new HashMap<>();
+ mapSs.put("k1", "one");
+ js.setConsistencyInfo(mapSs);
+ assertEquals("one",js.getConsistencyInfo().get("k1"));
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java
new file mode 100644
index 00000000..e4c800fc
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java
@@ -0,0 +1,99 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonTable;
+
+public class JsonTableTest {
+
+ JsonTable jt = null;
+
+ @Before
+ public void init() {
+ jt = new JsonTable();
+ }
+
+ @Test
+ public void testGetConsistencyInfo() {
+ Map<String, String> mapSs = new HashMap<>();
+ mapSs.put("k1", "one");
+ jt.setConsistencyInfo(mapSs);
+ assertEquals("one",jt.getConsistencyInfo().get("k1"));
+ }
+
+ @Test
+ public void testGetProperties() {
+ Map<String, Object> properties = new HashMap<>();
+ properties.put("k1", "one");
+ jt.setProperties(properties);
+ }
+
+ @Test
+ public void testGetFields() {
+ Map<String, String> fields = new HashMap<>();
+ fields.put("k1", "one");
+ jt.setFields(fields);
+ assertEquals("one",jt.getFields().get("k1"));
+ }
+
+ @Test
+ public void testGetKeyspaceName() {
+ String keyspace = "keyspace";
+ jt.setKeyspaceName(keyspace);
+ assertEquals(keyspace,jt.getKeyspaceName());
+ }
+
+ @Test
+ public void testGetTableName() {
+ String table = "table";
+ jt.setTableName(table);
+ assertEquals(table,jt.getTableName());
+ }
+
+ @Test
+ public void testGetSortingKey() {
+ String sortKey = "sortkey";
+ jt.setSortingKey(sortKey);
+ assertEquals(sortKey,jt.getSortingKey());
+ }
+
+ @Test
+ public void testGetClusteringOrder() {
+ String clusteringOrder = "clusteringOrder";
+ jt.setClusteringOrder(clusteringOrder);
+ assertEquals(clusteringOrder,jt.getClusteringOrder());
+ }
+
+ @Test
+ public void testGetPrimaryKey() {
+ String primaryKey = "primaryKey";
+ jt.setPrimaryKey(primaryKey);
+ assertEquals(primaryKey,jt.getPrimaryKey());
+ }
+
+}
diff --git a/src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java b/src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java
new file mode 100644
index 00000000..54db0540
--- /dev/null
+++ b/src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ * Copyright (c) 2018 AT&T Intellectual Property
+ * ===================================================================
+ * 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.unittests.jsonobjects;
+
+import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.music.datastore.jsonobjects.JsonUpdate;
+
+public class JsonUpdateTest {
+
+ JsonUpdate ju = null;
+
+ @Before
+ public void init() {
+ ju = new JsonUpdate();
+ }
+
+
+ @Test
+ public void testGetConditions() {
+ Map<String,Object> mapSo = new HashMap<>();
+ mapSo.put("key1","one");
+ mapSo.put("key2","two");
+ ju.setConditions(mapSo);
+ assertEquals("one",ju.getConditions().get("key1"));
+ }
+
+ @Test
+ public void testGetRow_specification() {
+ Map<String,Object> mapSo = new HashMap<>();
+ mapSo.put("key1","one");
+ mapSo.put("key2","two");
+ ju.setRow_specification(mapSo);
+ assertEquals("one",ju.getRow_specification().get("key1"));
+ }
+
+ @Test
+ public void testGetKeyspaceName() {
+ String keyspace = "keyspace";
+ ju.setKeyspaceName(keyspace);
+ assertEquals(keyspace,ju.getKeyspaceName());
+ }
+
+ @Test
+ public void testGetTableName() {
+ String table = "table";
+ ju.setTableName(table);
+ assertEquals(table,ju.getTableName());
+ }
+
+ @Test
+ public void testGetConsistencyInfo() {
+ Map<String, String> mapSs = new HashMap<>();
+ mapSs.put("k1", "one");
+ ju.setConsistencyInfo(mapSs);
+ assertEquals("one",ju.getConsistencyInfo().get("k1"));
+ }
+
+ @Test
+ public void testGetTtl() {
+ ju.setTtl("2000");
+ assertEquals("2000",ju.getTtl());
+ }
+
+ @Test
+ public void testGetTimestamp() {
+ ju.setTimestamp("20:00");
+ assertEquals("20:00",ju.getTimestamp());
+
+ }
+
+ @Test
+ public void testGetValues() {
+ Map<String,Object> cons = new HashMap<>();
+ cons.put("val1","one");
+ cons.put("val2","two");
+ ju.setValues(cons);
+ assertEquals("one",ju.getValues().get("val1"));
+ }
+
+}