From c8693857ceaf837cebf63a3e2d5e73dbfbfafd26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Mon, 21 May 2012 13:41:53 +0200 Subject: Add stats server. --- statserver/pom.xml | 70 ++++++++++++++++++++++ .../java/com/orbekk/stats/Experiment1Impl.java | 41 +++++++++++++ .../src/main/java/com/orbekk/stats/Server.java | 29 +++++++++ .../src/main/java/com/orbekk/stats/TestClient.java | 40 +++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 statserver/pom.xml create mode 100644 statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java create mode 100644 statserver/src/main/java/com/orbekk/stats/Server.java create mode 100644 statserver/src/main/java/com/orbekk/stats/TestClient.java (limited to 'statserver') diff --git a/statserver/pom.xml b/statserver/pom.xml new file mode 100644 index 0000000..8d2b888 --- /dev/null +++ b/statserver/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + com.orbekk.same.stats + statserver + 1.0-SNAPSHOT + jar + same + http://github.com/orbekk/master + + UTF-8 + + + + jsonrpc3j-webdav-maven-repo + jsonrpc4j maven repository + http://jsonrpc4j.googlecode.com/svn/maven/repo/ + default + + + + + com.googlecode + jsonrpc4j + 0.18 + + + junit + junit + 4.10 + test + + + org.mockito + mockito-all + 1.9.0 + test + + + com.orbekk + same + 0.0-SNAPSHOT + + + + + + maven-assembly-plugin + + + + com.orbekk.same.directory.DirectoryApp + + + + jar-with-dependencies + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + 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 samples = new ArrayList(); + + @Override + public synchronized void registerSample(RpcController controller, SimpleTiming request, + RpcCallback 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 done = new RpcCallback() { + @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(); + } + } + } +} -- cgit v1.2.3