From 6c0bbe5f61f9914edd76bb4fb2bdce5f7f9051c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 22 May 2012 15:06:17 +0200 Subject: Add Experiment2 server. --- .../java/com/orbekk/stats/Experiment2Impl.java | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 statserver/src/main/java/com/orbekk/stats/Experiment2Impl.java diff --git a/statserver/src/main/java/com/orbekk/stats/Experiment2Impl.java b/statserver/src/main/java/com/orbekk/stats/Experiment2Impl.java new file mode 100644 index 0000000..34ade2f --- /dev/null +++ b/statserver/src/main/java/com/orbekk/stats/Experiment2Impl.java @@ -0,0 +1,58 @@ +package com.orbekk.stats; + +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.logging.Logger; + +import com.google.protobuf.RpcCallback; +import com.google.protobuf.RpcController; +import com.orbekk.stats.Experiments.Empty; +import com.orbekk.stats.Experiments.Experiment2; +import com.orbekk.stats.Experiments.SimpleTiming; + +public class Experiment2Impl extends Experiment2 { + private final static Logger logger = Logger.getLogger(Experiment2Impl.class.getName()); + // private List samples = new ArrayList(); + + private HashMap> samples = + new HashMap>(); + + @Override + public synchronized void registerSample(RpcController controller, SimpleTiming request, + RpcCallback done) { + logger.info(request.toString()); + if (samples.get(request.getNumDevices()) == null) { + samples.put(request.getNumDevices(), new ArrayList()); + } + samples.get(request.getNumDevices()).add(request.getTiming()); + done.run(Empty.getDefaultInstance()); + } + + public void writeSamples(String filename) { + PrintWriter printer = null; + try { + printer = new PrintWriter(filename); + System.out.println("Writing results to " + filename); + printer.println("# Automatically generated by Experiment2Impl.java"); + + printer.println("# "); + for (int numDevices : samples.keySet()) { + Analysis data = new Analysis(samples.get(numDevices)); + double avg = data.getAverage(); + double stddev = data.getStandardDeviation(); + printer.println(String.format( + "%d %f %f %f", numDevices, avg, avg-stddev, avg+stddev)); + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + if (printer != null) { + printer.close(); + } + } + } +} -- cgit v1.2.3