2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * Copyright (C) 2017 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
20 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
23 package org.openecomp.appc.lockmanager.api;
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.openecomp.appc.lockmanager.api.LockException;
29 import org.openecomp.appc.lockmanager.api.LockManager;
31 public abstract class LockManagerBaseTests {
33 protected enum Resource {Resource1, Resource2};
34 protected enum Owner {A, B};
36 protected LockManager lockManager;
39 public void beforeTest() {
40 lockManager = createLockManager();
43 protected abstract LockManager createLockManager();
46 public void testAcquireLock() throws LockException {
47 boolean lockRes = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
49 Assert.assertTrue(lockRes);
51 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
56 public void testAcquireLock_AlreadyLockedBySameOwner() throws LockException {
57 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
59 Assert.assertTrue(lockRes1);
60 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
61 Assert.assertFalse(lockRes2);
63 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
67 @Test(expected = LockException.class)
68 public void testAcquireLock_AlreadyLockedByOtherOwner() throws LockException {
70 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
72 Assert.assertTrue(lockRes1);
73 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), owner2);
74 Assert.assertFalse(lockRes2);
76 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
81 public void testAcquireLock_LockDifferentResources() throws LockException {
82 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
84 Assert.assertTrue(lockRes1);
85 boolean lockRes2 = lockManager.acquireLock(Resource.Resource2.name(), Owner.B.name());
87 Assert.assertTrue(lockRes2);
89 lockManager.releaseLock(Resource.Resource2.name(), Owner.B.name());
92 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
96 @Test(expected = LockException.class)
97 public void testReleaseLock_NotLockedResource() throws LockException {
98 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
101 @Test(expected = LockException.class)
102 public void testReleaseLock_LockedByOtherOwnerResource() throws LockException {
103 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
105 Assert.assertTrue(lockRes1);
106 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
108 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
112 @Test(expected = LockException.class)
113 public void testAcquireLock_LockExpired() throws LockException, InterruptedException {
114 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
115 Assert.assertTrue(lockRes1);
117 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
121 public void testAcquireLock_OtherLockExpired() throws LockException, InterruptedException {
122 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
123 Assert.assertTrue(lockRes1);
125 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.B.name());
127 Assert.assertTrue(lockRes2);
129 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
134 public void testIsLocked_WhenLocked() throws LockException, InterruptedException {
135 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
137 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
139 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
144 @Test(expected = LockException.class)
145 public void testIsLocked_LockExpired() throws LockException, InterruptedException {
146 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
147 Assert.assertTrue(lockRes1);
148 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
151 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
153 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
158 public void testIsLocked_LockReleased() throws LockException, InterruptedException {
159 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
160 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
161 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
165 public void testIsLocked_NoLock() throws LockException, InterruptedException {
166 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));