changeset 2718:084cba24ae87

Add timestamp to host-overview service This patch adds a timestamp to host-overview plugin, so the table can be sorted by ... time. Due to the Thermostat architecture, this will propagate through to /system-info in the web gateway. A later patch will update the API version and swaggger docs. Reviewed-by: sgehwolf Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-July/024030.html
author Simon Tooke <stooke@redhat.com>
date Mon, 10 Jul 2017 14:49:31 -0400
parents 08b2cadf2d42
children 597f67d95197
files plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/internal/models/HostInfoBuilderImpl.java plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfo.java plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapter.java plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/internal/models/HostInfoDAOImplTest.java plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapterTest.java
diffstat 5 files changed, 28 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/internal/models/HostInfoBuilderImpl.java	Thu Jul 06 13:05:47 2017 -0400
+++ b/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/internal/models/HostInfoBuilderImpl.java	Mon Jul 10 14:49:31 2017 -0400
@@ -36,6 +36,8 @@
 
 package com.redhat.thermostat.host.overview.internal.models;
 
+import com.redhat.thermostat.common.Clock;
+import com.redhat.thermostat.common.SystemClock;
 import com.redhat.thermostat.common.portability.PortableHost;
 import com.redhat.thermostat.common.portability.PortableHostFactory;
 import com.redhat.thermostat.host.overview.model.HostInfo;
@@ -48,6 +50,7 @@
 
     private final WriterID writerID;
     private final PortableHost helper;
