2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.lockmanager.api;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.onap.appc.lockmanager.api.LockException;
31 import org.onap.appc.lockmanager.api.LockManager;
33 public abstract class LockManagerBaseTests {
35 protected enum Resource {Resource1, Resource2};
36 protected enum Owner {A, B};
38 protected LockManager lockManager;
41 public void beforeTest() {
42 lockManager = createLockManager();
45 protected abstract LockManager createLockManager();
48 public void testAcquireLock() throws LockException {
49 boolean lockRes = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
51 Assert.assertTrue(lockRes);
53 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
58 public void testAcquireLock_AlreadyLockedBySameOwner() throws LockException {
59 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
61 Assert.assertTrue(lockRes1);
62 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
63 Assert.assertFalse(lockRes2);
65 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
69 @Test(expected = LockException.class)
70 public void testAcquireLock_AlreadyLockedByOtherOwner() throws LockException {
72 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
74 Assert.assertTrue(lockRes1);
75 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), owner2);
76 Assert.assertFalse(lockRes2);
78 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
83 public void testAcquireLock_LockDifferentResources() throws LockException {
84 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
86 Assert.assertTrue(lockRes1);
87 boolean lockRes2 = lockManager.acquireLock(Resource.Resource2.name(), Owner.B.name());
89 Assert.assertTrue(lockRes2);
91 lockManager.releaseLock(Resource.Resource2.name(), Owner.B.name());
94 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
98 @Test(expected = LockException.class)
99 public void testReleaseLock_NotLockedResource() throws LockException {
100 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
103 @Test(expected = LockException.class)
104 public void testReleaseLock_LockedByOtherOwnerResource() throws LockException {
105 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
107 Assert.assertTrue(lockRes1);
108 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
110 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
114 @Test(expected = LockException.class)
115 public void testAcquireLock_LockExpired() throws LockException, InterruptedException {
116 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
117 Assert.assertTrue(lockRes1);
119 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
123 public void testAcquireLock_OtherLockExpired() throws LockException, InterruptedException {
124 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
125 Assert.assertTrue(lockRes1);
127 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.B.name());
129 Assert.assertTrue(lockRes2);
131 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
136 public void testIsLocked_WhenLocked() throws LockException, InterruptedException {
137 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
139 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
141 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
146 @Test(expected = LockException.class)
147 public void testIsLocked_LockExpired() throws LockException, InterruptedException {
148 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
149 Assert.assertTrue(lockRes1);
150 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
153 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
155 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
160 public void testIsLocked_LockReleased() throws LockException, InterruptedException {
161 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
162 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
163 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
167 public void testIsLocked_NoLock() throws LockException, InterruptedException {
168 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));