From e71ad4704a4a16874be65f40713009e13ce4eabf Mon Sep 17 00:00:00 2001 From: Sandeep J Date: Tue, 11 Dec 2018 19:59:13 +0530 Subject: added files to convert project to spring boot also made changes to pom to add required dependencies. fix junit cases, upgrading to mockito 2.x Issue-ID: MUSIC-212 Change-Id: Ieeeaa6d62e03e962534182183aae8ae838d93eba Signed-off-by: Sandeep J --- .../java/org/onap/music/util/TestVotingApp.java | 145 +++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 src/main/java/org/onap/music/util/TestVotingApp.java (limited to 'src/main/java/org/onap/music/util/TestVotingApp.java') diff --git a/src/main/java/org/onap/music/util/TestVotingApp.java b/src/main/java/org/onap/music/util/TestVotingApp.java new file mode 100644 index 00000000..e4a8272b --- /dev/null +++ b/src/main/java/org/onap/music/util/TestVotingApp.java @@ -0,0 +1,145 @@ +/* + * ============LICENSE_START========================================== + * org.onap.music + * =================================================================== + * Copyright (c) 2018 IBM. + * =================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================= + * ==================================================================== + */ + +package org.onap.music.util; + +import java.util.HashMap; +import java.util.Map; + +import org.onap.music.datastore.PreparedQueryObject; +import org.onap.music.exceptions.MusicLockingException; +import org.onap.music.exceptions.MusicQueryException; +import org.onap.music.exceptions.MusicServiceException; +import org.onap.music.main.MusicCore; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Row; + +/** + * + */ +public class TestVotingApp { + String keyspaceName; + String tableName; + + public TestVotingApp() throws MusicServiceException { + keyspaceName = "VotingAppForMusic" + System.currentTimeMillis(); + tableName = "votecount"; + } + + public void initialize() throws MusicServiceException { + createVotingKeyspace(); + System.out.println("Created keyspaces"); + createVotingTable(); + System.out.println("Created tables"); + + createEntryForCandidate("Popeye"); + createEntryForCandidate("Judy"); + createEntryForCandidate("Flash"); + createEntryForCandidate("Mickey"); + System.out.println("Created candidates"); + } + + private void createVotingTable() throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString( + "CREATE TABLE " + keyspaceName + "." + tableName + " (name text PRIMARY KEY, count int);"); + + try { + MusicCore.createTable(keyspaceName, tableName, queryObject, "eventual"); + } catch (MusicServiceException e) { + throw (e); + } + } + + private void createVotingKeyspace() throws MusicServiceException { + Map replicationInfo = new HashMap(); + replicationInfo.put("'class'", "'SimpleStrategy'"); + replicationInfo.put("'replication_factor'", 1); + + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString("CREATE KEYSPACE " + keyspaceName + " WITH REPLICATION = " + + replicationInfo.toString().replaceAll("=", ":")); + + try { + MusicCore.nonKeyRelatedPut(queryObject, "eventual"); + } catch (MusicServiceException e) { + throw (e); + } + } + + /* + * private void createVotingTable() throws MusicServiceException { + * PreparedQueryObject queryObject = new PreparedQueryObject(); + * queryObject.appendQueryString( "CREATE TABLE " + keyspaceName + "." + + * tableName + " (name text PRIMARY KEY, count int);"); + * + * try { MusicCore.createTable(keyspaceName, tableName, queryObject, + * "eventual"); } catch (MusicServiceException e) { throw (e); } } + */ + + private void createEntryForCandidate(String candidateName) throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString("INSERT INTO " + keyspaceName + "." + tableName + " (name, count) " + "VALUES ('" + + candidateName + "', 0);"); + + MusicCore.nonKeyRelatedPut(queryObject, "eventual"); + } + + public void updateVoteCount(String candidateName, int numVotes) + throws MusicLockingException, MusicQueryException, MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString("UPDATE " + keyspaceName + "." + tableName + " SET count=" + numVotes + + " where name='" + candidateName + "';"); + MusicCore.atomicPut(keyspaceName, tableName, candidateName, queryObject, null); + } + + public HashMap readAllVotes() throws MusicServiceException { + PreparedQueryObject queryObject = new PreparedQueryObject(); + queryObject.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName); + ResultSet rs = MusicCore.get(queryObject); + HashMap voteCount = new HashMap(); + for (Row candidate : rs.all()) { + voteCount.put(candidate.getString("name"), candidate.getInt("count")); + } + return voteCount; + } + + public static void main(String[] args) throws Exception { + TestVotingApp tva = new TestVotingApp(); + tva.initialize(); + + tva.updateVoteCount("Popeye", 5); + tva.updateVoteCount("Judy", 9); + tva.updateVoteCount("Mickey", 8); + tva.updateVoteCount("Flash", 1); + tva.updateVoteCount("Flash", 2); + + HashMap voteCount = tva.readAllVotes(); + System.out.println(voteCount); + assert (voteCount.get("Popeye") == 5); + assert (voteCount.get("Judy") == 9); + assert (voteCount.get("Mickey") == 8); + assert (voteCount.get("Flash") == 2); + } + +} \ No newline at end of file -- cgit 1.2.3-korg