package se.chalmers.gdcn.replica;
import net.tomp2p.storage.Data;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import se.chalmers.gdcn.files.TaskMeta;
import se.chalmers.gdcn.network.WorkerID;
import se.chalmers.gdcn.taskbuilder.fileManagement.Install;
import se.chalmers.gdcn.utils.ByteArray;
import utils.TaskHolder;
import java.io.IOException;
import java.util.HashSet;
/**
* Created by joakim on 4/30/14.
*/
public class ArchiveTest {
private TaskMeta taskMeta;
private TaskData taskData;
private Archive archive;
private ByteArray byteArray;
private ByteArray badByteArray;
private CanonicalResult canonicalResult;
@BeforeClass
public void setupClass() {
Install.install();
taskMeta = TaskHolder.getTaskA();
taskData = new TaskData(taskMeta, "dummyJob", 1, 10);
byte[] data = {0, 0, 0, 1};
byteArray = new ByteArray(data);
byte[] badData = {0, 0, 0};
badByteArray = new ByteArray(badData);
}
@BeforeMethod
public void setupArchive() {
archive = new Archive();
archive.archiveResult(taskData, byteArray, 10, new HashSet<WorkerID>());
canonicalResult = archive.getArchivedResult(taskData.taskID());
}
@Test
public void sameDataTest() {
boolean result = false;
try {
result = canonicalResult.compareNewWorker(byteArray, null);
} catch (IOException e) {
e.printStackTrace();
assert false;
}
assert result;
}
@Test
public void differentDataTest() {
boolean result = true;
try {
result = canonicalResult.compareNewWorker(badByteArray, null);
}
catch (IOException e) {
e.printStackTrace();
assert false;
}
assert !result;
}
@Test
public void serializeTest() throws IOException, ClassNotFoundException {
Data data = new Data(archive);
Archive deserialized = (Archive) data.getObject();
CanonicalResult archivedResult = deserialized.getArchivedResult(taskData.taskID());
assert archivedResult != canonicalResult;
assert archivedResult.equals(canonicalResult);
}
}