package manualTests;
import com.google.gson.Gson;
import net.tomp2p.peers.Number160;
import se.chalmers.gdcn.compare.QualityControl;
import se.chalmers.gdcn.compare.TrustQuality;
import se.chalmers.gdcn.files.TaskMeta;
import se.chalmers.gdcn.replica.ReplicaManager.ReplicaID;
import se.chalmers.gdcn.taskbuilder.fileManagement.Install;
import se.chalmers.gdcn.utils.ByteArray;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.Map.Entry;
/**
* Created by joakim on 4/16/14.
*/
public class QualityControlManual {
private final static String TASK_META = "{\n" +
" \"taskName\":\"IncrementTask_01\",\n" +
" \"module\":{\"fileName\":\"Increment.hs\",\"fileLocation\":\"code\",\"sticky\":true,\"checkSum\":500},\n" +
" \"dependencies\":\n" +
" [\n" +
" {\"fileName\":\"0.raw\",\"fileLocation\":\"resources\",\"sticky\":false,\"checkSum\":25}\n" +
" ]\n" +
"}";
public static void main(String[] args) throws IOException{
Gson gson = new Gson();
TaskMeta taskMeta = gson.fromJson(TASK_META, TaskMeta.class);
taskMeta.getModule().setDhtKey(Number160.createHash(taskMeta.getModule().getFileName()));
List<byte[]> results = new ArrayList<>();
// Path to the resource files
String path = "/home/joakim/GDCN/GDCN_proj/dGDCN/jobs/TrivialJob/resources/";
// String path = "D:\\Documents\\Programm\\GDCN\\GDCN_proj\\dGDCN\\jobs\\TrivialJob\\resources\\";
// String path = "/Users/HalfLeif/Documents/Chalmers/GDBN/GDCN_proj/dGDCN/jobs/TrivialJob/resources/";
// You might want to move dGDCN to .gdcn
// and compile Valid.hs and move to "valid" dir of the job
Install.install();
results.add(Files.readAllBytes(Paths.get(path + "0.raw")));
results.add(Files.readAllBytes(Paths.get(path + "50.raw")));
results.add(Files.readAllBytes(Paths.get(path + "100.raw")));
results.add(Files.readAllBytes(Paths.get(path + "150.raw")));
results.add(Files.readAllBytes(Paths.get(path + "wrong_type.raw")));
Map<ByteArray, Set<ReplicaID>> resultMap = new HashMap<>();
int id = 0;
for (byte[] result : results) {
resultMap.put(new ByteArray(result), new HashSet<ReplicaID>());
System.out.println("Result " + id++ + " has id " + ByteArray.print(result));
}
System.out.println("\t-------------------");
Map<ByteArray,TrustQuality> qualityMap = QualityControl.compareQuality("TrivialJob", taskMeta, resultMap.keySet());
for (Entry<ByteArray, TrustQuality> entry : qualityMap.entrySet()) {
System.out.println(ByteArray.print(entry.getKey().getData()) + " has trust " + entry.getValue().getTrust()
+ " and quality " + entry.getValue().getQuality());
}
}
}