+    private final Clock clock;
 
     public HostInfoBuilderImpl(final WriterID writerID) {
         this(writerID, PortableHostFactory.getInstance());
@@ -56,12 +59,14 @@
     HostInfoBuilderImpl(final WriterID writerID, PortableHost helper) {
         this.writerID = writerID;
         this.helper = helper;
+        this.clock = new SystemClock();
     }
 
     @Override
     public HostInfo build() {
         String wId = writerID.getWriterID();
         return new HostInfo(wId,
+                clock.getRealTimeMillis(),
                 helper.getHostName(),
                 helper.getOSName(),
                 helper.getOSVersion(),
--- a/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfo.java	Thu Jul 06 13:05:47 2017 -0400
+++ b/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfo.java	Mon Jul 10 14:49:31 2017 -0400
@@ -49,13 +49,15 @@
     private String cpuModel;
     private int cpuCount;
     private long totalMemory;
+    private long timeStamp;
 
     public HostInfo() {
-        this(null, null, null, null, null, -1, -1);
+        this(null, 0, null, null, null, null, -1, -1);
     }
 
-    public HostInfo(String writerId, String hostname, String osName, String osKernel, String cpuModel, int cpuCount, long totalMemory) {
+    public HostInfo(String writerId, long timeStamp, String hostname, String osName, String osKernel, String cpuModel, int cpuCount, long totalMemory) {
         super(writerId);
+        this.timeStamp = timeStamp;
         this.hostname = hostname;
         this.osName = osName;
         this.osKernel = osKernel;
@@ -127,5 +129,12 @@
         return totalMemory;
     }
 
+    public long getTimeStamp() {
+        return timeStamp;
+    }
+
+    public void setTimeStamp(long timeStamp) {
+        this.timeStamp = timeStamp;
+    }
 }
 
--- a/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapter.java	Thu Jul 06 13:05:47 2017 -0400
+++ b/plugins/host-overview/agent/src/main/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapter.java	Mon Jul 10 14:49:31 2017 -0400
@@ -47,6 +47,7 @@
     
     private static final String AGENT_ID = "agentId";
     private static final String HOSTNAME = "hostname";
+    private static final String TIMESTAMP = "timeStamp";
     private static final String OS_NAME = "osName";
     private static final String OS_KERNEL = "osKernel";
     private static final String CPU_MODEL = "cpuModel";
@@ -74,6 +75,8 @@
         out.value(info.getAgentId());
         out.name(HOSTNAME);
         out.value(info.getHostname());
+        out.name(TIMESTAMP);
+        writeLong(out, info.getTimeStamp());
         out.name(OS_NAME);
         out.value(info.getOsName());
         out.name(OS_KERNEL);
--- a/plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/internal/models/HostInfoDAOImplTest.java	Thu Jul 06 13:05:47 2017 -0400
+++ b/plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/internal/models/HostInfoDAOImplTest.java	Mon Jul 10 14:49:31 2017 -0400
@@ -62,6 +62,7 @@
     private static final String URL = "http://localhost:26000/api/systems/v0.0.3";
     private static final String SOME_JSON = "{\"some\" : \"json\"}";
     private static final String HOST_NAME = "a host name";
+    private static final long TIMESTAMP = 77L;
     private static final String OS_NAME = "some os";
     private static final String OS_KERNEL = "some kernel";
     private static final String CPU_MODEL = "some cpu that runs fast";
@@ -79,7 +80,7 @@
     
     @Before
     public void setup() throws Exception {
-        info = new HostInfo("foo-agent", HOST_NAME, OS_NAME, OS_KERNEL, CPU_MODEL, CPU_NUM, MEMORY_TOTAL);
+        info = new HostInfo("foo-agent", TIMESTAMP, HOST_NAME, OS_NAME, OS_KERNEL, CPU_MODEL, CPU_NUM, MEMORY_TOTAL);
 
         httpRequestService = mock(HttpRequestService.class);
         jsonHelper = mock(HostInfoDAOImpl.JsonHelper.class);
--- a/plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapterTest.java	Thu Jul 06 13:05:47 2017 -0400
+++ b/plugins/host-overview/agent/src/test/java/com/redhat/thermostat/host/overview/model/HostInfoTypeAdapterTest.java	Mon Jul 10 14:49:31 2017 -0400
@@ -55,15 +55,17 @@
 
     @Test
     public void testWrite() throws Exception {
-        final String expected = "[{\"agentId\":\"myAgent1\",\"hostname\":\"myHost1\"," 
+        final String expected = "[{\"agentId\":\"myAgent1\",\"hostname\":\"myHost1\","
+                + "\"timeStamp\":{\"$numberLong\":\"111\"},"
                 + "\"osName\":\"myOS1\",\"osKernel\":\"myKernel1\",\"cpuModel\":\"myCPU1\"," 
                 + "\"cpuCount\":4,\"totalMemory\":{\"$numberLong\":\"400000000\"}}," 
-                + "{\"agentId\":\"myAgent2\",\"hostname\":\"myHost2\",\"osName\":\"myOS2\"," 
-                + "\"osKernel\":\"myKernel2\",\"cpuModel\":\"myCPU2\",\"cpuCount\":2," 
+                + "{\"agentId\":\"myAgent2\",\"hostname\":\"myHost2\","
+                + "\"timeStamp\":{\"$numberLong\":\"222\"},"
+                + "\"osName\":\"myOS2\",\"osKernel\":\"myKernel2\",\"cpuModel\":\"myCPU2\",\"cpuCount\":2,"
                 + "\"totalMemory\":{\"$numberLong\":\"800000000\"}}]";
         
-        HostInfo first = new HostInfo("myAgent1", "myHost1", "myOS1", "myKernel1", "myCPU1", 4, 400000000L);
-        HostInfo second = new HostInfo("myAgent2", "myHost2", "myOS2", "myKernel2", "myCPU2", 2, 800000000L);
+        HostInfo first = new HostInfo("myAgent1", 111, "myHost1", "myOS1", "myKernel1", "myCPU1", 4, 400000000L);
+        HostInfo second = new HostInfo("myAgent2", 222, "myHost2", "myOS2", "myKernel2", "myCPU2", 2, 800000000L);
         List<HostInfo> infos = Arrays.asList(first, second);
         
         String json = adapter.toJson(infos);