Mercurial > hg > thermostat-ng > agent
changeset 2425:47c53031d2bc
Avoid IOOBE in VmSocketIdentifier.
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-August/020653.html
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Tue, 23 Aug 2016 19:16:09 +0200 |
parents | d3945e6e5b8b |
children | ec9be9806a79 |
files | vm-byteman/agent/src/main/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifier.java vm-byteman/agent/src/test/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifierTest.java |
diffstat | 2 files changed, 33 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-byteman/agent/src/main/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifier.java Mon Aug 22 13:22:35 2016 -0400 +++ b/vm-byteman/agent/src/main/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifier.java Tue Aug 23 19:16:09 2016 +0200 @@ -54,8 +54,10 @@ } String getName() { - String agentIdPart = agentId.substring(0, AGENT_ID_PART_LENGTH); - String vmIdPart = vmId.substring(0, VM_ID_PART_LENGTH); + int agentIdLength = Math.min(agentId.length(), AGENT_ID_PART_LENGTH); + int vmIdLength = Math.min(vmId.length(), VM_ID_PART_LENGTH); + String agentIdPart = agentId.substring(0, agentIdLength); + String vmIdPart = vmId.substring(0, vmIdLength); return String.format(SOCKET_FORMAT, agentIdPart, vmIdPart, vmPid); }
--- a/vm-byteman/agent/src/test/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifierTest.java Mon Aug 22 13:22:35 2016 -0400 +++ b/vm-byteman/agent/src/test/java/com/redhat/thermostat/vm/byteman/agent/internal/VmSocketIdentifierTest.java Tue Aug 23 19:16:09 2016 +0200 @@ -47,6 +47,10 @@ public class VmSocketIdentifierTest { + private static final String SOME_VM_ID = "some-vm-id"; // longer than 4 chars + private static final String SOME_AGENT_ID = "some-agent-id"; // longer than 8 chars + private static final int SOME_PID = 9999; + @Test(expected = NullPointerException.class) public void testNullNotAcceptedAgentId() { new VmSocketIdentifier("foo", 30, null); @@ -70,12 +74,17 @@ } @Test + public void getNameIsFixedAtXCharsKnownIDs() { + VmSocketIdentifier id = new VmSocketIdentifier(SOME_VM_ID, 20, SOME_AGENT_ID); + String actual = id.getName(); + assertEquals("8 chars agentId + 4 chars vmId + 6 chars pid + 2 underscores", 20, actual.length()); + assertEquals("some-age_some_000020", actual); + } + + @Test public void testEqualsHashCode() { - String vmId = "some-vm-id"; - String agentId = "some-agent-id"; - int vmPid = 9999; - VmSocketIdentifier id1 = new VmSocketIdentifier(vmId, vmPid, agentId); - VmSocketIdentifier id2 = new VmSocketIdentifier(vmId, vmPid, agentId); + VmSocketIdentifier id1 = new VmSocketIdentifier(SOME_VM_ID, SOME_PID, SOME_AGENT_ID); + VmSocketIdentifier id2 = new VmSocketIdentifier(SOME_VM_ID, SOME_PID, SOME_AGENT_ID); assertFalse(id1.equals(null)); assertFalse(id2.equals(null)); assertFalse(id2.equals(null)); // multiple invocation @@ -90,4 +99,19 @@ assertEquals(id2.hashCode(), id1.hashCode()); assertEquals(id2.hashCode(), id1.hashCode()); // multiple invocation } + + + @Test + public void shortAgentIdGetName() { + String agentId = "bar"; // less than agent part length of 8 + String id = new VmSocketIdentifier(SOME_VM_ID, SOME_PID, agentId).getName(); + assertEquals("bar_some_009999", id); + } + + @Test + public void shortVmIdGetName() { + String vmId = "foo"; // less than vmId part length of 4 + String id = new VmSocketIdentifier(vmId, SOME_PID, SOME_AGENT_ID).getName(); + assertEquals("some-age_foo_009999", id); + } }