assert 0 == numNodesInQueue : "Queue size #3: expected 0 but was " + numNodesInQueue;
}
public void testEvictionSortOrder() throws EvictionException
{
RegionImpl region = (RegionImpl) regionManager.getRegion("/a/b", true);
config.setMaxAge(1000000);
config.setMaxNodes(0);
config.setTimeToLive(1000000);
for (int i = 0; i < 100; i++)
{
Fqn fqn = Fqn.fromString("/a/b/" + Integer.toString(i));
region.registerEvictionEvent(fqn, EvictionEvent.Type.ADD_NODE_EVENT);
}
algorithm.process(region.getEvictionEventQueue());
for (int i = 0; i < 100; i++)
{
Fqn fqn = Fqn.fromString("/a/b/" + Integer.toString(i));
if (i % 2 == 0)
{
region.registerEvictionEvent(fqn, EvictionEvent.Type.VISIT_NODE_EVENT);
}
}
algorithm.process(region.getEvictionEventQueue());
LRUQueue queue = (LRUQueue) algorithm.getEvictionQueue();
NodeEntry ne;
int count = 0;
while ((ne = queue.getFirstLRUNodeEntry()) != null)
{
if (count < 50)
{
assertEquals(1, ne.getNumberOfNodeVisits());
}
else
{
assertEquals(2, ne.getNumberOfNodeVisits());
}
queue.removeNodeEntry(ne);
count++;
}
for (int i = 0; i < 100; i++)
{
Fqn fqn = Fqn.fromString("/a/b/" + Integer.toString(i));
region.registerEvictionEvent(fqn, EvictionEvent.Type.ADD_NODE_EVENT);
}
algorithm.process(region.getEvictionEventQueue());
long lastCreateTimestamp = 0;
while ((ne = queue.getFirstMaxAgeNodeEntry()) != null)
{
assertTrue(ne.getCreationTimeStamp() >= lastCreateTimestamp);
lastCreateTimestamp = ne.getCreationTimeStamp();