Merge "Remove powermock to increase coverage"
[policy/engine.git] / BRMSGateway / src / test / java / org / onap / policy / brms / api / BrmsGatewayTest.java
index fd8a7ed..b34b18b 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
 
 package org.onap.policy.brms.api;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
 
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.onap.policy.api.PolicyException;
+import org.onap.policy.brms.api.BrmsGateway.Factory;
+import org.powermock.reflect.Whitebox;
 
-@RunWith(PowerMockRunner.class)
 public class BrmsGatewayTest {
+    private static final String FACTORY_FIELD = "factory";
+
+    private static Factory saveFactory;
+
+    private Thread thread;
+
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        saveFactory = Whitebox.getInternalState(BrmsGateway.class, FACTORY_FIELD);
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() {
+        Whitebox.setInternalState(BrmsGateway.class, FACTORY_FIELD, saveFactory);
+    }
+
+    /**
+     * Installs a factory.
+     */
+    @Before
+    public void setUp() {
+        thread = null;
+
+        Factory factory = new Factory() {
+            @Override
+            public BrmsHandler makeBrmsHandler(String configFile) throws PolicyException {
+                // Mock handler
+                return Mockito.mock(BrmsHandler.class);
+            }
+
+            @Override
+            public Thread makeThread(Runnable runnable) {
+                thread = super.makeThread(runnable);
+                return thread;
+            }
+
+        };
+
+        Whitebox.setInternalState(BrmsGateway.class, FACTORY_FIELD, factory);
+    }
+
+    /**
+     * Interrupts the thread, if there is one.
+     */
+    @After
+    public void tearDown() throws InterruptedException {
+        if (thread != null) {
+            thread.interrupt();
+            thread.join(5000L);
+            assertFalse(thread.isAlive());
+        }
+    }
+
+    @Test
+    public void testFactory() throws InterruptedException {
+        assertNotNull(saveFactory);
+        assertNotNull(saveFactory.makeThread(() -> { }));
+    }
+
     @Test
     public void testGet() {
         assertNull(BrmsGateway.getPolicyEngine());
     }
 
-    @PrepareForTest({Thread.class, BrmsGateway.class})
     @Test
     public void testMain() throws Exception {
-        // Mock Thread
-        PowerMockito.spy(Thread.class);
-        PowerMockito.doNothing().when(Thread.class);
-        Thread.sleep(1000);
-
-        // Mock handler
-        final BrmsHandler handler = Mockito.mock(BrmsHandler.class);
-        PowerMockito.whenNew(BrmsHandler.class).withArguments(any()).thenReturn(handler);
-
-        // Run app
         try {
             final String[] args = new String[0];
             BrmsGateway.main(args);