summaryrefslogtreecommitdiffstats
path: root/controlloop/common/guard
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-09-27 11:22:47 -0400
committerJim Hahn <jrh3@att.com>2019-10-22 16:06:10 -0400
commitac5c19ddbed1ff5905d16a6359ee23b4888c717a (patch)
treeacd501248ae73dcd90b2318695acc535a9bb9dcc /controlloop/common/guard
parent636a1b2fcafa5249cf2bf380dfb6e20f6fe98691 (diff)
Modify drools-applications to use new Lock API
Modified code to use new Lock API. Also deleted TargetLock and PolicyGuard, as they are no longer needed. Issue-ID: POLICY-2113 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: I5bc9b7732f9cfc6056789b2902d9f6f838b560be
Diffstat (limited to 'controlloop/common/guard')
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/LockCallback.java29
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuard.java241
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/TargetLock.java37
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/PnfTargetLock.java47
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java86
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VmTargetLock.java47
-rw-r--r--controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VnfTargetLock.java47
-rw-r--r--controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardTest.java335
8 files changed, 0 insertions, 869 deletions
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/LockCallback.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/LockCallback.java
deleted file mode 100644
index 2b33e0e57..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/LockCallback.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard;
-
-public interface LockCallback {
-
- public boolean isActive();
-
- public boolean releaseLock();
-
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuard.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuard.java
deleted file mode 100644
index 90e6e8753..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuard.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Tech Mahindra
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard;
-
-import java.util.UUID;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.core.lock.PolicyResourceLockManager;
-import org.onap.policy.guard.impl.PnfTargetLock;
-import org.onap.policy.guard.impl.VmTargetLock;
-import org.onap.policy.guard.impl.VnfTargetLock;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PolicyGuard {
-
- private static final Logger logger = LoggerFactory.getLogger(PolicyGuard.class);
-
- /**
- * Factory to access various objects. Can be changed for junit tests.
- */
- private static Factory factory = new Factory();
-
- public static class LockResult<A, B> {
- private A parameterA;
- private B parameterB;
-
- public LockResult(A parameterA, B parameterB) {
- this.parameterA = parameterA;
- this.parameterB = parameterB;
- }
-
- public A getA() {
- return parameterA;
- }
-
- public B getB() {
- return parameterB;
- }
-
- public static <A, B> LockResult<A, B> createLockResult(A parameterA, B parameterB) {
- return new LockResult<>(parameterA, parameterB);
- }
- }
-
- private PolicyGuard() {
- // Cannot instantiate this static class
- }
-
- /**
- * Get the factory.
- *
- * @return the factory used to access various objects
- */
- protected static Factory getFactory() {
- return factory;
- }
-
- /**
- * Sets the factory to be used by junit tests.
- * @param factory factory
- */
- protected static void setFactory(Factory factory) {
- PolicyGuard.factory = factory;
- }
-
- /**
- * Create a lock.
- *
- * @param targetType the target type
- * @param targetInstance the target instance
- * @param requestId the request Id
- * @return the TargetLock
- * @throws IllegalArgumentException if an argument is null
- */
- public static TargetLock createTargetLock(TargetType targetType, String targetInstance,
- UUID requestId, LockCallback callback) {
- switch (targetType) {
- case PNF:
- //
- // Create the Lock object
- //
- return new PnfTargetLock(targetType, targetInstance, requestId, callback);
- case VM:
- //
- // Create the Lock object
- //
- return new VmTargetLock(targetType, targetInstance, requestId, callback);
- case VNF:
- //
- // Create the Lock object
- //
- return new VnfTargetLock(targetType, targetInstance, requestId, callback);
-
- case VFMODULE:
- //
- // Create the Lock object
- //
- return new VnfTargetLock(targetType, targetInstance, requestId, callback);
- default:
- logger.error("invalid target type {} for lock on {}", targetType, targetInstance);
- return null;
- }
- }
-
- /**
- * Lock a target.
- *
- * @param targetType the target type
- * @param targetInstance the target instance
- * @param requestId the request Id
- * @param callback the LockCallback
- * @param holdSec maximum number of seconds to hold the lock
- * @return the LockResult
- * @throws IllegalArgumentException if an argument is null
- */
- public static LockResult<GuardResult, TargetLock> lockTarget(TargetType targetType, String targetInstance,
- UUID requestId, LockCallback callback, int holdSec) {
- String owner = makeOwner(targetType, requestId);
- boolean result = factory.getManager().lock(targetInstance, owner, holdSec);
- if (!result) {
- return LockResult.createLockResult(GuardResult.LOCK_DENIED, null);
- }
-
- TargetLock lock = createTargetLock(targetType, targetInstance, requestId, callback);
- if (lock == null) {
- //
- // Bad lock type: unlock and return exception result
- //
- factory.getManager().unlock(targetInstance, owner);
- return LockResult.createLockResult(GuardResult.LOCK_EXCEPTION, null);
- } else {
- //
- // Return result
- //
- logger.debug("Locked {}", lock);
- return LockResult.createLockResult(GuardResult.LOCK_ACQUIRED, lock);
- }
- }
-
- /**
- * Extends a lock on a target.
- * @param lock current lock
- * @param holdSec maximum number of seconds to hold the lock
- * @return the result: acquired or denied
- */
- public static GuardResult lockTarget(TargetLock lock, int holdSec) {
- String owner = makeOwner(lock.getTargetType(), lock.getRequestId());
-
- boolean result = factory.getManager().refresh(lock.getTargetInstance(), owner, holdSec);
-
- logger.debug("Lock {} extend {}", lock, result);
- return (result ? GuardResult.LOCK_ACQUIRED : GuardResult.LOCK_DENIED);
- }
-
- /**
- * Unlock a target.
- *
- * @param lock the target lock to unlock
- * @return <code>true</code> if the target is successfully unlocked, <code>false</code>
- * otherwise
- * @throws IllegalArgumentException if an argument is null
- */
- public static boolean unlockTarget(TargetLock lock) {
- String owner = makeOwner(lock.getTargetType(), lock.getRequestId());
- boolean result = factory.getManager().unlock(lock.getTargetInstance(), owner);
-
- if (result) {
- logger.debug("Unlocked {}", lock);
- return true;
- }
-
- return false;
- }
-
- /**
- * Check if a target is locked.
- *
- * @param targetType the target type
- * @param targetInstance the target instance
- * @param requestId the request Id
- * @return <code>true</code> if the target is locked, <code>false</code> otherwise
- * @throws IllegalArgumentException if an argument is null
- */
- public static boolean isLocked(TargetType targetType, String targetInstance, UUID requestId) {
- String owner = makeOwner(targetType, requestId);
- return factory.getManager().isLockedBy(targetInstance, owner);
- }
-
- /**
- * Combines the target type and request ID to yield a single, "owner" string.
- * @param targetType target type
- * @param requestID request id
- * @return the "owner" of a resource
- * @throws IllegalArgumentException if either argument is null
- */
- private static String makeOwner(TargetType targetType, UUID requestId) {
- if (targetType == null) {
- throw new IllegalArgumentException("null targetType for lock request id " + requestId);
- }
-
- if (requestId == null) {
- throw new IllegalArgumentException("null requestID for lock type " + targetType);
- }
-
- return targetType + ":" + requestId;
- }
-
- /**
- * Factory to access various objects.
- */
- public static class Factory {
-
- /**
- * Get the manager.
- *
- * @return the lock manager to be used
- */
- public PolicyResourceLockManager getManager() {
- return PolicyResourceLockManager.getInstance();
- }
- }
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/TargetLock.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/TargetLock.java
deleted file mode 100644
index eea46c3cc..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/TargetLock.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard;
-
-import java.util.UUID;
-
-import org.onap.policy.controlloop.policy.TargetType;
-
-public interface TargetLock {
-
- public UUID getLockId();
-
- public TargetType getTargetType();
-
- public String getTargetInstance();
-
- public UUID getRequestId();
-
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/PnfTargetLock.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/PnfTargetLock.java
deleted file mode 100644
index 8ddb5ffcf..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/PnfTargetLock.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard.impl;
-
-import java.util.UUID;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.guard.LockCallback;
-
-public class PnfTargetLock extends TargetLockImpl {
-
- private static final long serialVersionUID = 2335897394577202732L;
-
- /**
- * Construct an instance.
- *
- * @param type the target type
- * @param target the target
- * @param requestId the request Id
- * @param callback the callback
- */
- public PnfTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
- super(type, target, requestId, callback);
- }
-
- @Override
- public String toString() {
- return "PnfTargetLock [" + super.toString() + "]";
- }
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java
deleted file mode 100644
index d406999f4..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/TargetLockImpl.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard.impl;
-
-import java.io.Serializable;
-import java.util.UUID;
-
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.guard.LockCallback;
-import org.onap.policy.guard.TargetLock;
-
-public class TargetLockImpl implements TargetLock, Serializable {
-
- private static final long serialVersionUID = 2335897394577202732L;
-
- private final UUID lockId;
- private final TargetType targetType;
- private final String target;
- private final UUID requestId;
- private final transient LockCallback callback;
-
- /**
- * Construct an instance.
- *
- * @param type the target type
- * @param target the target
- * @param requestId the request Id
- * @param callback the callback
- */
- public TargetLockImpl(TargetType type, String target, UUID requestId, LockCallback callback) {
- this.lockId = UUID.randomUUID();
- this.targetType = type;
- this.target = target;
- this.requestId = requestId;
- this.callback = callback;
- }
-
- @Override
- public UUID getLockId() {
- return this.lockId;
- }
-
-
- @Override
- public TargetType getTargetType() {
- return targetType;
- }
-
- @Override
- public String getTargetInstance() {
- return target;
- }
-
- @Override
- public UUID getRequestId() {
- return this.requestId;
- }
-
- public LockCallback getCallback() {
- return this.callback;
- }
-
- @Override
- public String toString() {
- return "lockId=" + lockId + ", targetType=" + targetType + ", target=" + target + ", requestId="
- + requestId;
- }
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VmTargetLock.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VmTargetLock.java
deleted file mode 100644
index 2e612a03a..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VmTargetLock.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard.impl;
-
-import java.util.UUID;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.guard.LockCallback;
-
-public class VmTargetLock extends TargetLockImpl {
-
- private static final long serialVersionUID = 2335897394577202732L;
-
- /**
- * Construct an instance.
- *
- * @param type the target type
- * @param target the target
- * @param requestId the request Id
- * @param callback the callback
- */
- public VmTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
- super(type, target, requestId, callback);
- }
-
- @Override
- public String toString() {
- return "VmTargetLock [" + super.toString() + "]";
- }
-}
diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VnfTargetLock.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VnfTargetLock.java
deleted file mode 100644
index 2912c7ad4..000000000
--- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/impl/VnfTargetLock.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard.impl;
-
-import java.util.UUID;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.guard.LockCallback;
-
-public class VnfTargetLock extends TargetLockImpl {
-
- private static final long serialVersionUID = 2335897394577202732L;
-
- /**
- * Construct an instance.
- *
- * @param type the target type
- * @param target the target
- * @param requestId the request Id
- * @param callback the callback
- */
- public VnfTargetLock(TargetType type, String target, UUID requestId, LockCallback callback) {
- super(type, target, requestId, callback);
- }
-
- @Override
- public String toString() {
- return "VnfTargetLock [" + super.toString() + "]";
- }
-}
diff --git a/controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardTest.java b/controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardTest.java
deleted file mode 100644
index 5f77d0331..000000000
--- a/controlloop/common/guard/src/test/java/org/onap/policy/guard/PolicyGuardTest.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * guard
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.guard;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.UUID;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.core.lock.PolicyResourceLockManager;
-import org.onap.policy.guard.PolicyGuard.Factory;
-import org.onap.policy.guard.PolicyGuard.LockResult;
-import org.onap.policy.guard.impl.PnfTargetLock;
-import org.onap.policy.guard.impl.VmTargetLock;
-import org.onap.policy.guard.impl.VnfTargetLock;
-
-public class PolicyGuardTest {
- private static final String INSTANCENAME = "targetInstance";
- private static final int LOCK_SEC = 10;
-
- private static Factory saveFactory;
-
- private Factory factory;
- private PolicyResourceLockManager mgr;
- private UUID uuid;
- private DummyLockCallback dlcb;
-
- private class DummyLockCallback implements LockCallback {
- @Override
- public boolean isActive() {
- return false;
- }
-
- @Override
- public boolean releaseLock() {
- return false;
- }
- }
-
- private class DummyTargetLock implements TargetLock {
- private TargetType type;
- private UUID reqid;
-
- public DummyTargetLock(TargetType type, UUID reqid) {
- this.type = type;
- this.reqid = reqid;
- }
-
- @Override
- public UUID getLockId() {
- return null;
- }
-
- @Override
- public TargetType getTargetType() {
- return type;
- }
-
- @Override
- public String getTargetInstance() {
- return INSTANCENAME;
- }
-
- @Override
- public UUID getRequestId() {
- return reqid;
- }
- }
-
- @BeforeClass
- public static void setUpBeforeClass() {
- saveFactory = PolicyGuard.getFactory();
- }
-
- @AfterClass
- public static void tearDownAfterClass() {
- PolicyGuard.setFactory(saveFactory);
- }
-
- /**
- * Setup method.
- */
- @Before
- public void setUp() {
- mgr = spy(new PolicyResourceLockManager() {
- /*
- * we want each test to have its own lock manager, but the constructor for the
- * manager is protected; this gets around that
- */
- });
-
- factory = mock(Factory.class);
- when(factory.getManager()).thenReturn(mgr);
-
- uuid = UUID.randomUUID();
- dlcb = new DummyLockCallback();
-
- PolicyGuard.setFactory(factory);
- }
-
- @Test
- public void testLockVm() {
- TargetType type = TargetType.VM;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VmTargetLock.class, result.getB().getClass());
-
- VmTargetLock vtl = (VmTargetLock) result.getB();
- assertNotNull(vtl.getLockId());
- assertEquals(INSTANCENAME, vtl.getTargetInstance());
- assertEquals(TargetType.VM, vtl.getTargetType());
- assertNotNull(vtl.getRequestId());
- assertEquals(dlcb, vtl.getCallback());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
- @Test
- public void testLockPnf() {
- TargetType type = TargetType.PNF;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(PnfTargetLock.class, result.getB().getClass());
-
- PnfTargetLock ptl = (PnfTargetLock) result.getB();
- assertNotNull(ptl.getLockId());
- assertEquals(INSTANCENAME, ptl.getTargetInstance());
- assertEquals(TargetType.PNF, ptl.getTargetType());
- assertNotNull(ptl.getRequestId());
- assertEquals(dlcb, ptl.getCallback());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
-
- @Test
- public void testLockVnf() {
- TargetType type = TargetType.VNF;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VnfTargetLock.class, result.getB().getClass());
-
- VnfTargetLock vtl = (VnfTargetLock) result.getB();
- assertNotNull(vtl.getLockId());
- assertEquals(INSTANCENAME, vtl.getTargetInstance());
- assertEquals(TargetType.VNF, vtl.getTargetType());
- assertNotNull(vtl.getRequestId());
- assertEquals(dlcb, vtl.getCallback());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
- @Test
- public void testLockVfc() {
- TargetType type = TargetType.VFC;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_EXCEPTION, result.getA());
- assertNull(result.getB());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
- @Test
- public void testUnLockNotLocked() {
- TargetType type = TargetType.VM;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VmTargetLock.class, result.getB().getClass());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- // Test unlock after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
- @Test
- public void testLockAlreadyLocked() {
- TargetType type = TargetType.VM;
-
- // Test isLocked before and after lock added
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- LockResult<GuardResult, TargetLock> result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VmTargetLock.class, result.getB().getClass());
-
- UUID uuid2 = UUID.randomUUID();
- result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid2, dlcb, LOCK_SEC);
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid2));
-
- assertTrue(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
-
- assertEquals(GuardResult.LOCK_DENIED, result.getA());
- assertNull(result.getB());
-
- // Test isLocked after lock removed
- PolicyGuard.unlockTarget(new DummyTargetLock(type, uuid));
- assertFalse(PolicyGuard.isLocked(type, INSTANCENAME, uuid));
- }
-
- @Test
- public void testInnards() {
- TargetType type = TargetType.VM;
-
- assertFalse(dlcb.isActive());
- assertFalse(dlcb.releaseLock());
-
- DummyTargetLock dtl = new DummyTargetLock(type, uuid);
- assertNull(dtl.getLockId());
- assertEquals(uuid, dtl.getRequestId());
- assertEquals(INSTANCENAME, dtl.getTargetInstance());
- assertEquals(type, dtl.getTargetType());
- }
-
- @Test
- public void testLockTargetTargetTypeStringUuidLockCallbackInt() {
- TargetType type = TargetType.VM;
-
- LockResult<GuardResult, TargetLock> result;
-
- // acquired
- result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- verify(mgr).lock(INSTANCENAME, type + ":" + uuid, LOCK_SEC);
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VmTargetLock.class, result.getB().getClass());
-
- // diff owner - denied
- UUID uuid2 = UUID.randomUUID();
- result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid2, dlcb, LOCK_SEC + 10);
- verify(mgr).lock(INSTANCENAME, type + ":" + uuid2, LOCK_SEC + 10);
- assertEquals(GuardResult.LOCK_DENIED, result.getA());
- assertNull(result.getB());
- }
-
- @Test
- public void testLockTargetTargetLockInt() {
- TargetType type = TargetType.VM;
-
- LockResult<GuardResult, TargetLock> result;
-
- // acquired
- result = PolicyGuard.lockTarget(type, INSTANCENAME, uuid, dlcb, LOCK_SEC);
- verify(mgr).lock(INSTANCENAME, type + ":" + uuid, LOCK_SEC);
- assertEquals(GuardResult.LOCK_ACQUIRED, result.getA());
- assertEquals(VmTargetLock.class, result.getB().getClass());
-
- TargetLock lock = result.getB();
-
- // refresh - re-acquired
- assertEquals(GuardResult.LOCK_ACQUIRED, PolicyGuard.lockTarget(lock, LOCK_SEC + 1));
- verify(mgr).refresh(INSTANCENAME, type + ":" + uuid, LOCK_SEC + 1);
-
- // unlock
- PolicyGuard.unlockTarget(lock);
-
- // refresh - denied, as we no longer own the lock
- assertEquals(GuardResult.LOCK_DENIED, PolicyGuard.lockTarget(lock, LOCK_SEC + 2));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testMakeOwner_NullTargetType() {
- PolicyGuard.isLocked(null, INSTANCENAME, uuid);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testMakeOwner_NullReqId() {
- PolicyGuard.isLocked(TargetType.PNF, INSTANCENAME, null);
- }
-}