2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
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=========================================================
22 package org.openecomp.appc.lockmanager.api;
24 import org.junit.Assert;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.openecomp.appc.lockmanager.api.LockException;
28 import org.openecomp.appc.lockmanager.api.LockManager;
30 public abstract class LockManagerBaseTests {
32 protected enum Resource {Resource1, Resource2};
33 protected enum Owner {A, B};
35 protected LockManager lockManager;
38 public void beforeTest() {
39 lockManager = createLockManager();
42 protected abstract LockManager createLockManager();
45 public void testAcquireLock() throws LockException {
46 boolean lockRes = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
48 Assert.assertTrue(lockRes);
50 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
55 public void testAcquireLock_AlreadyLockedBySameOwner() throws LockException {
56 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
58 Assert.assertTrue(lockRes1);
59 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
60 Assert.assertFalse(lockRes2);
62 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
66 @Test(expected = LockException.class)
67 public void testAcquireLock_AlreadyLockedByOtherOwner() throws LockException {
69 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
71 Assert.assertTrue(lockRes1);
72 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), owner2);
73 Assert.assertFalse(lockRes2);
75 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
80 public void testAcquireLock_LockDifferentResources() throws LockException {
81 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
83 Assert.assertTrue(lockRes1);
84 boolean lockRes2 = lockManager.acquireLock(Resource.Resource2.name(), Owner.B.name());
86 Assert.assertTrue(lockRes2);
88 lockManager.releaseLock(Resource.Resource2.name(), Owner.B.name());
91 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
95 @Test(expected = LockException.class)
96 public void testReleaseLock_NotLockedResource() throws LockException {
97 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
100 @Test(expected = LockException.class)
101 public void testReleaseLock_LockedByOtherOwnerResource() throws LockException {
102 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name());
104 Assert.assertTrue(lockRes1);
105 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
107 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
111 @Test(expected = LockException.class)
112 public void testAcquireLock_LockExpired() throws LockException, InterruptedException {
113 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
114 Assert.assertTrue(lockRes1);
116 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
120 public void testAcquireLock_OtherLockExpired() throws LockException, InterruptedException {
121 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
122 Assert.assertTrue(lockRes1);
124 boolean lockRes2 = lockManager.acquireLock(Resource.Resource1.name(), Owner.B.name());
126 Assert.assertTrue(lockRes2);
128 lockManager.releaseLock(Resource.Resource1.name(), Owner.B.name());
133 public void testIsLocked_WhenLocked() throws LockException, InterruptedException {
134 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
136 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
138 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
143 @Test(expected = LockException.class)
144 public void testIsLocked_LockExpired() throws LockException, InterruptedException {
145 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
146 Assert.assertTrue(lockRes1);
147 Assert.assertTrue(lockManager.isLocked(Resource.Resource1.name()));
150 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
152 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
157 public void testIsLocked_LockReleased() throws LockException, InterruptedException {
158 boolean lockRes1 = lockManager.acquireLock(Resource.Resource1.name(), Owner.A.name(), 50);
159 lockManager.releaseLock(Resource.Resource1.name(), Owner.A.name());
160 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));
164 public void testIsLocked_NoLock() throws LockException, InterruptedException {
165 Assert.assertFalse(lockManager.isLocked(Resource.Resource1.name()));