Commit 8cdff1cf authored by Dave Syer's avatar Dave Syer

Fix bug in trace repository

When reverse==false we have to be careful to remove the right element
when capacity is reached.
parent 8ef21b31
......@@ -63,7 +63,7 @@ public class InMemoryTraceRepository implements TraceRepository {
Trace trace = new Trace(new Date(), map);
synchronized (this.traces) {
while (this.traces.size() >= this.capacity) {
this.traces.remove(this.capacity - 1);
this.traces.remove(this.reverse ? this.capacity - 1 : 0);
}
if (this.reverse) {
this.traces.add(0, trace);
......
......@@ -41,6 +41,20 @@ public class InMemoryTraceRepositoryTests {
List<Trace> traces = this.repository.findAll();
assertEquals(2, traces.size());
assertEquals("bar", traces.get(0).getInfo().get("bar"));
assertEquals("foo", traces.get(1).getInfo().get("bar"));
}
@Test
public void reverseFalse() {
this.repository.setReverse(false);
this.repository.setCapacity(2);
this.repository.add(Collections.<String, Object> singletonMap("foo", "bar"));
this.repository.add(Collections.<String, Object> singletonMap("bar", "foo"));
this.repository.add(Collections.<String, Object> singletonMap("bar", "bar"));
List<Trace> traces = this.repository.findAll();
assertEquals(2, traces.size());
assertEquals("bar", traces.get(1).getInfo().get("bar"));
assertEquals("foo", traces.get(0).getInfo().get("bar"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment