Mercurial > hg > thermostat
changeset 2537:3043357ca031
Clean up gc-command tests
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-November/021720.html
author | Andrew Azores <aazores@redhat.com> |
---|---|
date | Thu, 24 Nov 2016 12:34:53 -0500 |
parents | 8b9ec59e8c2d |
children | 046f98a748f5 |
files | vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListener.java vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerFactoryImpl.java vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerTest.java vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandTest.java |
diffstat | 4 files changed, 63 insertions(+), 128 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListener.java Tue Nov 22 12:48:19 2016 -0500 +++ b/vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListener.java Thu Nov 24 12:34:53 2016 -0500 @@ -49,14 +49,25 @@ import com.redhat.thermostat.shared.locale.Translate; public class GCCommandListener implements RequestResponseListener { + private static final Translate<LocaleResources> translator = LocaleResources.createLocalizer(); - private static final Logger logger = LoggingUtils - .getLogger(GCCommandListener.class); private final CountDownLatch latch = new CountDownLatch(1); - private PrintStream out; - private PrintStream err; + private final Logger logger; + private final PrintStream out; + private final PrintStream err; + + // injectable logger intended for testing only + GCCommandListener(Logger logger, PrintStream out, PrintStream err) { + this.logger = logger; + this.out = out; + this.err = err; + } + + GCCommandListener(PrintStream out, PrintStream err) { + this(LoggingUtils.getLogger(GCCommandListener.class), out, err); + } @Override public void fireComplete(Request request, Response response) { @@ -95,11 +106,4 @@ this.latch.await(milliseconds, TimeUnit.MILLISECONDS); } - public void setOut(PrintStream out) { - this.out = out; - } - - public void setErr(PrintStream err) { - this.err = err; - } }
--- a/vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerFactoryImpl.java Tue Nov 22 12:48:19 2016 -0500 +++ b/vm-gc/command/src/main/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerFactoryImpl.java Thu Nov 24 12:34:53 2016 -0500 @@ -41,9 +41,6 @@ class GCCommandListenerFactoryImpl implements GCCommandListenerFactory { @Override public GCCommandListener createListener(PrintStream out, PrintStream err) { - GCCommandListener gcCommandListener = new GCCommandListener(); - gcCommandListener.setOut(out); - gcCommandListener.setErr(err); - return gcCommandListener; + return new GCCommandListener(out, err); } }
--- a/vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerTest.java Tue Nov 22 12:48:19 2016 -0500 +++ b/vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandListenerTest.java Thu Nov 24 12:34:53 2016 -0500 @@ -36,131 +36,74 @@ package com.redhat.thermostat.vm.gc.command.internal; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; -import java.io.ByteArrayOutputStream; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + import java.io.PrintStream; -import java.nio.charset.StandardCharsets; -import java.util.logging.Handler; +import java.util.Locale; import java.util.logging.Level; -import java.util.logging.LogRecord; import java.util.logging.Logger; -import org.junit.Before; -import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - import com.redhat.thermostat.common.command.Request; import com.redhat.thermostat.common.command.Response; -import com.redhat.thermostat.common.utils.LoggingUtils; public class GCCommandListenerTest { - private final GCCommandListener listener = new GCCommandListener(); - private static final Logger logger = LoggingUtils - .getLogger(GCCommandListener.class); + private static Locale defaultLocale; + + private GCCommandListener listener; + + private Logger logger; + private PrintStream out; + private PrintStream err; - private PrintStream ps; - private ByteArrayOutputStream baos; + @BeforeClass + public static void setupClass() { + defaultLocale = Locale.getDefault(); + Locale.setDefault(Locale.US); + } + @AfterClass + public static void teardownClass() { + Locale.setDefault(defaultLocale); + } @Before public void setup() { - baos = new ByteArrayOutputStream(); - ps = new PrintStream(baos); - listener.setOut(ps); - listener.setErr(ps); + logger = mock(Logger.class); + out = mock(PrintStream.class); + err = mock(PrintStream.class); + + listener = new GCCommandListener(logger, out, err); } @Test public void testSuccessfulGCResponse() { - Request request = mock(Request.class); - - Response resp = new Response(Response.ResponseType.OK); - - Handler handler = mock(Handler.class); - logger.addHandler(handler); + listener.fireComplete(mock(Request.class), new Response(Response.ResponseType.OK)); - final boolean[] complete = {false}; - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) throws Throwable { - LogRecord log = (LogRecord)invocation.getArguments()[0]; - if (log.getLevel().equals(Level.INFO)) { - complete[0] = true; - } - return null; - } - }).when(handler).publish(any(LogRecord.class)); - - listener.fireComplete(request, resp); - - assertTrue(complete[0]); - - String expected = "GC Successful for VM with PID: null\n"; - assertEquals(expected, new String(baos.toByteArray(), StandardCharsets.UTF_8)); + verify(logger).log(Level.INFO, "Garbage Collection performed on VM with PID null"); + verify(out).println("GC Successful for VM with PID: null"); } @Test public void testErrorResponse() { - Request request = mock(Request.class); - Response resp = new Response(Response.ResponseType.ERROR); - - Handler handler = mock(Handler.class); - logger.addHandler(handler); + listener.fireComplete(mock(Request.class), new Response(Response.ResponseType.ERROR)); - final boolean[] complete = {false}; - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) throws Throwable { - LogRecord log = (LogRecord)invocation.getArguments()[0]; - if (log.getLevel().equals(Level.SEVERE)) { - complete[0] = true; - } - return null; - } - }).when(handler).publish(any(LogRecord.class)); - - listener.fireComplete(request, resp); - - assertTrue(complete[0]); - - String expected = "GC Request Error for VM with PID: null\n"; - assertEquals(expected, new String(baos.toByteArray(), StandardCharsets.UTF_8)); + verify(logger).log(Level.SEVERE, "GC Request error for VM PID null"); + verify(err).println("GC Request Error for VM with PID: null"); } @Test public void testDefaultResponse() { - Request request = mock(Request.class); - Response resp = new Response(Response.ResponseType.NOK); - - Handler handler = mock(Handler.class); - logger.addHandler(handler); + listener.fireComplete(mock(Request.class), new Response(Response.ResponseType.NOK)); - final boolean[] complete = {false}; - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) throws Throwable { - LogRecord log = (LogRecord)invocation.getArguments()[0]; - if (log.getLevel().equals(Level.WARNING)) { - complete[0] = true; - } - return null; - } - }).when(handler).publish(any(LogRecord.class)); + verify(logger).log(Level.WARNING, "Unknown result from GC command"); + verify(out).println("Unknown result for GC request"); + } - listener.fireComplete(request, resp); - - assertTrue(complete[0]); - - assertTrue(baos.size() > 0); - - String expected = "Unknown result for GC request\n"; - assertEquals(expected, new String(baos.toByteArray(), StandardCharsets.UTF_8)); - } }
--- a/vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandTest.java Tue Nov 22 12:48:19 2016 -0500 +++ b/vm-gc/command/src/test/java/com/redhat/thermostat/vm/gc/command/internal/GCCommandTest.java Thu Nov 24 12:34:53 2016 -0500 @@ -36,17 +36,14 @@ package com.redhat.thermostat.vm.gc.command.internal; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import com.redhat.thermostat.client.cli.VmArgument; import com.redhat.thermostat.common.cli.CommandContext; @@ -72,6 +69,8 @@ private VmInfoDAO vmInfoDAO; private AgentInfoDAO agentInfoDAO; private GCRequest gcRequest; + private GCCommandListenerFactory gcCommandListenerFactory; + private GCCommandListener gcCommandListener; @Before public void setup() { @@ -81,11 +80,11 @@ agentInfoDAO = mock(AgentInfoDAO.class); gcRequest = mock(GCRequest.class); - GCCommandListenerFactory listenerFactory = mock(GCCommandListenerFactory.class); - GCCommandListener listener = mock(GCCommandListener.class); - when(listenerFactory.createListener(any(PrintStream.class), any(PrintStream.class))).thenReturn(listener); + gcCommandListenerFactory = mock(GCCommandListenerFactory.class); + gcCommandListener = mock(GCCommandListener.class); + when(gcCommandListenerFactory.createListener(any(PrintStream.class), any(PrintStream.class))).thenReturn(gcCommandListener); - command = new GCCommand(listenerFactory); + command = new GCCommand(gcCommandListenerFactory); } @Test @@ -105,22 +104,14 @@ when(vmInfoDAO.getVmInfo(any(VmId.class))).thenReturn(vmInfo); - final boolean[] complete = {false}; - doAnswer(new Answer() { - @Override - public Object answer(InvocationOnMock invocation) throws Throwable { - complete[0] = true; - return null; - } - }).when(gcRequest).sendGCRequestToAgent(eq(vmRef), eq(agentInfoDAO), any(GCCommandListener.class)); - CommandContext context = createVmIdArgs(vmId); setServices(); command.run(context); - assertTrue(complete[0]); + verify(gcRequest).sendGCRequestToAgent(vmRef, agentInfoDAO, gcCommandListener); + verify(gcCommandListenerFactory).createListener(any(PrintStream.class), any(PrintStream.class)); } @Test(expected = CommandException.class)