This commit is contained in:
Chris Lu 2020-08-26 08:50:21 -07:00
parent 83012f543a
commit 912d1706e7
2 changed files with 72 additions and 2 deletions

View file

@ -1,4 +1,4 @@
package seaewedfs.mmap; package seaweedfs.file;
import org.junit.Test; import org.junit.Test;
@ -11,7 +11,7 @@ import java.nio.channels.FileChannel;
public class MmapFileTest { public class MmapFileTest {
File dir = new File("/Users/chris/tmp/mm/dev"); static File dir = new File("/Users/chris/tmp/mm/dev");
@Test @Test
public void testMmap() { public void testMmap() {

View file

@ -0,0 +1,70 @@
package seaweedfs.file;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.util.Random;
public class RandomeAccessFileTest {
@Test
public void testRandomWriteAndRead() throws IOException {
File f = new File(MmapFileTest.dir, "mmap_file.txt");
RandomAccessFile af = new RandomAccessFile(f, "rw");
af.setLength(0);
af.close();
Random r = new Random();
int maxLength = 5000;
byte[] data = new byte[maxLength];
byte[] readData = new byte[maxLength];
for (int i = 4096; i < maxLength; i++) {
RandomAccessFile raf = new RandomAccessFile(f, "rw");
long fileSize = raf.length();
raf.readFully(readData, 0, (int)fileSize);
for (int x=0;x<fileSize;x++){
Assert.assertEquals(data[x], readData[x]);
}
int start = r.nextInt(i);
int stop = r.nextInt(i);
if (start > stop) {
int t = stop;
stop = start;
start = t;
}
if (stop > fileSize) {
fileSize = stop;
raf.setLength(fileSize);
}
randomize(r, data, start, stop);
raf.seek(start);
raf.write(data, start, stop-start);
raf.close();
}
}
private static void randomize(Random r, byte[] bytes, int start, int stop) {
for (int i = start; i < stop; i++) {
int rnd = r.nextInt();
bytes[i] = (byte) rnd;
}
}
}