@Test public void testInvalidValueType() throws Exception { Logger log = Logger.getLogger(GlobalIndexUidAggregator.class); Level origLevel = log.getLevel(); log.setLevel(Level.FATAL); Collection<Value> values = Lists.newArrayList(); agg.reset(); Value val = new Value(UUID.randomUUID().toString().getBytes()); values.add(val); Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertEquals(false, resultList.getIGNORE()); assertEquals(0, resultList.getUIDCount()); assertEquals(0, resultList.getCOUNT()); log.setLevel(origLevel); }
@Test public void testLessThanMax() throws Exception { agg.reset(); List<String> savedUUIDs = new ArrayList<>(); Collection<Value> values = Lists.newArrayList(); for (int i = 0; i < GlobalIndexUidAggregator.MAX - 1; i++) { Builder b = createNewUidList(); b.setIGNORE(false); String uuid = UUID.randomUUID().toString(); savedUUIDs.add(uuid); b.setCOUNT(1); b.addUID(uuid); Uid.List uidList = b.build(); Value val = new Value(uidList.toByteArray()); values.add(val); } Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertEquals(false, resultList.getIGNORE()); assertEquals(resultList.getUIDCount(), (GlobalIndexUidAggregator.MAX - 1)); List<String> resultListUUIDs = resultList.getUIDList(); for (String s : savedUUIDs) assertTrue(resultListUUIDs.contains(s)); }
@Test public void testMoreThanMax() throws Exception { agg.reset(); List<String> savedUUIDs = new ArrayList<>(); Collection<Value> values = Lists.newArrayList(); for (int i = 0; i < GlobalIndexUidAggregator.MAX + 10; i++) { Builder b = createNewUidList(); b.setIGNORE(false); String uuid = UUID.randomUUID().toString(); savedUUIDs.add(uuid); b.setCOUNT(1); b.addUID(uuid); Uid.List uidList = b.build(); Value val = new Value(uidList.toByteArray()); values.add(val); } Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertEquals(true, resultList.getIGNORE()); assertEquals(0, resultList.getUIDCount()); assertEquals(resultList.getCOUNT(), (GlobalIndexUidAggregator.MAX + 10)); }
assertEquals(resultList.getUIDCount(), 0); assertEquals(resultList.getCOUNT(), 0);
@Test public void testEqualsMax() throws Exception { agg.reset(); List<String> savedUUIDs = new ArrayList<>(); Collection<Value> values = Lists.newArrayList(); for (int i = 0; i < GlobalIndexUidAggregator.MAX; i++) { Builder b = createNewUidList(); b.setIGNORE(false); String uuid = UUID.randomUUID().toString(); savedUUIDs.add(uuid); b.setCOUNT(1); b.addUID(uuid); Uid.List uidList = b.build(); Value val = new Value(uidList.toByteArray()); values.add(val); } Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertNotNull(resultList); assertEquals(false, resultList.getIGNORE()); assertEquals(resultList.getUIDCount(), (GlobalIndexUidAggregator.MAX)); List<String> resultListUUIDs = resultList.getUIDList(); for (String s : savedUUIDs) assertTrue(resultListUUIDs.contains(s)); }
@Test public void testSeenIgnore() throws Exception { Logger.getRootLogger().setLevel(Level.ALL); agg.reset(); Builder b = createNewUidList(); b.setIGNORE(true); b.setCOUNT(0); Uid.List uidList = b.build(); Collection<Value> values = Lists.newArrayList(); Value val = new Value(uidList.toByteArray()); values.add(val); b = createNewUidList(); b.setIGNORE(false); b.setCOUNT(1); b.addUID(UUID.randomUUID().toString()); uidList = b.build(); val = new Value(uidList.toByteArray()); values.add(val); Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertEquals(true, resultList.getIGNORE()); assertEquals(0, resultList.getUIDCount()); assertEquals(1, resultList.getCOUNT()); }
@Test public void testCount() throws Exception { agg.reset(); UUID uuid = UUID.randomUUID(); // Collect the same UUID five times. Collection<Value> values = Lists.newArrayList(); for (int i = 0; i < 5; i++) { Builder b = createNewUidList(); b.setCOUNT(1); b.setIGNORE(false); b.addUID(uuid.toString()); Uid.List uidList = b.build(); Value val = new Value(uidList.toByteArray()); values.add(val); } Value result = agg.reduce(new Key("key"), values.iterator()); Uid.List resultList = Uid.List.parseFrom(result.get()); assertEquals(5, resultList.getCOUNT()); assertEquals(false, resultList.getIGNORE()); assertEquals(1, resultList.getUIDCount()); } }