From 47d9bc30361ee761a2d2881ee2b405b7306673f7 Mon Sep 17 00:00:00 2001
From: kaldoran <kaldoran@live.fr>
Date: Fri, 5 Aug 2016 10:45:42 -0400
Subject: [PATCH] =?UTF-8?q?[Python]=C2=A0Draw=20benchmark=20graph=20in=20a?=
 =?UTF-8?q?=20better=20way=20#104?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 python/tools/dht/tests.py | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/python/tools/dht/tests.py b/python/tools/dht/tests.py
index 91eb810f..c82023a1 100644
--- a/python/tools/dht/tests.py
+++ b/python/tools/dht/tests.py
@@ -18,6 +18,8 @@ import math
 import numpy as np
 import matplotlib.pyplot as plt
 import networkx as nx
+from networkx.drawing.nx_agraph import graphviz_layout
+
 
 from opendht import *
 from dht.network import DhtNetwork, DhtNetworkSubProcess
@@ -246,16 +248,23 @@ class PhtTest(FeatureTest):
         if len(prefixes) == 0:
             return
 
-        edges = set([])
+        edges = list([])
         for prefix in prefixes:
             for i in range(-1, len(prefix)-1):
                 u = prefix[:i+1]
-                edges.add( ("" if i == -1 else u, u+"0") )
-                edges.add( ("" if i == -1 else u, u+"1") )
+                x = ("." if i == -1 else u, u+"0")
+                y = ("." if i == -1 else u, u+"1")
+                if x not in edges:
+                    edges.append(x)
+                if y not in edges:
+                    edges.append(y)
 
         # TODO: use a binary tree position layout...
-        G = nx.Graph(list(edges))
-        nx.draw(G, with_labels=True, node_color='white')
+        #   UPDATE : In a better way [change lib]
+        G = nx.Graph(sorted(edges, key=lambda x: len(x[0])))
+        plt.title("PHT: Tree")
+        pos=graphviz_layout(G,prog='dot')
+        nx.draw(G, pos, with_labels=True, node_color='white')
         plt.show()
 
     def run(self):
@@ -303,6 +312,8 @@ class PhtTest(FeatureTest):
                     DhtNetwork.log('This insert step took : ', time_taken, 'second')
                 FeatureTest.lock.wait()
 
+        time.sleep(1)
+
         # Recover entries now that the trie is complete.
         for key in keys:
             PhtTest.key = key
-- 
GitLab