/**
* Tests renames across blob stores.
*/
@Test
public void testMoveTo() throws IOException {
Blob b1 = con.getBlob(null, s1Hint);
Blob b2 = con.getBlob(null, s2Hint);
Blob b3 = store1.openConnection(null, null).getBlob(b1.getId(), s1Hint);
Blob b4 = store2.openConnection(null, null).getBlob(b2.getId(), s2Hint);
b1.openOutputStream(0, true).close();
b2.openOutputStream(0, true).close();
assertTrue(b3.exists());
assertTrue(b4.exists());
b2.delete();
assertFalse(b2.exists());
assertFalse(b4.exists());
assertEquals(b2, b1.moveTo(b2.getId(), s2Hint));
assertFalse(b1.exists());
assertFalse(b3.exists());
assertTrue(b2.exists());
assertTrue(b4.exists());
try {
b1.moveTo(b2.getId(), s2Hint);
fail("Did not get expected MissingBlobException");
} catch (MissingBlobException mbe) {
}
assertFalse(b1.exists());
assertFalse(b3.exists());
assertTrue(b2.exists());
assertTrue(b4.exists());
b1.openOutputStream(0, true).close();
assertTrue(b1.exists());
assertTrue(b3.exists());
try {
b1.moveTo(b2.getId(), s2Hint);
fail("Did not get expected DuplicateBlobException");
} catch (DuplicateBlobException dbe) {
}
assertTrue(b1.exists());
assertTrue(b3.exists());
assertTrue(b2.exists());
assertTrue(b4.exists());
}