gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnunet] branch master updated (847d61a05 -> 2e7428c27)


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated (847d61a05 -> 2e7428c27)
Date: Thu, 17 May 2018 17:43:19 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a change to branch master
in repository gnunet.

    from 847d61a05 gnunet-chk.py: More 2to3 changes.
     new 5f53f5bbf 2to3 lint in consensus-simulation, sed the python location.
     new 36a3e39e8 follow-up
     new 4bd885f34 follow-up, indentation fixes.
     new 2e7428c27 future recommendation: run lint on python files.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/consensus/Makefile.am                |  20 +++++-
 src/consensus/consensus-simulation.py    | 108 -------------------------------
 src/consensus/consensus-simulation.py.in | 107 ++++++++++++++++++++++++++++++
 3 files changed, 126 insertions(+), 109 deletions(-)
 delete mode 100644 src/consensus/consensus-simulation.py
 create mode 100644 src/consensus/consensus-simulation.py.in

diff --git a/src/consensus/Makefile.am b/src/consensus/Makefile.am
index c0205ee5d..991e36a95 100644
--- a/src/consensus/Makefile.am
+++ b/src/consensus/Makefile.am
@@ -27,6 +27,17 @@ libexec_PROGRAMS += \
  gnunet-service-evil-consensus
 endif
 
+do_subst = $(SED) -e 's,address@hidden@],$(PYTHON),g'
+
+SUFFIXES = .py.in .py
+
+.py.in.py:
+       $(do_subst) < $< > $@
+       chmod +x $@
+
+check-python-style:
+       flake8 consensus-simulation.py.in
+
 lib_LTLIBRARIES = \
   libgnunetconsensus.la
 
@@ -103,5 +114,12 @@ test_consensus_api_LDADD = \
   $(top_builddir)/src/testing/libgnunettesting.la \
   libgnunetconsensus.la
 
+noinst_SCRIPTS = \
+       consensus-simulation.py
+
+CLEANFILES = \
+       $(noinst_SCRIPTS)
+
 EXTRA_DIST = \
