@Override public Map<K, V> getAll(List<K> keys) { Map<K, V> result = instrument(metrics.numGetAlls, metrics.getAllNs, () -> kvStore.getAll(keys)); result.values().stream().filter(Objects::isNull).forEach(v -> incCounter(metrics.numMissedLookups)); return result; }
@Override public Map<K, V> getAll(List<K> keys) { readMetrics.numGetAlls.inc(); long startNs = System.nanoTime(); Map<K, V> result = kvStore.getAll(keys); readMetrics.getAllNs.update(System.nanoTime() - startNs); return result; }
@Override public Map<K, V> getAll(List<K> keys) { readMetrics.numGetAlls.inc(); long startNs = System.nanoTime(); Map<K, V> result = kvStore.getAll(keys); readMetrics.getAllNs.update(System.nanoTime() - startNs); return result; }
@Before public void setUp() { keys = Arrays.asList("k1", "k2", "k3"); values = new HashMap<>(); values.put("k1", "v1"); values.put("k2", "v2"); values.put("k3", null); kvStore = mock(KeyValueStore.class); when(kvStore.get("k1")).thenReturn("v1"); when(kvStore.get("k2")).thenReturn("v2"); when(kvStore.getAll(keys)).thenReturn(values); getNs = new Timer(""); getAllNs = new Timer(""); numGets = new Counter(""); numGetAlls = new Counter(""); getCallbackNs = new Timer(""); numMissedLookups = new Counter(""); metricsRegistry = mock(MetricsRegistry.class); String groupName = LocalTable.class.getSimpleName(); when(metricsRegistry.newCounter(groupName, TABLE_ID + "-num-gets")).thenReturn(numGets); when(metricsRegistry.newCounter(groupName, TABLE_ID + "-num-getAlls")).thenReturn(numGetAlls); when(metricsRegistry.newCounter(groupName, TABLE_ID + "-num-missed-lookups")).thenReturn(numMissedLookups); when(metricsRegistry.newTimer(groupName, TABLE_ID + "-get-ns")).thenReturn(getNs); when(metricsRegistry.newTimer(groupName, TABLE_ID + "-getAll-ns")).thenReturn(getAllNs); when(metricsRegistry.newTimer(groupName, TABLE_ID + "-get-callback-ns")).thenReturn(getCallbackNs); }
@Test public void testGetAll() throws Exception { ReadWriteTable table = createTable(false); Assert.assertEquals(values, table.getAll(keys)); Assert.assertEquals(values, table.getAllAsync(keys).get()); verify(kvStore, times(2)).getAll(any()); Assert.assertEquals(Collections.emptyMap(), table.getAll(Collections.emptyList())); Assert.assertEquals(2, numMissedLookups.getCount()); Assert.assertEquals(3, numGetAlls.getCount()); Assert.assertTrue(getAllNs.getSnapshot().getAverage() > 0); Assert.assertEquals(0, numGets.getCount()); Assert.assertEquals(0, getNs.getSnapshot().getAverage(), 0.001); Assert.assertEquals(0, getCallbackNs.getSnapshot().getAverage(), 0.001); }