changeset 1053:b288a8a06f03

Incorrect value for the harvesting status is added to storage Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-April/006264.html
author Omair Majid <omajid@redhat.com>
date Wed, 03 Apr 2013 15:30:56 -0400
parents dc66dff085a1
children 1ceeba5420f2
files thread/harvester/src/main/java/com/redhat/thermostat/thread/harvester/ThreadHarvester.java thread/harvester/src/test/java/com/redhat/thermostat/thread/harvester/ThreadHarvesterTest.java
diffstat 2 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/thread/harvester/src/main/java/com/redhat/thermostat/thread/harvester/ThreadHarvester.java	Tue Apr 02 14:30:12 2013 -0400
+++ b/thread/harvester/src/main/java/com/redhat/thermostat/thread/harvester/ThreadHarvester.java	Wed Apr 03 15:30:56 2013 -0400
@@ -159,7 +159,12 @@
 
     /** Save current status to storage */
     public void addThreadHarvestingStatus(String pid) {
-        updateHarvestingStatus(Integer.valueOf(pid), connectors.containsKey(pid));
+        boolean harvesting = false;
+        Harvester harvester = connectors.get(pid);
+        if (harvester != null) {
+            harvesting = harvester.isConnected();
+        }
+        updateHarvestingStatus(Integer.valueOf(pid), harvesting);
     }
 
     private void updateHarvestingStatus(int vmId, boolean harvesting) {
--- a/thread/harvester/src/test/java/com/redhat/thermostat/thread/harvester/ThreadHarvesterTest.java	Tue Apr 02 14:30:12 2013 -0400
+++ b/thread/harvester/src/test/java/com/redhat/thermostat/thread/harvester/ThreadHarvesterTest.java	Wed Apr 03 15:30:56 2013 -0400
@@ -186,6 +186,28 @@
     }
 
     @Test
+    public void testHarvestingStatusAfterSavingVmCaps() {
+        ScheduledExecutorService executor = mock(ScheduledExecutorService.class);
+        Clock clock = mock(Clock.class);
+        when(clock.getRealTimeMillis()).thenReturn(1l);
+        ThreadDao dao = mock(ThreadDao.class);
+
+        ThreadHarvester harvester = new ThreadHarvester(executor, clock);
+        harvester.setThreadDao(dao);
+
+        harvester.saveVmCaps("10");
+        harvester.addThreadHarvestingStatus("10");
+
+        ArgumentCaptor<ThreadHarvestingStatus> statusCaptor = ArgumentCaptor.forClass(ThreadHarvestingStatus.class);
+        verify(dao).saveHarvestingStatus(statusCaptor.capture());
+
+        ThreadHarvestingStatus status = statusCaptor.getValue();
+        assertEquals(10, status.getVmId());
+        assertEquals(false, status.isHarvesting());
+        assertEquals(1, status.getTimeStamp());
+    }
+
+    @Test
     public void testStopAndRemoveAll() {
         ScheduledExecutorService executor = mock(ScheduledExecutorService.class);
         Clock clock = mock(Clock.class);