protected void addIndexedFieldToMetadata(Multimap<BulkIngestKey,Value> results, MetadataWithMostRecentDate mostRecentDates) { for (MetadataWithMostRecentDate.MostRecentEventDateAndKeyComponents entry : mostRecentDates.entries()) { long mostRecentDate = entry.getMostRecentDate(); Text fieldName = new Text(entry.getFieldName()); Text colq = new Text(entry.getDataType()); if (null != entry.getNormalizerClassName()) { TextUtil.textAppend(colq, entry.getNormalizerClassName()); } Key k = new Key(fieldName, mostRecentDates.getColumnFamily(), colq, mostRecentDate); BulkIngestKey bk = new BulkIngestKey(metadataTableName, k); results.put(bk, DataTypeHandler.NULL_VALUE); } }
@Test public void testCanTrackSeparately() { MetadataWithMostRecentDate metadata = new MetadataWithMostRecentDate(COLUMN_FAMILY); metadata.createOrUpdate(fieldName, dataTypeName, normalizerClassName, 345); metadata.createOrUpdate(fieldName, dataTypeName + "2", normalizerClassName, 123); metadata.createOrUpdate(fieldName, dataTypeName + "2", normalizerClassName, 124); Assert.assertEquals(2, metadata.entries().size()); // Need to use a junk class here because we can't make instances of MostRecentEventDateAndKeyComponents as it is // not an enclosing class Collection<Tuple> expected = Lists.newArrayList(); expected.add(new Tuple("sham", "wow", "sham.wow.pick.up.Messes", 345L)); expected.add(new Tuple("sham", "wow2", "sham.wow.pick.up.Messes", 124L)); Collection<Tuple> actual = Lists.newArrayList(); for (MetadataWithMostRecentDate.MostRecentEventDateAndKeyComponents m : metadata.entries()) { actual.add(new Tuple(m.getFieldName(), m.getDataType(), m.getNormalizerClassName(), m.getMostRecentDate())); } Assert.assertTrue(CollectionUtils.isEqualCollection(expected, actual)); }
@Test public void testAssignments() { MetadataWithMostRecentDate counters = new MetadataWithMostRecentDate(COLUMN_FAMILY); counters.createOrUpdate(fieldName, dataTypeName, normalizerClassName, date); MetadataWithMostRecentDate.MostRecentEventDateAndKeyComponents entry = getOnlyEntry(counters); Assert.assertEquals(fieldName, entry.getFieldName()); Assert.assertEquals(dataTypeName, entry.getDataType()); Assert.assertEquals(normalizerClassName, entry.getNormalizerClassName()); Assert.assertEquals(date, entry.getMostRecentDate()); }