예제 #1
0
 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);
 }
예제 #2
0
 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());
 }
예제 #3
0
 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());
 }
예제 #4
0
 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());
 }
예제 #5
0
 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;
 }