Mercurial > hg > release > thermostat-0.4
changeset 569:8a0323e7e0ac
Use agent-id and vm-id as partial keys
AGENT_ID and VM_ID were supposed to have been partial keys all along,
but somehow they never were. Fix that.
Reviewed-by: jerboaa, vanaltj
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-August/002947.html
line wrap: on
line diff
--- a/common/core/src/main/java/com/redhat/thermostat/common/storage/Chunk.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/main/java/com/redhat/thermostat/common/storage/Chunk.java Wed Aug 29 14:32:51 2012 -0400 @@ -100,4 +100,9 @@ return Objects.equals(this.category, other.category) && Objects.equals(this.values, other.values); } + @Override + public String toString() { + return "Chunk: " + category.getName() + values.toString(); + } + }
--- a/common/core/src/main/java/com/redhat/thermostat/common/storage/Key.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/main/java/com/redhat/thermostat/common/storage/Key.java Wed Aug 29 14:32:51 2012 -0400 @@ -44,8 +44,8 @@ // Keys used by most Categories. public static final Key<Long> TIMESTAMP = new Key<>("timestamp", false); - public static final Key<String> AGENT_ID = new Key<>("agent-id", false); - public static final Key<Integer> VM_ID = new Key<>("vm-id", false); + public static final Key<String> AGENT_ID = new Key<>("agent-id", true); + public static final Key<Integer> VM_ID = new Key<>("vm-id", true); public static final Key<String> WHERE = new Key<>("$where", false); public static final Key<String> ID = new Key<>("_id", false);
--- a/common/core/src/main/java/com/redhat/thermostat/common/storage/MongoStorage.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/main/java/com/redhat/thermostat/common/storage/MongoStorage.java Wed Aug 29 14:32:51 2012 -0400 @@ -141,7 +141,7 @@ BasicDBObject nested = nestedParts.get(entryParts[0]); if (nested == null) { if (isKey) { - throwMissingKey(key.getName()); + throwMissingKey(key.getName(), chunk); } nested = new BasicDBObject(); nestedParts.put(entryParts[0], nested); @@ -156,11 +156,12 @@ replaceKeyNested.append(entryParts[1], replaceKeyNested); } } else { + /* we dont modify agent id, and it's already used as key in updateKey */ if (!key.equals(Key.AGENT_ID)) { String mongoKey = key.getName(); Object value = chunk.get(key); if ((value == null) && isKey) { - throwMissingKey(key.getName()); + throwMissingKey(key.getName(), chunk); } toInsert.append(mongoKey, value); if (replace && isKey) { @@ -197,7 +198,7 @@ BasicDBObject nested = nestedParts.get(entryParts[0]); if (nested == null) { if (isKey) { - throwMissingKey(key.getName()); + throwMissingKey(key.getName(), chunk); } } else { if (isKey) { @@ -213,16 +214,19 @@ } } else { String mongoKey = key.getName(); - Object value = chunk.get(key); - if (value == null) { - if (isKey) { - throwMissingKey(key.getName()); - } - } else { - if (isKey) { - updateKey.append(mongoKey, value); + /* we dont modify agent id, and it's already used as key in updateKey */ + if (!key.equals(Key.AGENT_ID)) { + Object value = chunk.get(key); + if (value == null) { + if (isKey) { + throwMissingKey(key.getName(), chunk); + } } else { - toUpdate.append(SET_MODIFIER, new BasicDBObject(mongoKey, value)); + if (isKey) { + updateKey.append(mongoKey, value); + } else { + toUpdate.append(SET_MODIFIER, new BasicDBObject(mongoKey, value)); + } } } } @@ -236,8 +240,8 @@ coll.update(updateKey, toUpdate); } - private void throwMissingKey(String keyName) { - throw new IllegalArgumentException("Attempt to insert chunk with incomplete partial key. Missing: " + keyName); + private void throwMissingKey(String keyName, Chunk chunk) { + throw new IllegalArgumentException("Attempt to insert chunk with incomplete partial key. Missing: '" + keyName + "' in " + chunk); } private DBCollection getCachedCollection(String collName) {
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/CpuStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/CpuStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -67,7 +67,7 @@ public void testCategory() { assertEquals("cpu-stats", CpuStatDAO.cpuStatCategory.getName()); Collection<Key<?>> keys = CpuStatDAO.cpuStatCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<Double>("processor-usage", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/HeapDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/HeapDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -187,8 +187,8 @@ Collection<Key<?>> keys = category.getKeys(); assertEquals(6, keys.size()); assertTrue(keys.contains(new Key<>("_id", false))); - assertTrue(keys.contains(new Key<>("agent-id", false))); - assertTrue(keys.contains(new Key<>("vm-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); + assertTrue(keys.contains(new Key<>("vm-id", true))); assertTrue(keys.contains(new Key<>("timestamp", false))); assertTrue(keys.contains(new Key<>("heap-dump-id", false))); assertTrue(keys.contains(new Key<>("histogram-id", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/HostInfoDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/HostInfoDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -72,7 +72,7 @@ public void testCategory() { assertEquals("host-info", HostInfoDAO.hostInfoCategory.getName()); Collection<Key<?>> keys = HostInfoDAO.hostInfoCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<String>("hostname", true))); assertTrue(keys.contains(new Key<String>("os_name", false))); assertTrue(keys.contains(new Key<String>("os_kernel", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/MemoryStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/MemoryStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -74,7 +74,7 @@ public void testCategory() { assertEquals("memory-stats", MemoryStatDAO.memoryStatCategory.getName()); Collection<Key<?>> keys = MemoryStatDAO.memoryStatCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<Long>("total", false))); assertTrue(keys.contains(new Key<Long>("free", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/NetworkInterfaceInfoDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/NetworkInterfaceInfoDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -69,7 +69,7 @@ assertEquals("network-info", NetworkInterfaceInfoDAO.networkInfoCategory.getName()); keys = NetworkInterfaceInfoDAO.networkInfoCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<String>("iface", true))); assertTrue(keys.contains(new Key<String>("ipv4addr", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmClassStatConverterTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmClassStatConverterTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -55,7 +55,7 @@ assertEquals("vm-class-stats", chunk.getCategory().getName()); assertEquals((Long) 1234L, chunk.get(Key.TIMESTAMP)); - assertEquals((Integer) 123, chunk.get(new Key<Integer>("vm-id", false))); + assertEquals((Integer) 123, chunk.get(new Key<Integer>("vm-id", true))); assertEquals((Long) 12345L, chunk.get(new Key<Long>("loadedClasses", false))); }
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmClassStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmClassStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -67,8 +67,8 @@ public void testCategory() { assertEquals("vm-class-stats", VmClassStatDAO.vmClassStatsCategory.getName()); Collection<Key<?>> keys = VmClassStatDAO.vmClassStatsCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); - assertTrue(keys.contains(new Key<Integer>("vm-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); + assertTrue(keys.contains(new Key<Integer>("vm-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<Long>("loadedClasses", false))); assertEquals(4, keys.size());
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmCpuStatConverterTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmCpuStatConverterTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -58,7 +58,7 @@ assertNotNull(chunk); assertEquals("vm-cpu-stats", chunk.getCategory().getName()); assertEquals((Long)TIMESTAMP, chunk.get(Key.TIMESTAMP)); - assertEquals((Integer) VM_ID, chunk.get(new Key<Long>("vm-id", false))); + assertEquals((Integer) VM_ID, chunk.get(new Key<Long>("vm-id", true))); assertEquals(PROCESSOR_USAGE, chunk.get(new Key<Double>("processor-usage", false)), 0.001); }
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmCpuStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmCpuStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -80,9 +80,9 @@ public void testCategory() { assertEquals("vm-cpu-stats", VmCpuStatDAO.vmCpuStatCategory.getName()); Collection<Key<?>> keys = VmCpuStatDAO.vmCpuStatCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); - assertTrue(keys.contains(new Key<Integer>("vm-id", false))); + assertTrue(keys.contains(new Key<Integer>("vm-id", true))); assertTrue(keys.contains(new Key<Integer>("processor-usage", false))); assertEquals(4, keys.size()); }
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmGcStatConverterTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmGcStatConverterTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -60,7 +60,7 @@ assertNotNull(chunk); assertEquals("vm-gc-stats", chunk.getCategory().getName()); assertEquals(TIMESTAMP, chunk.get(new Key<Long>("timestamp", false))); - assertEquals(VM_ID, chunk.get(new Key<Integer>("vm-id", false))); + assertEquals(VM_ID, chunk.get(new Key<Integer>("vm-id", true))); assertEquals(COLLECTOR, chunk.get(new Key<String>("collector", false))); assertEquals(RUN_COUNT, chunk.get(new Key<Long>("runtime-count", false))); assertEquals(WALL_TIME, chunk.get(new Key<Long>("wall-time", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmGcStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmGcStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -70,8 +70,8 @@ public void testCategory() { assertEquals("vm-gc-stats", VmGcStatDAO.vmGcStatCategory.getName()); Collection<Key<?>> keys = VmGcStatDAO.vmGcStatCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); - assertTrue(keys.contains(new Key<Integer>("vm-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); + assertTrue(keys.contains(new Key<Integer>("vm-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<String>("collector", false))); assertTrue(keys.contains(new Key<Long>("runtime-count", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmInfoDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmInfoDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -109,7 +109,7 @@ public void testCategory() { assertEquals("vm-info", VmInfoDAO.vmInfoCategory.getName()); Collection<Key<?>> keys = VmInfoDAO.vmInfoCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); assertTrue(keys.contains(new Key<Integer>("vm-id", true))); assertTrue(keys.contains(new Key<Integer>("vm-pid", false))); assertTrue(keys.contains(new Key<String>("runtime-version", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmMemoryStatConverterTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmMemoryStatConverterTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -88,7 +88,7 @@ assertNotNull(chunk); assertEquals((Long) 1l, chunk.get(new Key<Long>("timestamp", false))); - assertEquals((Integer) 2, chunk.get(new Key<Integer>("vm-id", false))); + assertEquals((Integer) 2, chunk.get(new Key<Integer>("vm-id", true))); assertEquals("new", chunk.get(new Key<String>("eden.gen", false))); assertEquals("new", chunk.get(new Key<String>("eden.collector", false))); assertEquals((Long) 0l, chunk.get(new Key<Long>("eden.used", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/dao/VmMemoryStatDAOTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/dao/VmMemoryStatDAOTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -116,8 +116,8 @@ assertEquals("vm-memory-stats", VmMemoryStatDAO.vmMemoryStatsCategory.getName()); keys = VmMemoryStatDAO.vmMemoryStatsCategory.getKeys(); - assertTrue(keys.contains(new Key<>("agent-id", false))); - assertTrue(keys.contains(new Key<Integer>("vm-id", false))); + assertTrue(keys.contains(new Key<>("agent-id", true))); + assertTrue(keys.contains(new Key<Integer>("vm-id", true))); assertTrue(keys.contains(new Key<Long>("timestamp", false))); assertTrue(keys.contains(new Key<String>("eden.gen", false))); assertTrue(keys.contains(new Key<String>("eden.collector", false))); @@ -234,7 +234,7 @@ assertEquals(VmMemoryStatDAO.vmMemoryStatsCategory, chunk.getCategory()); assertEquals((Long) 1l, chunk.get(new Key<Long>("timestamp", false))); - assertEquals((Integer) 2, chunk.get(new Key<Integer>("vm-id", false))); + assertEquals((Integer) 2, chunk.get(new Key<Integer>("vm-id", true))); assertEquals("new", chunk.get(new Key<String>("eden.gen", false))); assertEquals("new", chunk.get(new Key<String>("eden.collector", false))); assertEquals((Long) 0l, chunk.get(new Key<Long>("eden.used", false)));
--- a/common/core/src/test/java/com/redhat/thermostat/common/storage/KeyTest.java Wed Aug 22 14:52:00 2012 +0200 +++ b/common/core/src/test/java/com/redhat/thermostat/common/storage/KeyTest.java Wed Aug 29 14:32:51 2012 -0400 @@ -130,4 +130,14 @@ String string1 = key1.toString(); assertEquals(string1, "Key: key1"); } + + @Test + public void verifyAgentIdIsPartialkey() { + assertTrue(Key.AGENT_ID.isPartialCategoryKey()); + } + + @Test + public void verifyVmIdIsPartialkey() { + assertTrue(Key.VM_ID.isPartialCategoryKey()); + } }