Removing deprecated DMAAP library
[policy/drools-pdp.git] / policy-management / src / test / java / org / onap / policy / drools / system / internal / FeatureLockImplTest.java
index a224a63..23511ab 100644 (file)
@@ -2,7 +2,8 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2023-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.
 package org.onap.policy.drools.system.internal;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
-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.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
@@ -38,22 +40,27 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.Serial;
 import java.util.concurrent.ScheduledExecutorService;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.junit.jupiter.MockitoExtension;
 import org.onap.policy.drools.core.DroolsRunnable;
 import org.onap.policy.drools.core.PolicySession;
 import org.onap.policy.drools.core.lock.LockCallback;
 import org.onap.policy.drools.core.lock.LockState;
 import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.powermock.reflect.Whitebox;
+import org.springframework.test.util.ReflectionTestUtils;
 
-public class FeatureLockImplTest {
+@ExtendWith(MockitoExtension.class)
+class FeatureLockImplTest {
     private static final String POLICY_ENGINE_EXECUTOR_FIELD = "executorService";
     private static final String OWNER_KEY = "my key";
     private static final String RESOURCE = "my resource";
@@ -68,36 +75,42 @@ public class FeatureLockImplTest {
     @Mock
     private LockCallback callback;
 
+    AutoCloseable closeable;
 
     /**
      * Saves static fields and configures the location of the property files.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        saveExec = Whitebox.getInternalState(PolicyEngineConstants.getManager(), POLICY_ENGINE_EXECUTOR_FIELD);
+    @BeforeAll
+    static void setUpBeforeClass() {
+        saveExec = (ScheduledExecutorService) ReflectionTestUtils.getField(PolicyEngineConstants.getManager(),
+            POLICY_ENGINE_EXECUTOR_FIELD);
     }
 
     /**
      * Restores static fields.
      */
-    @AfterClass
-    public static void tearDownAfterClass() {
-        Whitebox.setInternalState(PolicyEngineConstants.getManager(), POLICY_ENGINE_EXECUTOR_FIELD, saveExec);
+    @AfterAll
+    static void tearDownAfterClass() {
+        ReflectionTestUtils.setField(PolicyEngineConstants.getManager(), POLICY_ENGINE_EXECUTOR_FIELD, saveExec);
     }
 
     /**
      * Initializes the mocks and creates a feature that uses {@link #exsvc} to execute
      * tasks.
      */
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
+    @BeforeEach
+    void setUp() {
+        closeable = MockitoAnnotations.openMocks(this);
+        ReflectionTestUtils.setField(PolicyEngineConstants.getManager(), POLICY_ENGINE_EXECUTOR_FIELD, exsvc);
+    }
 
-        Whitebox.setInternalState(PolicyEngineConstants.getManager(), POLICY_ENGINE_EXECUTOR_FIELD, exsvc);
+    @AfterEach
+    void closeMocks() throws Exception {
+        closeable.close();
     }
 
     @Test
-    public void testNoArgs() {
+    void testNoArgs() {
         MyLock lock = new MyLock();
         assertNull(lock.getResourceId());
         assertNull(lock.getOwnerKey());
@@ -106,7 +119,7 @@ public class FeatureLockImplTest {
     }
 
     @Test
-    public void testFeatureLockImpl() {
+    void testFeatureLockImpl() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         assertTrue(lock.isWaiting());
         assertEquals(RESOURCE, lock.getResourceId());
@@ -116,7 +129,7 @@ public class FeatureLockImplTest {
     }
 
     @Test
-    public void testSerializable() throws Exception {
+    void testSerializable() throws Exception {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         lock = roundTrip(lock);
 
@@ -129,14 +142,14 @@ public class FeatureLockImplTest {
     }
 
     @Test
-    public void testGrant() {
+    void testGrant() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         lock.grant();
 
         assertTrue(lock.isActive());
         assertEquals(1, lock.nupdates);
 
-        invokeCallback(1);
+        invokeCallback();
         verify(callback).lockAvailable(any());
         verify(callback, never()).lockUnavailable(any());
     }
@@ -145,7 +158,7 @@ public class FeatureLockImplTest {
      * Tests grant() when the lock is already unavailable.
      */
     @Test
-    public void testGrantUnavailable() {
+    void testGrantUnavailable() {
         MyLock lock = new MyLock(LockState.UNAVAILABLE, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         lock.setState(LockState.UNAVAILABLE);
         lock.grant();
@@ -157,13 +170,13 @@ public class FeatureLockImplTest {
     }
 
     @Test
-    public void testDeny() {
+    void testDeny() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         lock.deny("my reason");
 
         assertTrue(lock.isUnavailable());
 
-        invokeCallback(1);
+        invokeCallback();
         verify(callback, never()).lockAvailable(any());
         verify(callback).lockUnavailable(any());
     }
@@ -172,10 +185,11 @@ public class FeatureLockImplTest {
      * Tests doNotify() when a session exists.
      */
     @Test
-    public void testDoNotifySession() {
+    void testDoNotifySession() {
         PolicySession session = mock(PolicySession.class);
 
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback) {
+            @Serial
             private static final long serialVersionUID = 1L;
 
             @Override
@@ -205,20 +219,20 @@ public class FeatureLockImplTest {
      * Tests doNotify() when there is no session.
      */
     @Test
-    public void testDoNotifyNoSession() {
+    void testDoNotifyNoSession() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         lock.grant();
 
         assertTrue(lock.isActive());
         assertEquals(1, lock.nupdates);
 
-        invokeCallback(1);
+        invokeCallback();
         verify(callback).lockAvailable(any());
         verify(callback, never()).lockUnavailable(any());
     }
 
     @Test
-    public void testFreeAllowed() {
+    void testFreeAllowed() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         assertTrue(lock.freeAllowed());
     }
@@ -227,7 +241,7 @@ public class FeatureLockImplTest {
      * Tests freeAllowed() when the lock is unavailable.
      */
     @Test
-    public void testFreeAllowedUnavailable() {
+    void testFreeAllowedUnavailable() {
         MyLock lock = new MyLock(LockState.UNAVAILABLE, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
         assertFalse(lock.freeAllowed());
         assertTrue(lock.isUnavailable());
@@ -239,7 +253,7 @@ public class FeatureLockImplTest {
      * @throws Exception if an error occurs
      */
     @Test
-    public void testFreeAllowedSerialized() throws Exception {
+    void testFreeAllowedSerialized() throws Exception {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         lock = roundTrip(lock);
@@ -252,7 +266,7 @@ public class FeatureLockImplTest {
      * @throws Exception if an error occurs
      */
     @Test
-    public void testFreeAllowedNoFeature() throws Exception {
+    void testFreeAllowedNoFeature() throws Exception {
         MyLock lock = new MyLockNoFeature(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         lock = roundTrip(lock);
@@ -261,7 +275,7 @@ public class FeatureLockImplTest {
     }
 
     @Test
-    public void testExtendAllowed() {
+    void testExtendAllowed() {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         LockCallback scallback = mock(LockCallback.class);
@@ -286,7 +300,7 @@ public class FeatureLockImplTest {
      * Tests extendAllowed() when the lock is unavailable.
      */
     @Test
-    public void testExtendAllowedUnavailable() {
+    void testExtendAllowedUnavailable() {
         MyLock lock = new MyLock(LockState.UNAVAILABLE, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         LockCallback scallback = mock(LockCallback.class);
@@ -295,7 +309,7 @@ public class FeatureLockImplTest {
         assertEquals(HOLD_SEC2, lock.getHoldSec());
         assertSame(scallback, lock.getCallback());
 
-        invokeCallback(1);
+        invokeCallback();
         verify(scallback, never()).lockAvailable(lock);
         verify(scallback).lockUnavailable(lock);
     }
@@ -306,7 +320,7 @@ public class FeatureLockImplTest {
      * @throws Exception if an error occurs
      */
     @Test
-    public void testExtendAllowedSerialized() throws Exception {
+    void testExtendAllowedSerialized() throws Exception {
         MyLock lock = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         lock = roundTrip(lock);
@@ -326,7 +340,7 @@ public class FeatureLockImplTest {
      * @throws Exception if an error occurs
      */
     @Test
-    public void testExtendAllowedNoFeature() throws Exception {
+    void testExtendAllowedNoFeature() throws Exception {
         MyLock lock = new MyLockNoFeature(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         lock = roundTrip(lock);
@@ -337,21 +351,21 @@ public class FeatureLockImplTest {
         assertEquals(HOLD_SEC2, lock.getHoldSec());
         assertSame(scallback, lock.getCallback());
 
-        invokeCallback(1);
+        invokeCallback();
         verify(scallback, never()).lockAvailable(lock);
         verify(scallback).lockUnavailable(lock);
     }
 
     @Test
-    public void testGetSession() {
+    void testGetSession() {
         MyLockStdSession lock = new MyLockStdSession(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback);
 
         // this should invoke the real policy session without throwing an exception
-        lock.grant();
+        assertThatCode(lock::grant).doesNotThrowAnyException();
     }
 
     @Test
-    public void testToString() {
+    void testToString() {
         String text = new MyLock(LockState.WAITING, RESOURCE, OWNER_KEY, HOLD_SEC, callback).toString();
         assertNotNull(text);
         assertThat(text).contains("LockImpl");
@@ -372,21 +386,18 @@ public class FeatureLockImplTest {
     /**
      * Invokes the last call-back in the work queue.
      *
-     * @param nexpected number of call-backs expected in the work queue
      */
-    private void invokeCallback(int nexpected) {
+    private void invokeCallback() {
         ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class);
-        verify(exsvc, times(nexpected)).execute(captor.capture());
-
-        if (nexpected > 0) {
-            captor.getAllValues().get(nexpected - 1).run();
-        }
+        verify(exsvc, times(1)).execute(captor.capture());
+        captor.getAllValues().get(0).run();
     }
 
     /**
      * Lock that inherits the normal getSession() method.
      */
     public static class MyLockStdSession extends FeatureLockImpl {
+        @Serial
         private static final long serialVersionUID = 1L;
         protected int nupdates = 0;
 
@@ -395,7 +406,7 @@ public class FeatureLockImplTest {
         }
 
         public MyLockStdSession(LockState state, String resourceId, String ownerKey, int holdSec,
-                        LockCallback callback) {
+            LockCallback callback) {
             super(state, resourceId, ownerKey, holdSec, callback);
         }
 
@@ -422,6 +433,7 @@ public class FeatureLockImplTest {
     }
 
     public static class MyLock extends MyLockStdSession {
+        @Serial
         private static final long serialVersionUID = 1L;
 
         public MyLock() {
@@ -439,6 +451,7 @@ public class FeatureLockImplTest {
     }
 
     public static class MyLockNoFeature extends MyLock {
+        @Serial
         private static final long serialVersionUID = 1L;
 
         public MyLockNoFeature() {
@@ -446,7 +459,7 @@ public class FeatureLockImplTest {
         }
 
         public MyLockNoFeature(LockState state, String resourceId, String ownerKey, int holdSec,
-                        LockCallback callback) {
+            LockCallback callback) {
             super(state, resourceId, ownerKey, holdSec, callback);
         }