diff options
Diffstat (limited to 'plugins/plugins-context')
2 files changed, 175 insertions, 0 deletions
diff --git a/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockManagerTest.java b/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockManagerTest.java new file mode 100644 index 000000000..da2c10c34 --- /dev/null +++ b/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockManagerTest.java @@ -0,0 +1,97 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.plugins.context.locking.hazelcast; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.core.LifecycleService; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.onap.policy.apex.context.ContextException; +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; + +class HazelcastLockManagerTest { + + private HazelcastLockManager lockManager; + private HazelcastInstance mockHazelcastInstance; + private LifecycleService mockLifecycleService; + private MockedStatic<Hazelcast> mockedHazelcast; + + @BeforeEach + void setUp() throws ContextException { + mockHazelcastInstance = mock(HazelcastInstance.class); + mockLifecycleService = mock(LifecycleService.class); + + mockedHazelcast = mockStatic(Hazelcast.class); + mockedHazelcast.when(Hazelcast::newHazelcastInstance).thenReturn(mockHazelcastInstance); + + when(mockHazelcastInstance.getLifecycleService()).thenReturn(mockLifecycleService); + when(mockLifecycleService.isRunning()).thenReturn(true); + + lockManager = new HazelcastLockManager(); + } + + @AfterEach + void tearDown() { + mockedHazelcast.close(); + } + + @Test + void testInit() { + AxArtifactKey testKey = new AxArtifactKey("TestKey", "1.0"); + + assertDoesNotThrow(() -> lockManager.init(testKey)); + + mockedHazelcast.verify(Hazelcast::newHazelcastInstance); + } + + @Test + void testGetReentrantReadWriteLockWhenHazelcastNotRunning() { + when(mockLifecycleService.isRunning()).thenReturn(false); + + String lockId = "testLock"; + assertThrows(ContextException.class, () -> lockManager.getReentrantReadWriteLock(lockId)); + } + + @Test + void testShutdown() throws ContextException { + lockManager.init(new AxArtifactKey("TestKey", "1.0")); + assertDoesNotThrow(() -> lockManager.shutdown()); + + verify(mockHazelcastInstance).shutdown(); + } + + @Test + void testShutdownWithoutInit() { + assertDoesNotThrow(() -> lockManager.shutdown()); + verify(mockHazelcastInstance, never()).shutdown(); + } +} diff --git a/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockTest.java b/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockTest.java new file mode 100644 index 000000000..fb3d738cd --- /dev/null +++ b/plugins/plugins-context/plugins-context-locking/plugins-context-locking-hazelcast/src/test/java/org/onap/policy/apex/plugins/context/locking/hazelcast/HazelcastLockTest.java @@ -0,0 +1,78 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.plugins.context.locking.hazelcast; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.cp.CPSubsystem; +import com.hazelcast.cp.lock.FencedLock; +import java.util.concurrent.locks.Lock; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class HazelcastLockTest { + + private HazelcastInstance hazelcastInstance; + private CPSubsystem cpSubsystem; + private FencedLock mockReadLock; + private FencedLock mockWriteLock; + + private HazelcastLock hazelcastLock; + private final String lockId = "testLock"; + + @BeforeEach + void setUp() { + hazelcastInstance = mock(HazelcastInstance.class); + cpSubsystem = mock(CPSubsystem.class); + mockReadLock = mock(FencedLock.class); + mockWriteLock = mock(FencedLock.class); + + when(hazelcastInstance.getCPSubsystem()).thenReturn(cpSubsystem); + when(cpSubsystem.getLock(lockId + "_READ")).thenReturn(mockReadLock); + when(cpSubsystem.getLock(lockId + "_WRITE")).thenReturn(mockWriteLock); + + hazelcastLock = new HazelcastLock(hazelcastInstance, lockId); + } + + @Test + void testConstructor() { + assertEquals(lockId, hazelcastLock.getLockId()); + + verify(cpSubsystem).getLock(lockId + "_READ"); + verify(cpSubsystem).getLock(lockId + "_WRITE"); + } + + @Test + void testReadLock() { + Lock readLock = hazelcastLock.readLock(); + assertEquals(mockReadLock, readLock); + } + + @Test + void testWriteLock() { + Lock writeLock = hazelcastLock.writeLock(); + assertEquals(mockWriteLock, writeLock); + } +} |