aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org/onap/music/unittests/TestVotingApp.java
blob: 863959eb77948806a730f93c54d7e46d8bfd7b2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package org.onap.music.unittests;

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";
    }

    private 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 createVotingKeyspace() throws MusicServiceException {
              Map<String,Object> replicationInfo = new HashMap<String, Object>();
              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.eventualPut(queryObject);
       }
 
       
       private 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);
       }
 
       private HashMap<String, Integer> readAllVotes() throws MusicServiceException {
              PreparedQueryObject queryObject = new PreparedQueryObject();
              queryObject.appendQueryString("SELECT * FROM " + keyspaceName + "." + tableName);
              ResultSet rs = MusicCore.get(queryObject);
              HashMap<String, Integer> voteCount = new HashMap<String, Integer>();
              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);
        tva.updateVoteCount("Flash",3);

        HashMap<String, Integer> 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") == 3);
		System.exit(0);
    }
 
}