summaryrefslogtreecommitdiff
path: root/statserver/src/main/java/com
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-21 13:41:53 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-21 13:41:53 +0200
commitc8693857ceaf837cebf63a3e2d5e73dbfbfafd26 (patch)
treea8a1c05d7c7982b2d695f5acfc1902e6638a8e5d /statserver/src/main/java/com
parentffc59108e61d46aabba25ed337d72d6908b7c874 (diff)
Add stats server.
Diffstat (limited to 'statserver/src/main/java/com')
-rw-r--r--statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java41
-rw-r--r--statserver/src/main/java/com/orbekk/stats/Server.java29
-rw-r--r--statserver/src/main/java/com/orbekk/stats/TestClient.java40
3 files changed, 110 insertions, 0 deletions
diff --git a/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java b/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java
new file mode 100644
index 0000000..1ec4ff3
--- /dev/null
+++ b/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java
@@ -0,0 +1,41 @@
+package com.orbekk.stats;
+
+import java.io.FileNotFoundException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.protobuf.RpcCallback;
+import com.google.protobuf.RpcController;
+import com.orbekk.stats.Experiments.Empty;
+import com.orbekk.stats.Experiments.Experiment1;
+import com.orbekk.stats.Experiments.SimpleTiming;
+
+public class Experiment1Impl extends Experiment1 {
+ List<SimpleTiming> samples = new ArrayList<SimpleTiming>();
+
+ @Override
+ public synchronized void registerSample(RpcController controller, SimpleTiming request,
+ RpcCallback<Empty> done) {
+ samples.add(request);
+ 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 Experiment1Impl.java");
+ for (SimpleTiming timing : samples) {
+ printer.println(timing);
+ }
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } finally {
+ if (printer != null) {
+ printer.close();
+ }
+ }
+ }
+}
diff --git a/statserver/src/main/java/com/orbekk/stats/Server.java b/statserver/src/main/java/com/orbekk/stats/Server.java
new file mode 100644
index 0000000..4f5ff32
--- /dev/null
+++ b/statserver/src/main/java/com/orbekk/stats/Server.java
@@ -0,0 +1,29 @@
+package com.orbekk.stats;
+
+import com.orbekk.protobuf.SimpleProtobufServer;
+
+public class Server {
+ final Experiment1Impl exp1 = new Experiment1Impl();
+
+ public static void main(String[] args) {
+ new Server().run();
+ }
+
+ public void run() {
+ addShutdownHook();
+ SimpleProtobufServer server = SimpleProtobufServer.create(
+ Common.PORT);
+ server.registerService(exp1);
+ System.out.println("Waiting for samples...");
+ server.start();
+ }
+
+ public void addShutdownHook() {
+ class ShutdownTask implements Runnable {
+ @Override public void run() {
+ exp1.writeSamples("experiment1.data");
+ }
+ }
+ Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownTask()));
+ }
+}
diff --git a/statserver/src/main/java/com/orbekk/stats/TestClient.java b/statserver/src/main/java/com/orbekk/stats/TestClient.java
new file mode 100644
index 0000000..b7fb595
--- /dev/null
+++ b/statserver/src/main/java/com/orbekk/stats/TestClient.java
@@ -0,0 +1,40 @@
+package com.orbekk.stats;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+
+import com.google.protobuf.RpcCallback;
+import com.orbekk.protobuf.Rpc;
+import com.orbekk.protobuf.RpcChannel;
+import com.orbekk.stats.Experiments.Empty;
+import com.orbekk.stats.Experiments.Experiment1;
+import com.orbekk.stats.Experiments.SimpleTiming;
+
+public class TestClient {
+ public static void main(String[] args) {
+ RpcChannel channel = null;
+ try {
+ RpcCallback<Empty> done = new RpcCallback<Empty>() {
+ @Override public void run(Empty unused) {
+ }
+ };
+ channel = RpcChannel.create("localhost", Common.PORT);
+ Experiment1 exp1 = Experiment1Impl.newStub(channel);
+ Rpc rpc = new Rpc();
+ rpc.setTimeout(5000);
+ SimpleTiming timing = SimpleTiming.newBuilder()
+ .setTiming(1337.0)
+ .setNumDevices(0)
+ .build();
+ exp1.registerSample(rpc, timing, done);
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (channel != null) {
+ channel.close();
+ }
+ }
+ }
+}