summaryrefslogtreecommitdiff
path: root/statserver
diff options
context:
space:
mode:
Diffstat (limited to 'statserver')
-rw-r--r--statserver/pom.xml70
-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
4 files changed, 180 insertions, 0 deletions
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 @@
+<?xml version="1.0" encoding="utf8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.orbekk.same.stats</groupId>
+ <artifactId>statserver</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>same</name>
+ <url>http://github.com/orbekk/master</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <repositories>
+ <repository>
+ <id>jsonrpc3j-webdav-maven-repo</id>
+ <name>jsonrpc4j maven repository</name>
+ <url>http://jsonrpc4j.googlecode.com/svn/maven/repo/</url>
+ <layout>default</layout>
+ </repository>
+ </repositories>
+ <dependencies>
+ <dependency>
+ <groupId>com.googlecode</groupId>
+ <artifactId>jsonrpc4j</artifactId>
+ <version>0.18</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.10</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.orbekk</groupId>
+ <artifactId>same</artifactId>
+ <version>0.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>com.orbekk.same.directory.DirectoryApp</mainClass>
+ </manifest>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
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();
+ }
+ }
+ }
+}