-  test_consensus.conf
+  test_consensus.conf \
+  consensus-simulation.py.in
diff --git a/src/consensus/consensus-simulation.py 
b/src/consensus/consensus-simulation.py
deleted file mode 100644
index 542fe0dac..000000000
--- a/src/consensus/consensus-simulation.py
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/python
-# This file is part of GNUnet
-# (C) 2013 Christian Grothoff (and other contributing authors)
-#
-# GNUnet is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published
-# by the Free Software Foundation; either version 2, or (at your
-# option) any later version.
-#
-# GNUnet is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNUnet; see the file COPYING.  If not, write to the
-# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301, USA.
-
-from __future__ import absolute_import
-from __future__ import print_function
-import argparse
-import random
-from math import ceil,log,floor
-
-
-def bsc(n):
-  """ count the bits set in n"""
-  l = n.bit_length()
-  c = 0
-  x = 1
-  for _ in range(0, l):
-    if n & x:
-      c = c + 1
-    x = x << 1
-  return c
-
-
-def simulate(k, n, verbose):
-  assert k < n
-  largest_arc = int(2**ceil(log(n, 2))) / 2
-  num_ghosts = (2 * largest_arc) - n
-  if verbose:
-    print "we have", num_ghosts, "ghost peers"
-  # n.b. all peers with idx<k are evil
-  peers = range(n)
-  info = [1 << x for x in xrange(n)]
-  def done_p():
-    for x in xrange(k, n):
-      if bsc(info[x]) < n-k:
-        return False
-    return True
-  rounds = 0
-  while not done_p():
-    if verbose:
-      print "-- round --"
-    arc = 1
-    while arc <= largest_arc:
-      if verbose:
-        print "-- subround --"
-      new_info = [x for x in info]
-      for peer_physical in xrange(n):
-        peer_logical = peers[peer_physical]
-        peer_type = None
-        partner_logical = (peer_logical + arc) % n
-        partner_physical = peers.index(partner_logical)
-        if peer_physical < k or partner_physical < k:
-          if verbose:
-            print "bad peer in connection", peer_physical, "--", 
partner_physical
-          continue
-        if peer_logical & arc == 0:
-          # we are outgoing
-          if verbose:
-            print peer_physical, "connects to", partner_physical
-          peer_type = "outgoing"
-          if peer_logical < num_ghosts:
-            # we have a ghost, check if the peer who connects
-            # to our ghost is actually outgoing
-            ghost_partner_logical = (peer_logical - arc) % n
-            if ghost_partner_logical & arc == 0:
-              peer_type = peer_type + ", ghost incoming"
-          new_info[peer_physical] = new_info[peer_physical] | 
info[peer_physical] | info[partner_physical]
-          new_info[partner_physical] = new_info[partner_physical] | 
info[peer_physical] | info[partner_physical]
-        else:
-          peer_type = "incoming"
-        if verbose > 1:
-          print "type of", str(peer_physical) + ":", peer_type
-      info = new_info
-      arc = arc << 1;
-    rounds = rounds + 1
-    random.shuffle(peers)
-  return rounds
-
-
-if __name__ == "__main__":
-  parser = argparse.ArgumentParser()
-  parser.add_argument("k", metavar="k", type=int, help="#(bad peers)")
-  parser.add_argument("n", metavar="n", type=int, help="#(all peers)")
-  parser.add_argument("r", metavar="r", type=int, help="#(rounds)")
-  parser.add_argument('--verbose', '-v', action='count')
-
-  args = parser.parse_args()
-  sum = 0.0;
-  for n in xrange (0, args.r):
-    sum += simulate(args.k, args.n, args.verbose)
-  printsum / args.r;
-
-
diff --git a/src/consensus/consensus-simulation.py.in 
b/src/consensus/consensus-simulation.py.in
new file mode 100644
index 000000000..12bef871d
--- /dev/null
+++ b/src/consensus/consensus-simulation.py.in
@@ -0,0 +1,107 @@
address@hidden@
+# This file is part of GNUnet
+# (C) 2013, 2018 Christian Grothoff (and other contributing authors)
+#
+# GNUnet is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2, or (at your
+# option) any later version.
+#
+# GNUnet is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNUnet; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+from __future__ import absolute_import
+from __future__ import print_function
+import argparse
+import random
+from math import ceil, log, floor
+
+
+def bsc(n):
+    """ count the bits set in n"""
+    l = n.bit_length()
+    c = 0
+    x = 1
+    for _ in range(0, l):
+        if n & x:
+            c = c + 1
+        x = x << 1
+    return c
+
+
+def simulate(k, n, verbose):
+    assert k < n
+    largest_arc = int(2**ceil(log(n, 2))) / 2
+    num_ghosts = (2 * largest_arc) - n
+    if verbose:
+        print("we have", num_ghosts, "ghost peers")
+        # n.b. all peers with idx<k are evil
+    peers = range(n)
+    info = [1 << x for x in xrange(n)]
+
+    def done_p():
+        for x in xrange(k, n):
+            if bsc(info[x]) < n-k:
+                return False
+        return True
+    rounds = 0
+    while not done_p():
+        if verbose:
+            print("-- round --")
+        arc = 1
+        while arc <= largest_arc:
+            if verbose:
+                print("-- subround --")
+            new_info = [x for x in info]
+            for peer_physical in xrange(n):
+                peer_logical = peers[peer_physical]
+                peer_type = None
+                partner_logical = (peer_logical + arc) % n
+                partner_physical = peers.index(partner_logical)
+                if peer_physical < k or partner_physical < k:
+                    if verbose:
+                        print("bad peer in connection", peer_physical, "--", 
partner_physical)
+                    continue
+                if peer_logical & arc == 0:
+                    # we are outgoing
+                    if verbose:
+                        print(peer_physical, "connects to", partner_physical)
+                    peer_type = "outgoing"
+                    if peer_logical < num_ghosts:
+                        # we have a ghost, check if the peer who connects
+                        # to our ghost is actually outgoing
+                        ghost_partner_logical = (peer_logical - arc) % n
+                        if ghost_partner_logical & arc == 0:
+                            peer_type = peer_type + ", ghost incoming"
+                    new_info[peer_physical] = new_info[peer_physical] | 
info[peer_physical] | info[partner_physical]
+                    new_info[partner_physical] = new_info[partner_physical] | 
info[peer_physical] | info[partner_physical]
+                else:
+                    peer_type = "incoming"
+                if verbose > 1:
+                    print("type of", str(peer_physical) + ":", peer_type)
+            info = new_info
+            arc = arc << 1
+        rounds = rounds + 1
+        random.shuffle(peers)
+    return rounds
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument("k", metavar="k", type=int, help="#(bad peers)")
+    parser.add_argument("n", metavar="n", type=int, help="#(all peers)")
+    parser.add_argument("r", metavar="r", type=int, help="#(rounds)")
+    parser.add_argument('--verbose', '-v', action='count')
+
+    args = parser.parse_args()
+    sum = 0.0
+    for n in xrange(0, args.r):
+        sum += simulate(args.k, args.n, args.verbose)
+    print(sum / args.r)

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]