private void installMockBroker() throws Exception { expect(storageBroker.getTransient((TileObject) anyObject())) .andAnswer( new IAnswer<Boolean>() { public Boolean answer() throws Throwable { TileObject tile = (TileObject) EasyMock.getCurrentArguments()[0]; String key = TransientCache.computeTransientKey(tile); Resource resource; synchronized (transientCache) { resource = transientCache.get(key); } if (resource != null) { cacheHits.incrementAndGet(); } else { cacheMisses.incrementAndGet(); } tile.setBlob(resource); return resource != null; } }) .anyTimes(); storageBroker.putTransient( capture( new Capture<TileObject>() { @Override public void setValue(TileObject tile) { String key = TransientCache.computeTransientKey(tile); synchronized (transientCache) { transientCache.put(key, tile.getBlob()); } } })); expectLastCall().anyTimes(); final HashSet<String> puts = new HashSet<String>(); expect( storageBroker.put( capture( new Capture<TileObject>() { @Override public void setValue(TileObject value) { puts.add(TransientCache.computeTransientKey(value)); storagePutCounter.incrementAndGet(); } }))) .andReturn(true) .anyTimes(); expect(storageBroker.get((TileObject) anyObject())) .andAnswer( new IAnswer<Boolean>() { public Boolean answer() throws Throwable { TileObject tile = (TileObject) EasyMock.getCurrentArguments()[0]; if (puts.contains(TransientCache.computeTransientKey(tile))) { tile.setBlob(new ByteArrayResource(fakeWMSResponse)); storageGetCounter.incrementAndGet(); return true; } else { return false; } } }) .anyTimes(); replay(storageBroker); }