J'essaie de faire un ping sur deux réseaux différents avec thread. Je suis en mesure d'obtenir la réponse que je veux, mais je veux la convertir en un test. J'ai le code que j'ai essayé ci-dessous mais le coureur d'essai dit qu'aucun essai n'a été exécuté. Le code est ci-dessous:Effectuer un ping sur un réseau à l'aide de threads et le tester
#!/home/workspace/downloads/Python-2.6.4/python
from threading import Thread
import subprocess, unittest
from Queue import Queue
class TestPing(unittest.TestCase):
num_threads = 4
queue = Queue()
ips = ["10.51.54.100", "10.51.54.122"]
#wraps system ping command
def RunTest(i, q):
"""Pings subnet"""
while True:
ip = q.get()
print "Thread %s: Pinging %s" % (i, ip)
ret = subprocess.call("ping -c 1 %s" % ip,
shell=True,
stdout=open('/dev/null', 'w'),
stderr=subprocess.STDOUT)
if ret == 0:
print "%s: is alive" % ip
assert True
else:
print "%s: did not respond" % ip
assert False
q.task_done()
#Spawn thread pool
for i in range(num_threads):
worker = Thread(target=pinger, args=(i, queue))
worker.setDaemon(True)
worker.start()
#Place work in queue
for ip in ips:
queue.put(ip)
#Wait until worker threads are done to exit
queue.join()
class PingTestSuite(unittest.TestSuite):
def makePingTestSuite():
suite = unittest.TestSuite()
suite.addTest(TestPingMove("TestPing"))
return suite
def suite():
return unittest.makeSuite(TestPing)
if __name__ == '__main__':
unittest.main()
Je veux le test d'affirmer soit vrai et faux si un réseau ne donne aucune réponse et exécuter deux tests pour les 2 réseaux être épinglées. Est-ce que quelqu'un sait où je me suis trompé?
Juste un nit: vous ne pouvez pas ping "un réseau". Vous ping * hôtes *, pas des réseaux entiers. Sauf si vous faites un ping de diffusion bien sûr, ce qui implique de compter les réponses et les choses que vous ne faites clairement pas. – unwind