/** A test to ensure that policies can mask the key value stores of their producers. */ @Test public void testKVMasking() throws IOException { // Create a freshness policy that knows where to find the text file backed kv-store. KijiFreshnessPolicy policy = new ShadowingFreshening("file:" + new File(getLocalTempDir(), KV_FILENAME)); // Install a freshness policy. KijiFreshnessManager manager = KijiFreshnessManager.create(getKiji()); try { manager.registerFreshener( "user", new KijiColumnName("info", "name"), policy, new UnconfiguredScoreFunction(), Collections.<String, String>emptyMap(), true, false); } finally { manager.close(); } final KijiTable userTable = getKiji().openTable("user"); try { final FreshKijiTableReader reader = FreshKijiTableReader.Builder.create().withTable(userTable).withTimeout(10000).build(); try { // Read from the table to ensure that the user name is updated. KijiRowData data = reader.get(userTable.getEntityId("felix"), KijiDataRequest.create("info", "name")); assertEquals("Old Gumbie Cat", data.getMostRecentValue("info", "name").toString()); } finally { reader.close(); } } finally { userTable.release(); } }
/** A test to make sure that producers run inside of freshening can access key value stores. */ @Test public void testSimpleKVStore() throws IOException { final String path = new Path("file:" + new File(getLocalTempDir(), KV_FILENAME)).toString(); final Map<String, String> params = Maps.newHashMap(); params.put(SimpleKVScoreFunction.PARAMETER_KEY, path); // Install a freshness policy. KijiFreshnessManager manager = KijiFreshnessManager.create(getKiji()); try { manager.registerFreshener( "user", new KijiColumnName("info", "name"), AlwaysFreshen.class.getName(), SimpleKVScoreFunction.class.getName(), params, true, false, false); } finally { manager.close(); } final KijiTable userTable = getKiji().openTable("user"); try { final FreshKijiTableReader reader = FreshKijiTableReader.Builder.create().withTable(userTable).withTimeout(10000).build(); try { // Read from the table to ensure that the user name is updated. KijiRowData data = reader.get(userTable.getEntityId("felix"), KijiDataRequest.create("info", "name")); assertEquals("Railway Cat", data.getMostRecentValue("info", "name").toString()); } finally { reader.close(); } } finally { userTable.release(); } }
@Test public void testKVStoreInIsFresh() throws IOException { // Create a freshness policy that knows where to find the text file backed kv-store. KijiFreshnessPolicy policy = new KVStoreInIsFreshPolicy("file:" + new File(getLocalTempDir(), KV_FILENAME)); // Install a freshness policy. KijiFreshnessManager manager = KijiFreshnessManager.create(getKiji()); try { manager.registerFreshener( "user", new KijiColumnName("info", "name"), policy, new UnconfiguredScoreFunction(), Collections.<String, String>emptyMap(), true, false); } finally { manager.close(); } KijiTable userTable = null; FreshKijiTableReader freshReader = null; try { userTable = getKiji().openTable("user"); freshReader = FreshKijiTableReader.Builder.create().withTable(userTable).withTimeout(10000).build(); // Read from the table to ensure that the user name is updated. KijiRowData data = freshReader.get(userTable.getEntityId("felix"), KijiDataRequest.create("info", "name")); // IsFresh should have returned true, so nothing should be written. assertEquals("Felis", data.getMostRecentValue("info", "name").toString()); } finally { ResourceUtils.closeOrLog(freshReader); ResourceUtils.releaseOrLog(userTable); } }