@Test
  public void testGenericAvroKVRecordKeyValueStore() throws Exception {
    // Only read the key and value fields (skip the 'blah' field).
    final Schema readerSchema = Schema.createRecord("record", null, null, false);
    readerSchema.setFields(
        Lists.newArrayList(
            new Schema.Field("key", Schema.create(Schema.Type.INT), null, null),
            new Schema.Field("value", Schema.create(Schema.Type.STRING), null, null)));

    // Open the store.
    final Path avroFilePath = writeGenericRecordAvroFile();
    final AvroKVRecordKeyValueStore<Integer, CharSequence> store =
        AvroKVRecordKeyValueStore.builder()
            .withConfiguration(getConf())
            .withInputPath(avroFilePath)
            .withReaderSchema(readerSchema)
            .build();
    final KeyValueStoreReader<Integer, CharSequence> reader = store.open();
    try {
      assertTrue(reader.containsKey(1));
      assertEquals("one", reader.get(1).toString());
      assertTrue(reader.containsKey(2));
      assertEquals("two", reader.get(2).toString()); // First field in wins.
    } finally {
      reader.close();
    }
  }
 @Override
 public TimestampedValue<String> score(KijiRowData input, FreshenerContext context)
     throws IOException {
   final String newName = mReader.get("Skimbleshanks");
   assertEquals("Railway Cat", newName);
   return TimestampedValue.create(newName);
 }
 @Override
 public TimestampedValue<String> score(KijiRowData input, FreshenerContext context)
     throws IOException {
   KeyValueStoreReader<String, String> reader = context.getStore("cats");
   String newName = reader.get("Jennyanydots");
   assertEquals("Old Gumbie Cat", newName);
   return TimestampedValue.create(newName);
 }
 @Override
 public boolean isFresh(KijiRowData rowData, FreshenerContext context) {
   final KeyValueStoreReader<String, String> cats;
   try {
     cats = context.getStore("cats");
   } catch (IOException ioe) {
     throw new KijiIOException(ioe);
   }
   if (cats != null) {
     try {
       return cats.get("Skimbleshanks").equals("Railway Cat");
     } catch (IOException ioe) {
       throw new KijiIOException(ioe);
     }
   } else {
     throw new RuntimeException("Could not retrieve KVStoreReader \"cats\" test is broken.");
   }
 }