X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fpeerinfo-tool%2Ftest_gnunet_peerinfo.py.in;h=f54da35644bbe7e8e5b1ebb6d43a1203a48ae4f3;hb=35e5be0b0b4c7aea5a56d6a62333ab3a964a2972;hp=01f76aa1efa53d959bdbe05973339e30f45b29bd;hpb=ac2de52a5de68f6f4f13b7aa01a481869fffc6aa;p=oweals%2Fgnunet.git diff --git a/src/peerinfo-tool/test_gnunet_peerinfo.py.in b/src/peerinfo-tool/test_gnunet_peerinfo.py.in index 01f76aa1e..f54da3564 100755 --- a/src/peerinfo-tool/test_gnunet_peerinfo.py.in +++ b/src/peerinfo-tool/test_gnunet_peerinfo.py.in @@ -1,64 +1,93 @@ #!@PYTHON@ # This file is part of GNUnet. -# (C) 2010 Christian Grothoff (and other contributing authors) +# (C) 2010, 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 free software: you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, +# 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., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . # # Testcase for gnunet-peerinfo -import pexpect +import sys import os -import signal +import subprocess import re +import shutil +import time + +srcdir = "../.." +gnunet_pyexpect_dir = os.path.join(srcdir, "contrib/scripts") +if gnunet_pyexpect_dir not in sys.path: + sys.path.append(gnunet_pyexpect_dir) + +from gnunet_pyexpect import pexpect + +if os.name == 'posix': + peerinfo = './gnunet-peerinfo' + gnunetarm = 'gnunet-arm' + gnunettesting = 'gnunet-testing' +elif os.name == 'nt': + peerinfo = './gnunet-peerinfo.exe' + gnunetarm = 'gnunet-arm.exe' + gnunettesting = 'gnunet-testing.exe' + +pinfo = pexpect() + + +if os.name == "nt": + shutil.rmtree(os.path.join(os.getenv("TEMP"), "gnunet-test-peerinfo"), True) +else: + shutil.rmtree("/tmp/gnunet-test-peerinfo", True) + +# create hostkey via testing lib # FIXME: The /tmp/ location needs to be adjusted to the TMP variable! +hkk = subprocess.Popen([gnunettesting, '-n', '1', '-c', 'test_gnunet_peerinfo_data.conf', '-k', '/tmp/gnunet-test-peerinfo/.hostkey']) +hkk.communicate() -pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf') -pinfo.expect ('Timeout trying to interact with PEERINFO service\r') -pinfo.expect (pexpect.EOF); -os.system ('rm -rf /tmp/gnunet-test-peerinfo/') -os.system ('gnunet-arm -sq -c test_gnunet_peerinfo_data.conf') +arm = subprocess.Popen([gnunetarm, '-sq', '-c', 'test_gnunet_peerinfo_data.conf']) +arm.communicate() try: - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf -s') - pinfo.expect (re.compile ("I am peer `.*\'.\r")); - pinfo.expect (pexpect.EOF); + pinfo.spawn(None, [peerinfo, '-c', 'test_gnunet_peerinfo_data.conf', '-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pinfo.expect("stdout", re.compile(r'I am peer `.*\'.\r?\n')) - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf -qs') - pinfo.expect (re.compile (".......................................................................................................\r")); - pinfo.expect (pexpect.EOF); + pinfo.spawn(None, [peerinfo, '-c', 'test_gnunet_peerinfo_data.conf', '-qs'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pinfo.expect("stdout", re.compile(r'....................................................\r?\n')) - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf invalid') - pinfo.expect (re.compile ("Invalid command line argument `invalid\'\r")); - pinfo.expect (pexpect.EOF); + pinfo.spawn(None, [peerinfo, '-c', 'test_gnunet_peerinfo_data.conf', 'invalid'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pinfo.expect("stdout", re.compile(r'Invalid command line argument `invalid\'\r?\n')) + arm = subprocess.Popen([gnunetarm, '-q', '-i', 'transport', '-c', 'test_gnunet_peerinfo_data.conf']) + arm.communicate() + time.sleep(1) - os.system ('gnunet-arm -q -i transport -c test_gnunet_peerinfo_data.conf') - os.system ('sleep 1') - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf') - pinfo.expect (re.compile ("Peer `.*\'\r")); - pinfo.expect (re.compile (" *localhost:24357\r")); - pinfo.expect (pexpect.EOF); + pinfo.spawn(None, [peerinfo, '-i', '-c', 'test_gnunet_peerinfo_data.conf'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pinfo.expect("stdout", re.compile("Peer `.*'\r?\n")) + m = pinfo.expect("stdout", re.compile("\s.*:24357\r?\n")) + while len(m.group(0)) > 0: + m = pinfo.expect("stdout", re.compile("(\s.*:24357\r?\n|\r?\n|)")) - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf -n') - pinfo.expect (re.compile ("Peer `.*\'\r")); - pinfo.expect (re.compile (" *127..*:24357\r")); - pinfo.expect (pexpect.EOF); + pinfo.spawn(None, [peerinfo, '-i', '-c', 'test_gnunet_peerinfo_data.conf', '-n'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pinfo.expect("stdout", re.compile("Peer `.*'\r?\n")) + m = pinfo.expect("stdout", re.compile("\s.*:24357\r?\n")) + while len(m.group(0)) > 0: + m = pinfo.expect("stdout", re.compile("(\s.*:24357\r?\n|\r?\n|)")) - pinfo = pexpect.spawn ('gnunet-peerinfo -c test_gnunet_peerinfo_data.conf -qs') - pid = pinfo.read (-1) - pid = pid.strip () + pinfo.spawn(None, [peerinfo, '-c', 'test_gnunet_peerinfo_data.conf', '-qs'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + pid = pinfo.read("stdout") + pid.strip() finally: - os.system ('gnunet-arm -c test_gnunet_peerinfo_data.conf -eq') - os.system ('rm -rf /tmp/gnunet-test-peerinfo/') + arm = subprocess.Popen([gnunetarm, '-eq', '-c', 'test_gnunet_peerinfo_data.conf']) + arm.communicate() + if os.name == "nt": + shutil.rmtree(os.path.join(os.getenv("TEMP"), "gnunet-test-peerinfo"), True) + else: + shutil.rmtree("/tmp/gnunet-test-peerinfo", True)