public void testReuseVersion() throws Exception { BlobVersion trx1 = store.newVersion("urn:test:trx1"); Writer file1 = trx1.open("urn:test:file1").openWriter(); file1.append("blob store test"); file1.close(); trx1.commit(); BlobVersion trx2 = store.newVersion("urn:test:trx2"); file1 = trx2.open("urn:test:file1").openWriter(); file1.append("blob store test"); file1.close(); trx2.commit(); Writer file2 = trx2.open("urn:test:file2").openWriter(); file2.append("blob store test"); file2.close(); trx2.commit(); trx2 = store.newVersion("urn:test:trx2"); file2 = trx2.open("urn:test:file2").openWriter(); file2.append("blob store test"); file2.close(); trx2.commit(); BlobVersion trx3 = store.newVersion("urn:test:trx3"); CharSequence str1 = trx3.open("urn:test:file1").getCharContent(true); assertEquals("blob store test", str1.toString()); CharSequence str2 = trx3.open("urn:test:file2").getCharContent(true); assertEquals("blob store test", str2.toString()); }
public void testRoundTripString() throws Exception { BlobVersion trx1 = store.newVersion("urn:test:trx1"); Writer file = trx1.open("urn:test:file").openWriter(); file.append("blob store test"); file.close(); trx1.commit(); BlobVersion trx2 = store.newVersion("urn:test:trx2"); CharSequence str = trx2.open("urn:test:file").getCharContent(true); assertEquals("blob store test", str.toString()); }
public void testAtomicity() throws Exception { BlobVersion trx1 = store.newVersion("urn:test:trx1"); Writer file1 = trx1.open("urn:test:file1").openWriter(); file1.append("blob store test"); file1.close(); Writer file2 = trx1.open("urn:test:file2").openWriter(); file2.append("blob store test"); file2.close(); BlobVersion trx2 = store.newVersion("urn:test:trx2"); assertNull(trx2.open("urn:test:file1").getCharContent(true)); assertNull(trx2.open("urn:test:file2").getCharContent(true)); trx1.commit(); BlobVersion trx3 = store.newVersion("urn:test:trx3"); assertEquals("blob store test", trx3.open("urn:test:file1").getCharContent(true).toString()); assertEquals("blob store test", trx3.open("urn:test:file2").getCharContent(true).toString()); }
public void testEraseSingleBlob() throws Exception { BlobVersion trx1 = store.newVersion("urn:test:trx1"); Writer file = trx1.open("urn:test:file").openWriter(); file.append("blob store test"); file.close(); trx1.commit(); store.erase(); assertEmpty(dir); }
public void testIsolation() throws Exception { BlobVersion trx1 = store.newVersion("urn:test:trx1"); Writer file1 = trx1.open("urn:test:file1").openWriter(); file1.append("blob store test"); file1.close(); final CountDownLatch latch1 = new CountDownLatch(1); new Thread( new Runnable() { public void run() { try { error = null; try { BlobVersion trx2 = store.newVersion("urn:test:trx2"); BlobObject blob = trx2.open("urn:test:file1"); assertNull(blob.getCharContent(true)); } catch (Exception e) { e.printStackTrace(); fail(); } finally { latch1.countDown(); } } catch (AssertionFailedError e) { error = e; } } }) .start(); latch1.await(); if (error != null) throw error; trx1.prepare(); final CountDownLatch latch2 = new CountDownLatch(1); final CountDownLatch latch3 = new CountDownLatch(1); new Thread( new Runnable() { public void run() { try { error = null; try { latch2.countDown(); BlobVersion trx3 = store.newVersion("urn:test:trx3"); BlobObject blob = trx3.open("urn:test:file1"); CharSequence str = blob.getCharContent(true); assertNotNull(str); assertEquals("blob store test", str.toString()); } catch (Exception e) { e.printStackTrace(); fail(); } finally { latch3.countDown(); } } catch (AssertionFailedError e) { error = e; } } }) .start(); latch2.await(); assertFalse(latch3.await(1, TimeUnit.SECONDS)); trx1.commit(); latch3.await(); if (error != null) throw error; }