<K> void doReadWriteToRemoveAllAndReturnPrevs(Supplier<K> keySupplier, WriteOnlyMap<K, String> map1, ReadWriteMap<K, String> map2) { K key1 = keySupplier.get(), key2 = keySupplier.get(), key3 = keySupplier.get(); Map<K, String> data = new HashMap<>(); data.put(key1, "one"); data.put(key2, "two"); data.put(key3, "three"); await(map1.evalMany(data, setValueConsumer())); Traversable<String> prevTraversable = map2.evalAll(removeReturnPrevOrNull()); Set<String> prevValues = prevTraversable.collect(HashSet::new, HashSet::add, HashSet::addAll); assertEquals(new HashSet<>(data.values()), prevValues); }
@Test(dataProvider = "ownerAndExistence", enabled = false, description = "ISPN-8676") public void testWriteOnlyManyEntriesCommand(boolean onOwner, boolean withExisting) { WriteOnlyMap<Object, Object> wo = onOwner ? wo0 : wo1; test(() -> wo.evalMany(Collections.singletonMap(key, "bar"), (bar, view) -> { }), onOwner, withExisting); }
@Test(dataProvider = "ownerAndExistence", enabled = false, description = "ISPN-8676") public void testWriteOnlyManyCommand(boolean onOwner, boolean withExisting) { WriteOnlyMap<Object, Object> wo = onOwner ? wo0 : wo1; test(() -> wo.evalMany(Collections.singleton(key), view -> { }), onOwner, withExisting); }
private <K> void doUpdateSubsetAndReturnPrevs(Supplier<K> keySupplier, ReadOnlyMap<K, String> map1, WriteOnlyMap<K, String> map2, ReadWriteMap<K, String> map3) { K key1 = keySupplier.get(), key2 = keySupplier.get(), key3 = keySupplier.get(); Map<K, String> data = new HashMap<>(); data.put(key1, "one"); data.put(key2, "two"); data.put(key3, "three"); await(map2.evalMany(data, setValueConsumer())); Traversable<String> currentValues = map1.evalMany(data.keySet(), returnReadOnlyFindOrNull()); List<String> collectedValues = currentValues.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); Collections.sort(collectedValues); List<String> dataValues = new ArrayList<>(data.values()); Collections.sort(dataValues); assertEquals(collectedValues, dataValues); Map<K, String> newData = new HashMap<>(); newData.put(key1, "bat"); newData.put(key2, "bi"); newData.put(key3, "hiru"); Traversable<String> prevTraversable = map3.evalMany(newData, setValueReturnPrevOrNull()); List<String> collectedPrev = prevTraversable.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); Collections.sort(collectedPrev); assertEquals(dataValues, collectedPrev); Traversable<String> updatedValues = map1.evalMany(data.keySet(), returnReadOnlyFindOrNull()); List<String> collectedUpdates = updatedValues.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); Collections.sort(collectedUpdates); List<String> newDataValues = new ArrayList<>(newData.values()); Collections.sort(newDataValues); assertEquals(newDataValues, collectedUpdates); }
@Override public void putAll(Map<? extends K, ? extends V> m) { await(writeOnly.evalMany(m, setValueConsumer())); }
@Override public void removeAll(Set<? extends K> keys) { await(writeOnly.evalMany(keys, removeConsumer())); }
@Override public void putAll(Map<? extends K, ? extends V> map) { await(writeOnly.evalMany(map, setValueConsumer())); }
@Override public void putAll(Map<? extends K, ? extends V> map, long lifespan, TimeUnit unit) { final MetaLifespan metaLifespan = createMetaLifespan(lifespan, unit); await(wo.evalMany(map, setValueMetasConsumer(metaLifespan))); }
@Override public void putAll(Map<? extends K, ? extends V> map, long lifespan, TimeUnit lifespanUnit, long maxIdleTime, TimeUnit maxIdleTimeUnit) { final MetaLifespan metaLifespan = createMetaLifespan(lifespan, lifespanUnit); final MetaMaxIdle metaMaxIdle = createMetaMaxIdle(maxIdleTime, maxIdleTimeUnit); await(wo.evalMany(map, setValueMetasConsumer(metaLifespan, metaMaxIdle))); }