package org.apache.jdbm;
import java.io.IOException;
import java.util.Arrays;
public class TestLargeData extends TestCaseWithTestFile {
public void testLargeData() throws IOException {
DBAbstract db = new DBStore(newTestFile(), false, false,false);
byte[] data = UtilTT.makeRecord(1000000, (byte) 12);
final long id = db.insert(data);
data = (byte[]) db.fetch(id);
UtilTT.checkRecord(data, 1000000, (byte) 12);
db.commit();
data = UtilTT.makeRecord(2000000, (byte) 13);
db.update(id, data);
db.commit();
data = (byte[]) db.fetch(id);
UtilTT.checkRecord(data, 2000000, (byte) 13);
db.commit();
data = UtilTT.makeRecord(1500000, (byte) 14);
db.update(id, data);
data = (byte[]) db.fetch(id);
UtilTT.checkRecord(data, 1500000, (byte) 14);
db.commit();
data = UtilTT.makeRecord(2500000, (byte) 15);
db.update(id, data);
db.rollback();
data = (byte[]) db.fetch(id);
UtilTT.checkRecord(data, 1500000, (byte) 14);
db.commit();
data = UtilTT.makeRecord(1, (byte) 20);
db.update(id, data);
data = (byte[]) db.fetch(id);
UtilTT.checkRecord(data, 1, (byte) 20);
db.commit();
}
public void testAllSizes() throws IOException {
//use in memory store to make it faster
DBStore db = (DBStore) DBMaker.openFile(newTestFile()).disableCache().disableTransactions().make();
for(int i = 1;i<RecordHeader.MAX_RECORD_SIZE-100;i+=111111){
//System.out.println(i);
byte[] rec = UtilTT.makeRecord(i, (byte) 11);
long recid = db.insert(rec);
byte[] rec2 = db.fetch(recid);
assertTrue("error at size: "+i, Arrays.equals(rec,rec2));
db.delete(recid);
}
}
}