1 /*******************************************************************************
2 * ============LICENSE_START========================================== org.onap.music
3 * =================================================================== Copyright (c) 2019 AT&T
4 * Intellectual Property ===================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
6 * in compliance with the License. You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software distributed under the License
11 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing permissions and limitations under
15 * ============LICENSE_END=============================================
16 * ====================================================================
17 *******************************************************************************/
19 package org.onap.music.main;
21 import static org.junit.Assert.assertEquals;
22 import java.util.HashMap;
23 import java.util.List;
25 import javax.ws.rs.core.MultivaluedMap;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.Mockito;
29 import org.mockito.internal.util.reflection.FieldSetter;
30 import org.onap.music.datastore.Condition;
31 import org.onap.music.datastore.PreparedQueryObject;
32 import org.onap.music.datastore.jsonobjects.JsonDelete;
33 import org.onap.music.datastore.jsonobjects.JsonIndex;
34 import org.onap.music.datastore.jsonobjects.JsonInsert;
35 import org.onap.music.datastore.jsonobjects.JsonKeySpace;
36 import org.onap.music.datastore.jsonobjects.JsonSelect;
37 import org.onap.music.datastore.jsonobjects.JsonTable;
38 import org.onap.music.datastore.jsonobjects.JsonUpdate;
39 import org.onap.music.exceptions.MusicLockingException;
40 import org.onap.music.exceptions.MusicQueryException;
41 import org.onap.music.exceptions.MusicServiceException;
42 import org.onap.music.lockingservice.cassandra.CassaLockStore;
43 import org.onap.music.lockingservice.cassandra.LockType;
44 import org.onap.music.lockingservice.cassandra.MusicLockState;
45 import org.onap.music.service.MusicCoreService;
46 import com.datastax.driver.core.ResultSet;
48 public class MusicCoreTest {
51 MusicCoreService musicCore;
52 CassaLockStore mLockHandle;
56 mCore = new MusicCore();
57 musicCore = Mockito.mock(MusicCoreService.class);
58 mLockHandle = Mockito.mock(CassaLockStore.class);
60 FieldSetter.setField(mCore, mCore.getClass().getDeclaredField("musicCore"), musicCore);
61 } catch (NoSuchFieldException e) {
62 // TODO Auto-generated catch block
64 } catch (SecurityException e) {
65 // TODO Auto-generated catch block
71 public void testAcquireLock() throws MusicLockingException, MusicQueryException, MusicServiceException {
72 ReturnType returnType = Mockito.mock(ReturnType.class);
73 ReturnType result = null;
74 Mockito.when(musicCore.acquireLock(Mockito.any(), Mockito.any())).thenReturn(returnType);
75 result = MusicCore.acquireLock("key1", "lockid1");
76 assertEquals(returnType, result);
80 public void testacquireLockWithLease() throws MusicLockingException, MusicQueryException, MusicServiceException {
81 ReturnType returnType = Mockito.mock(ReturnType.class);
82 ReturnType result = null;
83 Mockito.when(musicCore.acquireLockWithLease(Mockito.anyString(), Mockito.anyString(), Mockito.anyLong()))
84 .thenReturn(returnType);
85 result = MusicCore.acquireLockWithLease("key1", "lockid1", 100L);
86 assertEquals(returnType, result);
90 public void testCreateLockReferenceAtomic() throws MusicLockingException {
92 Mockito.when(musicCore.createLockReferenceAtomic(Mockito.any())).thenReturn("lockreference1");
93 result = MusicCore.createLockReferenceAtomic("key2");
94 assertEquals("lockreference1", result);
98 public void testCreateLockReference() throws MusicLockingException {
100 Mockito.when(musicCore.createLockReference(Mockito.any(), Mockito.any())).thenReturn("lockreference2");
101 result = MusicCore.createLockReference("key3", "owner3");
102 assertEquals("lockreference2", result);
106 public void testCreateLockReferenceAtomic2() throws MusicLockingException {
107 String result = null;
108 Mockito.when(musicCore.createLockReferenceAtomic(Mockito.any(), Mockito.any())).thenReturn("lockreference3");
109 result = MusicCore.createLockReferenceAtomic("key4", LockType.READ);
110 assertEquals("lockreference3", result);
114 public void testCreateLockReference2() throws MusicLockingException {
115 String result = null;
116 Mockito.when(musicCore.createLockReference(Mockito.any(), Mockito.any(), Mockito.any()))
117 .thenReturn("lockreference4");
118 result = MusicCore.createLockReference("key4", LockType.READ, "owner4");
119 assertEquals("lockreference4", result);
123 public void testCreateTable() throws MusicServiceException {
124 ResultType resultType = Mockito.mock(ResultType.class);
125 ResultType result = null;
126 Mockito.when(musicCore.createTable(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
127 .thenReturn(resultType);
128 result = MusicCore.createTable("keyspace1", "table1", new PreparedQueryObject(), "consistency");
129 assertEquals(resultType, result);
133 public void testQuorumGet() {
134 ResultSet rs = Mockito.mock(ResultSet.class);
135 Mockito.when(musicCore.quorumGet(Mockito.any())).thenReturn(rs);
136 assertEquals(rs, MusicCore.quorumGet(new PreparedQueryObject()));
140 public void testWhoseTurnIsIt() {
141 Mockito.when(musicCore.whoseTurnIsIt(Mockito.any())).thenReturn("turn");
142 assertEquals("turn", MusicCore.whoseTurnIsIt("key5"));
146 public void testGetCurrentLockHolders() {
147 List<String> result = Mockito.mock(List.class);
148 Mockito.when(musicCore.getCurrentLockHolders(Mockito.any())).thenReturn(result);
149 assertEquals(result, MusicCore.getCurrentLockHolders("key6"));
153 public void testPromoteLock() throws MusicLockingException {
154 ReturnType returnType = Mockito.mock(ReturnType.class);
155 ReturnType result = null;
156 Mockito.when(musicCore.promoteLock(Mockito.any())).thenReturn(returnType);
157 result = MusicCore.promoteLock("lockid2");
158 assertEquals(returnType, result);
162 public void testEventualPut() {
163 ReturnType returnType = Mockito.mock(ReturnType.class);
164 Mockito.when(musicCore.eventualPut(Mockito.any())).thenReturn(returnType);
165 assertEquals(returnType, MusicCore.eventualPut(new PreparedQueryObject()));
169 public void testEventualPut_nb() {
170 ReturnType returnType = Mockito.mock(ReturnType.class);
171 Mockito.when(musicCore.eventualPut_nb(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
172 .thenReturn(returnType);
173 assertEquals(returnType,
174 MusicCore.eventualPut_nb(new PreparedQueryObject(), "keyspace2", "table2", "primarykey1"));
178 public void testCriticalPut() {
179 ReturnType returnType = Mockito.mock(ReturnType.class);
180 Mockito.when(musicCore.criticalPut(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(),
181 Mockito.any())).thenReturn(returnType);
182 assertEquals(returnType, MusicCore.criticalPut("keyspace3", "table3", "primarykey2", new PreparedQueryObject(),
183 "lockreference2", new Condition(new HashMap(), new PreparedQueryObject())));
187 public void testNonKeyRelatedPut() throws MusicServiceException, MusicQueryException {
188 ResultType resultType = Mockito.mock(ResultType.class);
189 ResultType result = null;
190 Mockito.when(musicCore.nonKeyRelatedPut(Mockito.any(), Mockito.any())).thenReturn(resultType);
191 result = MusicCore.nonKeyRelatedPut(new PreparedQueryObject(), "consistency2");
192 assertEquals(resultType, result);
196 public void testGet() throws MusicServiceException {
197 ResultSet rs = Mockito.mock(ResultSet.class);
198 ResultSet result = null;
199 Mockito.when(musicCore.get(Mockito.any())).thenReturn(rs);
200 result = MusicCore.get(new PreparedQueryObject());
201 assertEquals(rs, result);
205 public void testCriticalGet() throws MusicServiceException {
206 ResultSet rs = Mockito.mock(ResultSet.class);
207 ResultSet result = null;
208 Mockito.when(musicCore.criticalGet(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
210 result = MusicCore.criticalGet("keyspace4", "table4", "primarykey3", new PreparedQueryObject(),
212 assertEquals(rs, result);
216 public void testAtomicPut() throws MusicLockingException, MusicQueryException, MusicServiceException {
217 ReturnType returnType = Mockito.mock(ReturnType.class);
218 ReturnType result = null;
219 Mockito.when(musicCore.atomicPut(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
220 .thenReturn(returnType);
221 result = MusicCore.atomicPut("keyspace5", "table5", "primarykey4", new PreparedQueryObject(),
222 new Condition(new HashMap(), new PreparedQueryObject()));
223 assertEquals(returnType, result);
227 public void testAtomicGet() throws MusicServiceException, MusicLockingException, MusicQueryException {
228 ResultSet rs = Mockito.mock(ResultSet.class);
229 ResultSet result = null;
230 Mockito.when(musicCore.atomicGet(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(rs);
231 result = MusicCore.atomicGet("keyspace5", "table5", "primarykey4", new PreparedQueryObject());
232 assertEquals(rs, result);
236 public void testGetLockQueue() throws MusicServiceException, MusicQueryException, MusicLockingException {
237 List<String> result = Mockito.mock(List.class);
238 List<String> rst = null;
239 Mockito.when(musicCore.getLockQueue(Mockito.any())).thenReturn(result);
240 rst = MusicCore.getLockQueue("key5");
241 assertEquals(result, rst);
245 public void testGetLockQueueSize() throws MusicServiceException, MusicQueryException, MusicLockingException {
247 Mockito.when(musicCore.getLockQueueSize(Mockito.any())).thenReturn(100L);
248 result = MusicCore.getLockQueueSize("key6");
249 assertEquals(100L, result);
253 public void testatomicPutWithDeleteLock() throws MusicLockingException {
254 ReturnType returnType = Mockito.mock(ReturnType.class);
255 ReturnType result = null;
256 Mockito.when(musicCore.atomicPutWithDeleteLock(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(),
257 Mockito.any())).thenReturn(returnType);
258 result = MusicCore.atomicPutWithDeleteLock("keyspace5", "table5", "primarykey4", new PreparedQueryObject(),
259 new Condition(new HashMap(), new PreparedQueryObject()));
260 assertEquals(returnType, result);
264 public void testAtomicGetWithDeleteLock() throws MusicServiceException, MusicLockingException {
265 ResultSet rs = Mockito.mock(ResultSet.class);
266 ResultSet result = null;
267 Mockito.when(musicCore.atomicGetWithDeleteLock(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
269 result = MusicCore.atomicGetWithDeleteLock("keyspace5", "table5", "primarykey4", new PreparedQueryObject());
270 assertEquals(rs, result);
274 public void testValidateLock() {
275 Map<String, Object> map = Mockito.mock(Map.class);
276 Mockito.when(musicCore.validateLock(Mockito.any())).thenReturn(map);
277 assertEquals(map, MusicCore.validateLock("lockname"));
281 public void testReleaseLock() throws MusicLockingException {
282 MusicLockState musicLockState = Mockito.mock(MusicLockState.class);
283 MusicLockState result = null;
284 Mockito.when(musicCore.releaseLock(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(musicLockState);
285 result = MusicCore.releaseLock("lockid", true);
286 assertEquals(musicLockState, result);
290 public void testReleaseAllLocksForOwner() throws MusicLockingException, MusicServiceException, MusicQueryException {
291 List<String> result = Mockito.mock(List.class);
292 List<String> rst = null;
293 Mockito.when(musicCore.releaseAllLocksForOwner(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(result);
294 rst = MusicCore.releaseAllLocksForOwner("owner2", "keyspace6", "table6");
295 assertEquals(result, rst);
299 public void testCreateKeyspace() throws MusicServiceException, MusicQueryException {
300 ResultType resultType = Mockito.mock(ResultType.class);
301 ResultType result = null;
302 Mockito.when(musicCore.createKeyspace(Mockito.any(), Mockito.any())).thenReturn(resultType);
303 result = MusicCore.createKeyspace(new JsonKeySpace(), "consistency3");
304 assertEquals(resultType, result);
308 public void testDropKeyspace() throws MusicServiceException, MusicQueryException {
309 ResultType resultType = Mockito.mock(ResultType.class);
310 ResultType result = null;
311 Mockito.when(musicCore.dropKeyspace(Mockito.any(), Mockito.any())).thenReturn(resultType);
312 result = MusicCore.dropKeyspace(new JsonKeySpace(), "consistency4");
313 assertEquals(resultType, result);
317 public void testCreateTable2() throws MusicServiceException, MusicQueryException {
318 ResultType resultType = Mockito.mock(ResultType.class);
319 ResultType result = null;
320 Mockito.when(musicCore.createTable(Mockito.any(), Mockito.any())).thenReturn(resultType);
321 result = MusicCore.createTable(new JsonTable(), "consistency5");
322 assertEquals(resultType, result);
326 public void testDropTable() throws MusicServiceException, MusicQueryException {
327 ResultType resultType = Mockito.mock(ResultType.class);
328 ResultType result = null;
329 Mockito.when(musicCore.dropTable(Mockito.any(), Mockito.any())).thenReturn(resultType);
330 result = MusicCore.dropTable(new JsonTable(), "consistency5");
331 assertEquals(resultType, result);
335 public void testCreateIndex() throws MusicServiceException, MusicQueryException {
336 ResultType resultType = Mockito.mock(ResultType.class);
337 ResultType result = null;
338 Mockito.when(musicCore.createIndex(Mockito.any(), Mockito.any())).thenReturn(resultType);
339 result = MusicCore.createIndex(new JsonIndex("indexName", "keyspace7", "table7", "field"), "consistency6");
340 assertEquals(resultType, result);
344 public void testSelect() throws MusicServiceException, MusicQueryException {
345 ResultSet rs = Mockito.mock(ResultSet.class);
346 ResultSet result = null;
347 Mockito.when(musicCore.select(Mockito.any(), Mockito.any())).thenReturn(rs);
348 MultivaluedMap<String, String> map = Mockito.mock(MultivaluedMap.class);
349 result = MusicCore.select(new JsonSelect(), map);
350 assertEquals(rs, result);
354 public void testSelectCritical() throws MusicLockingException, MusicQueryException, MusicServiceException {
355 ResultSet rs = Mockito.mock(ResultSet.class);
356 ResultSet result = null;
357 Mockito.when(musicCore.selectCritical(Mockito.any(), Mockito.any())).thenReturn(rs);
358 MultivaluedMap<String, String> map = Mockito.mock(MultivaluedMap.class);
359 result = MusicCore.selectCritical(new JsonInsert(), map);
360 assertEquals(rs, result);
364 public void testInsertIntoTable() throws MusicLockingException, MusicQueryException, MusicServiceException {
365 ReturnType returnType = Mockito.mock(ReturnType.class);
366 ReturnType result = null;
367 Mockito.when(musicCore.insertIntoTable(Mockito.any())).thenReturn(returnType);
368 result = MusicCore.insertIntoTable(new JsonInsert());
369 assertEquals(returnType, result);
373 public void testUpdateTable() throws MusicLockingException, MusicQueryException, MusicServiceException {
374 ReturnType returnType = Mockito.mock(ReturnType.class);
375 ReturnType result = null;
376 Mockito.when(musicCore.updateTable(Mockito.any(), Mockito.any())).thenReturn(returnType);
377 MultivaluedMap<String, String> map = Mockito.mock(MultivaluedMap.class);
378 result = MusicCore.updateTable(new JsonUpdate(), map);
379 assertEquals(returnType, result);
383 public void testDeleteFromTable() throws MusicLockingException, MusicQueryException, MusicServiceException {
384 ReturnType returnType = Mockito.mock(ReturnType.class);
385 ReturnType result = null;
386 MultivaluedMap<String, String> map = Mockito.mock(MultivaluedMap.class);
387 Mockito.when(musicCore.deleteFromTable(Mockito.any(), Mockito.any())).thenReturn(returnType);
388 result = MusicCore.deleteFromTable(new JsonDelete(), map);
389 assertEquals(returnType, result);