Fix bug in trace repository
When reverse==false we have to be careful to remove the right element when capacity is reached.
This commit is contained in:
parent
8ef21b31ad
commit
8cdff1cf70
|
|
@ -63,7 +63,7 @@ public class InMemoryTraceRepository implements TraceRepository {
|
||||||
Trace trace = new Trace(new Date(), map);
|
Trace trace = new Trace(new Date(), map);
|
||||||
synchronized (this.traces) {
|
synchronized (this.traces) {
|
||||||
while (this.traces.size() >= this.capacity) {
|
while (this.traces.size() >= this.capacity) {
|
||||||
this.traces.remove(this.capacity - 1);
|
this.traces.remove(this.reverse ? this.capacity - 1 : 0);
|
||||||
}
|
}
|
||||||
if (this.reverse) {
|
if (this.reverse) {
|
||||||
this.traces.add(0, trace);
|
this.traces.add(0, trace);
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,20 @@ public class InMemoryTraceRepositoryTests {
|
||||||
List<Trace> traces = this.repository.findAll();
|
List<Trace> traces = this.repository.findAll();
|
||||||
assertEquals(2, traces.size());
|
assertEquals(2, traces.size());
|
||||||
assertEquals("bar", traces.get(0).getInfo().get("bar"));
|
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"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue