From 9610421e979c629584a902f039522b21136be1a7 Mon Sep 17 00:00:00 2001 From: senft-lap Date: Tue, 4 Dec 2012 14:14:38 +0100 Subject: [PATCH 1/3] Fixed RandomGenerator2 --- ws2012/P2P/uebungen/4/src/RandomGenerator2.java | 2 +- ws2012/P2P/uebungen/4/src/node/Node.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java index 90cfbcb1..5097c793 100644 --- a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java +++ b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java @@ -28,7 +28,7 @@ public class RandomGenerator2 { new NetworkDumper(firstNode); for (int i = 0; i < START_NODES; i++) { - nodes.add(new Node()); + spawn(); } while (true) { diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index 42090706..ca4e01c6 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -221,14 +221,12 @@ public class Node { } public void gatherInformationOfNetwork() { - byte[] myAddr; try { - myAddr = BufferUtil.addrToBytes(((InetSocketAddress) channel + byte[] myAddr = BufferUtil.addrToBytes(((InetSocketAddress) channel .getLocalAddress())); sendBroadcast(MessageType.STATUS, myAddr); } catch (IOException e) { } - } protected void setNeighborsOfNode(String node, List neighbors) { From ad87916472484c5301ed5e83e666cad6d2fd8818 Mon Sep 17 00:00:00 2001 From: senft-lap Date: Tue, 4 Dec 2012 14:27:29 +0100 Subject: [PATCH 2/3] NetworkDumper dumps network to different file every X seconds --- .../P2P/uebungen/4/src/RandomGenerator2.java | 5 +- .../4/src/analysis/NetworkDumper.java | 109 +++++++++--------- 2 files changed, 58 insertions(+), 56 deletions(-) diff --git a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java index 5097c793..9ba9043c 100644 --- a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java +++ b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java @@ -12,6 +12,7 @@ public class RandomGenerator2 { public static double BIRTH_RATE = 0.50; private static int START_NODES = 100; + private static int ROUND_INTERVAL = 1000; // ms public static List nodes = new ArrayList(); public static Random gen = new Random(); @@ -27,7 +28,7 @@ public class RandomGenerator2 { nodes.add(firstNode); new NetworkDumper(firstNode); - for (int i = 0; i < START_NODES; i++) { + for (int i = 0; i < START_NODES - 1; i++) { spawn(); } @@ -40,7 +41,7 @@ public class RandomGenerator2 { } try { - Thread.sleep(5000); + Thread.sleep(ROUND_INTERVAL); } catch (InterruptedException e) { } } diff --git a/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java b/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java index 573c926c..58276782 100644 --- a/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java +++ b/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java @@ -11,73 +11,74 @@ import node.Node; public class NetworkDumper implements Runnable { - Node node = null; - private boolean running = true; + Node node = null; + private boolean running = true; - public NetworkDumper(Node n) { - this.node = n; + public NetworkDumper(Node n) { + this.node = n; - new Thread(this).start(); - } + new Thread(this).start(); + } - public String networkToDot(Map> network) { - StringBuilder result = new StringBuilder(512); - result.append("graph g{\n"); + public String networkToDot(Map> network) { + StringBuilder result = new StringBuilder(512); + result.append("graph g{\n"); - Set alreadyIn = new HashSet(); + Set alreadyIn = new HashSet(); - for (Map.Entry> entry : network.entrySet()) { + for (Map.Entry> entry : network.entrySet()) { - for (String s : entry.getValue()) { - String nodeA = getName(entry.getKey()); - String nodeB = getName(s); + for (String s : entry.getValue()) { + String nodeA = getName(entry.getKey()); + String nodeB = getName(s); - if (!alreadyIn.contains(nodeB + nodeA)) { + if (!alreadyIn.contains(nodeB + nodeA)) { - result.append("\t"); - result.append(nodeA).append(" -- ").append(nodeB); - result.append(";\n"); + result.append("\t"); + result.append(nodeA).append(" -- ").append(nodeB); + result.append(";\n"); - alreadyIn.add(nodeA + nodeB); - } - } - } - result.append("}\n"); - return result.toString(); - } + alreadyIn.add(nodeA + nodeB); + } + } + } + result.append("}\n"); + return result.toString(); + } - private String getName(String s) { - return s.split(":")[1]; - } + private String getName(String s) { + return s.split(":")[1]; + } - private void write(String s) { - try { - // Create file - FileWriter fstream = new FileWriter("graph.dot"); - BufferedWriter out = new BufferedWriter(fstream); - out.write(s); - // Close the output stream - out.close(); - } catch (Exception e) {// Catch exception if any - System.err.println("Error: " + e.getMessage()); - } - } + private void write(String s) { + try { + // Create file + FileWriter fstream = new FileWriter("graphs/" + + System.currentTimeMillis() + ".dot"); + BufferedWriter out = new BufferedWriter(fstream); + out.write(s); + // Close the output stream + out.close(); + } catch (Exception e) {// Catch exception if any + System.err.println("Error: " + e.getMessage()); + } + } - @Override - public void run() { - while (running) { - try { - node.gatherInformationOfNetwork(); + @Override + public void run() { + while (running) { + try { + node.gatherInformationOfNetwork(); - // Wait 1s to broadcast to network - Thread.sleep(1000); + // Wait 1s to broadcast to network + Thread.sleep(1000); - write(networkToDot(node.getNetwork())); + write(networkToDot(node.getNetwork())); - // Wait 10s for update - Thread.sleep(10000); - } catch (InterruptedException e) { - } - } - } + // Wait 10s for update + Thread.sleep(10000); + } catch (InterruptedException e) { + } + } + } } From 89cf73f20fbfa998f26c162aea03d27aea9aa976 Mon Sep 17 00:00:00 2001 From: senft-lap Date: Tue, 4 Dec 2012 14:45:35 +0100 Subject: [PATCH 3/3] Added NetworkDumper to Denis' Generator --- ws2012/P2P/uebungen/4/src/RandomGenerator.java | 16 +++++++++++++--- ws2012/P2P/uebungen/4/src/RandomGenerator2.java | 2 +- .../uebungen/4/src/analysis/NetworkDumper.java | 5 ++++- ws2012/P2P/uebungen/4/src/node/Node.java | 4 +++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/ws2012/P2P/uebungen/4/src/RandomGenerator.java b/ws2012/P2P/uebungen/4/src/RandomGenerator.java index 116829fb..cfb4d16a 100644 --- a/ws2012/P2P/uebungen/4/src/RandomGenerator.java +++ b/ws2012/P2P/uebungen/4/src/RandomGenerator.java @@ -6,10 +6,12 @@ import java.util.List; import java.util.Random; import java.util.logging.LogManager; +import analysis.NetworkDumper; + import node.Node; public class RandomGenerator { - public static int initNodeCount = 20; + public static int initNodeCount = 99; public static double initBirthRate = 0.50; public static double initDeathRate = 0.20; public static int initRounds = 13; @@ -47,8 +49,16 @@ public class RandomGenerator { } switch (cmd) { - case "br": - // + case "dump": + nodes.get(0).gatherInformationOfNetwork(); + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + NetworkDumper d = new NetworkDumper(nodes.get(0)); + d.write(d.networkToDot(nodes.get(0).getNetwork())); break; case "add": add(count); diff --git a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java index 9ba9043c..45d37a67 100644 --- a/ws2012/P2P/uebungen/4/src/RandomGenerator2.java +++ b/ws2012/P2P/uebungen/4/src/RandomGenerator2.java @@ -26,7 +26,7 @@ public class RandomGenerator2 { public RandomGenerator2() { firstNode = new Node(); nodes.add(firstNode); - new NetworkDumper(firstNode); + new NetworkDumper(firstNode).start(); for (int i = 0; i < START_NODES - 1; i++) { spawn(); diff --git a/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java b/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java index 58276782..75cff37a 100644 --- a/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java +++ b/ws2012/P2P/uebungen/4/src/analysis/NetworkDumper.java @@ -17,6 +17,9 @@ public class NetworkDumper implements Runnable { public NetworkDumper(Node n) { this.node = n; + } + + public void start() { new Thread(this).start(); } @@ -50,7 +53,7 @@ public class NetworkDumper implements Runnable { return s.split(":")[1]; } - private void write(String s) { + public void write(String s) { try { // Create file FileWriter fstream = new FileWriter("graphs/" diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index ca4e01c6..8947f246 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -33,7 +33,7 @@ public class Node { /** * Saves the neighbor of each node in the network */ - private Map> network = new HashMap<>(); + private Map> network = new HashMap>(); private volatile Thread thread; private UDPHandler udpListen; @@ -221,6 +221,8 @@ public class Node { } public void gatherInformationOfNetwork() { + network = new HashMap>(); + try { byte[] myAddr = BufferUtil.addrToBytes(((InetSocketAddress) channel .getLocalAddress()));