@Test public void testUpdateOtherName() throws Exception { Log.info(Log.FAC_TEST, "Starting testUpdateOtherName"); NDNHandle thandle = NDNHandle.open(); NDNHandle rhandle = NDNHandle.open(); try { ContentName testName = new ContentName( testHelper.getTestNamespace("testUpdateOtherName"), collectionObjName, "name1"); ContentName testName2 = new ContentName( testHelper.getTestNamespace("testUpdateOtherName"), collectionObjName, "name2"); CollectionObject c0 = new CollectionObject(testName, empty, SaveType.REPOSITORY, rhandle); setupNamespace(testName); NDNTime t0 = saveAndLog("Empty", c0, null, empty); TestUtils.checkObject(rhandle, c0); CollectionObject c1 = new CollectionObject(testName2, small1, SaveType.REPOSITORY, thandle); // Cheat a little, make this one before the setupNamespace... CollectionObject c2 = new CollectionObject(testName2, small1, SaveType.REPOSITORY, null); setupNamespace(testName2); NDNTime t1 = saveAndLog("Small", c1, null, small1); TestUtils.checkObject(thandle, c1); Assert.assertTrue("First version should come before second", t0.before(t1)); NDNTime t2 = saveAndLog("Small2ndWrite", c2, null, small1); TestUtils.checkObject(c2.getHandle(), c2); Assert.assertTrue("Third version should come after second", t1.before(t2)); Assert.assertTrue(c2.contentEquals(c1)); Assert.assertFalse(c2.equals(c1)); NDNTime t3 = updateAndLog(c0.getVersionedName().toString(), c0, testName2); Assert.assertTrue(VersioningProfile.isVersionOf(c0.getVersionedName(), testName2)); Assert.assertEquals(t3, t2); Assert.assertTrue(c0.contentEquals(c2)); t3 = updateAndLog(c0.getVersionedName().toString(), c0, c1.getVersionedName()); Assert.assertTrue(VersioningProfile.isVersionOf(c0.getVersionedName(), testName2)); Assert.assertEquals(t3, t1); Assert.assertTrue(c0.contentEquals(c1)); } finally { thandle.close(); rhandle.close(); KeyManager.closeDefaultKeyManager(); } Log.info(Log.FAC_TEST, "Completed testUpdateOtherName"); }
@Test public void testSaveAsGone() throws Exception { Log.info(Log.FAC_TEST, "Starting testSaveAsGone"); NDNHandle thandle = NDNHandle.open(); NDNHandle rhandle = NDNHandle.open(); NDNHandle shandle = NDNHandle.open(); try { ContentName testName = new ContentName(testHelper.getTestNamespace("testSaveAsGone"), collectionObjName); CollectionObject c0 = new CollectionObject(testName, empty, SaveType.REPOSITORY, thandle); setupNamespace(testName); NDNTime t0 = saveAsGoneAndLog("Gone", c0); Assert.assertTrue("Should be gone", c0.isGone()); ContentName goneVersionName = c0.getVersionedName(); NDNTime t1 = saveAndLog("NotGone", c0, null, small1); TestUtils.checkObject(thandle, c0); Assert.assertFalse("Should not be gone", c0.isGone()); Assert.assertTrue(t1.after(t0)); CollectionObject c1 = new CollectionObject(testName, rhandle); NDNTime t2 = waitForDataAndLog(testName.toString(), c1); Assert.assertFalse("Read back should not be gone", c1.isGone()); Assert.assertEquals(t2, t1); NDNTime t3 = updateAndLog(goneVersionName.toString(), c1, goneVersionName); Assert.assertTrue(VersioningProfile.isVersionOf(c1.getVersionedName(), testName)); Assert.assertEquals(t3, t0); Assert.assertTrue("Read back should be gone.", c1.isGone()); t0 = saveAsGoneAndLog("GoneAgain", c0); Assert.assertTrue("Should be gone", c0.isGone()); CollectionObject c2 = new CollectionObject(testName, shandle); NDNTime t4 = waitForDataAndLog(testName.toString(), c2); Assert.assertTrue( "Read back of " + c0.getVersionedName() + " should be gone, got " + c2.getVersionedName(), c2.isGone()); Assert.assertEquals(t4, t0); } finally { thandle.close(); rhandle.close(); shandle.close(); KeyManager.closeDefaultKeyManager(); } Log.info(Log.FAC_TEST, "Completed testSaveAsGone"); }
@Test public void testStreamUpdate() throws Exception { Log.info(Log.FAC_TEST, "Starting testStreamUpdate"); NDNHandle tHandle = NDNHandle.open(); try { ContentName testName = new ContentName(testHelper.getTestNamespace("testStreamUpdate"), collectionObjName); CollectionObject testCollectionObject = new CollectionObject(testName, small1, SaveType.REPOSITORY, tHandle); setupNamespace(testName); saveAndLog("testStreamUpdate", testCollectionObject, null, small1); TestUtils.checkObject(tHandle, testCollectionObject); Log.info( Log.FAC_TEST, "testCollectionObject name: " + testCollectionObject.getVersionedName()); NDNVersionedInputStream vis = new NDNVersionedInputStream(testCollectionObject.getVersionedName()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[128]; // Will incur a timeout while (!vis.eof()) { int read = vis.read(buf); if (read > 0) baos.write(buf, 0, read); } Log.info( Log.FAC_TEST, "Read " + baos.toByteArray().length + " bytes, digest: " + DigestHelper.printBytes(DigestHelper.digest(baos.toByteArray()), 16)); Collection decodedData = new Collection(); decodedData.decode(baos.toByteArray()); Log.info(Log.FAC_TEST, "Decoded collection data: " + decodedData); Assert.assertEquals( "Decoding via stream fails to give expected result!", decodedData, small1); NDNVersionedInputStream vis2 = new NDNVersionedInputStream(testCollectionObject.getVersionedName()); ByteArrayOutputStream baos2 = new ByteArrayOutputStream(); // Will incur a timeout while (!vis2.eof()) { int val = vis2.read(); if (val < 0) break; baos2.write((byte) val); } Log.info( Log.FAC_TEST, "Read " + baos2.toByteArray().length + " bytes, digest: " + DigestHelper.printBytes(DigestHelper.digest(baos2.toByteArray()), 16)); Assert.assertArrayEquals( "Reading same object twice gets different results!", baos.toByteArray(), baos2.toByteArray()); Collection decodedData2 = new Collection(); decodedData2.decode(baos2.toByteArray()); Assert.assertEquals( "Decoding via stream byte read fails to give expected result!", decodedData2, small1); NDNVersionedInputStream vis3 = new NDNVersionedInputStream(testCollectionObject.getVersionedName()); Collection decodedData3 = new Collection(); decodedData3.decode(vis3); Assert.assertEquals( "Decoding via stream full read fails to give expected result!", decodedData3, small1); } finally { tHandle.close(); KeyManager.closeDefaultKeyManager(); } Log.info(Log.FAC_TEST, "Completed testStreamUpdate"); }