cache: fix tree storage test by sorting files prior to adding

Change archive.addFile(int) -> addFile(FSFile)
This commit is contained in:
Adam
2017-09-11 16:59:48 -04:00
parent cbfa298ac2
commit 7ccd74458c
6 changed files with 30 additions and 16 deletions

View File

@@ -306,8 +306,9 @@ public class CacheClient implements AutoCloseable
archive.clearFiles();
for (FileData fd : ad.getFiles())
{
FSFile file = archive.addFile(fd.getId());
FSFile file = new FSFile(fd.getId());
file.setNameHash(fd.getNameHash());
archive.addFile(file);
}
CompletableFuture<FileResult> future = requestFile(index.getId(), ad.getId(), false);

View File

@@ -113,9 +113,8 @@ public class Archive
this.data = data;
}
public FSFile addFile(int id)
public FSFile addFile(FSFile file)
{
FSFile file = new FSFile(id);
this.files.addFile(file);
return file;
}

View File

@@ -137,8 +137,9 @@ public class DiskStorage implements Storage
for (FileData fd : ad.getFiles())
{
FSFile file = archive.addFile(fd.getId());
FSFile file = new FSFile(fd.getId());
file.setNameHash(fd.getNameHash());
archive.addFile(file);
}
}

View File

@@ -28,6 +28,7 @@ import com.google.common.io.Files;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import net.runelite.cache.fs.Archive;
@@ -127,9 +128,10 @@ public class TreeStorage implements Storage
byte[] data = Files.toByteArray(from);
FSFile file = archive.addFile(fileId);
FSFile file = new FSFile(fileId);
file.setNameHash(nameHash);
file.setContents(data);
archive.addFile(file);
File archiveFile = new File(parent, archive.getArchiveId() + ".rev");
int rev = Integer.parseInt(Files.readFirstLine(archiveFile, Charset.defaultCharset()));
@@ -152,8 +154,9 @@ public class TreeStorage implements Storage
assert archiveId == archive.getArchiveId();
FSFile file = archive.addFile(fileId);
FSFile file = new FSFile(fileId);
file.setNameHash(nameHash);
archive.addFile(file);
byte[] contents = Files.toByteArray(from);
file.setContents(contents);
@@ -169,6 +172,8 @@ public class TreeStorage implements Storage
public void loadTree(Archive archive, File parent, File from) throws IOException
{
List<FSFile> files = new ArrayList<>();
for (File file : from.listFiles())
{
//fileId-fileName.dat
@@ -178,13 +183,18 @@ public class TreeStorage implements Storage
int fileId = Integer.parseInt(split[0]);
int fileName = (int) Long.parseLong(split[1], 16);
FSFile f = archive.addFile(fileId);
FSFile f = new FSFile(fileId);
f.setNameHash(fileName);
files.add(f);
byte[] contents = Files.toByteArray(file);
f.setContents(contents);
}
// the filesystem may order these differently (eg, 1, 10, 2)
Collections.sort(files, (f1, f2) -> Integer.compare(f1.getFileId(), f2.getFileId()));
files.forEach(archive::addFile);
File archiveFile = new File(parent, archive.getArchiveId() + ".rev");
int rev = Integer.parseInt(Files.readFirstLine(archiveFile, Charset.defaultCharset()));
archive.setRevision(rev);
@@ -192,9 +202,6 @@ public class TreeStorage implements Storage
archiveFile = new File(parent, archive.getArchiveId() + ".name");
int name = Integer.parseInt(Files.readFirstLine(archiveFile, Charset.defaultCharset()));
archive.setNameHash(name);
// the filesystem may order these differently (eg, 1, 10, 2)
Collections.sort(archive.getFiles(), (f1, f2) -> Integer.compare(f1.getFileId(), f2.getFileId()));
}
@Override

View File

@@ -48,7 +48,8 @@ public class StoreTest
{
Index index = store.addIndex(0);
Archive archive = index.addArchive(0);
FSFile file = archive.addFile(0);
FSFile file = new FSFile(0);
archive.addFile(file);
file.setNameHash(7);
file.setContents("test".getBytes());
@@ -77,8 +78,9 @@ public class StoreTest
for (int i = 0; i < NUMBER_OF_FILES; ++i)
{
FSFile file = archive.addFile(i);
FSFile file = new FSFile(i);
file.setNameHash(random.nextInt());
archive.addFile(file);
byte[] data = new byte[random.nextInt(1024)];
random.nextBytes(data);
file.setContents(data);
@@ -115,8 +117,9 @@ public class StoreTest
for (int i = 0; i < NUMBER_OF_FILES; ++i)
{
FSFile file = archive.addFile(i);
FSFile file = new FSFile(i);
file.setNameHash(random.nextInt(Integer.MAX_VALUE));
archive.addFile(file);
byte[] data = new byte[random.nextInt(1024)];
random.nextBytes(data);
file.setContents(data);
@@ -124,8 +127,9 @@ public class StoreTest
for (int i = 0; i < NUMBER_OF_FILES; ++i)
{
FSFile file = archive2.addFile(i);
FSFile file = new FSFile(i);
file.setNameHash(random.nextInt(Integer.MAX_VALUE));
archive2.addFile(file);
byte[] data = new byte[random.nextInt(1024)];
random.nextBytes(data);
file.setContents(data);
@@ -133,8 +137,9 @@ public class StoreTest
for (int i = 0; i < NUMBER_OF_FILES; ++i)
{
FSFile file = archive3.addFile(i);
FSFile file = new FSFile(i);
file.setNameHash(random.nextInt(Integer.MAX_VALUE));
archive3.addFile(file);
byte[] data = new byte[random.nextInt(1024)];
random.nextBytes(data);
file.setContents(data);

View File

@@ -115,9 +115,10 @@ public class CacheServerTest
{
Index index = store.addIndex(0);
Archive archive = index.addArchive(0);
FSFile file = archive.addFile(0);
FSFile file = new FSFile(0);
file.setNameHash(7);
file.setContents("test".getBytes());
archive.addFile(file);
}
}