diff --git a/Makefile b/Makefile index 82a5d374ed9b9b720bce17a378c7f906a2265d2b..829736b1fe6e15788c14ee9e342a4c230518cd43 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,5 @@ clean: - rm -rf build dist build *.egg-info *.pyc \ No newline at end of file + rm -rf build dist build *.egg-info *.pyc + +test: mininet/*.py mininet/test/*.py + mininet/test/test_nets.py \ No newline at end of file diff --git a/mininet/mininet.py b/mininet/mininet.py index f46b82590e9778bb3710b9208c94e92203e1003c..b0d8baa727ebc288f51e94d195e117f2cfeb17e5 100755 --- a/mininet/mininet.py +++ b/mininet/mininet.py @@ -73,6 +73,8 @@ flush = sys.stdout.flush from resource import setrlimit, RLIMIT_NPROC, RLIMIT_NOFILE +DATAPATHS = ['user', 'kernel'] + # Utility routines to make it easier to run commands def run( cmd ): diff --git a/mininet/test/test_nets.py b/mininet/test/test_nets.py new file mode 100755 index 0000000000000000000000000000000000000000..87dca058044b8d6c8ff1e6f9b6d6041f7e816c28 --- /dev/null +++ b/mininet/test/test_nets.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python +'''@package mininet + +Test creation and all-pairs ping for each included mininet topo type. +''' + +from time import sleep +import unittest + +from mininet.mininet import init, TreeNet, pingTest, DATAPATHS + +class testMinimal(unittest.TestCase): + '''For each datapath type, test ping with a minimal topology. + + Each topology has two hosts and one switch. + ''' + + def testMinimal(self): + '''Ping test with user-space datapath on minimal topology''' + init() + for datapath in DATAPATHS: + k = datapath == 'kernel' + network = TreeNet(depth = 1, fanout = 2, kernel = k) + dropped = network.run(pingTest) + self.assertEqual(dropped, 0) + + +class testTree(unittest.TestCase): + '''For each datapath type, test all-pairs ping with TreeNet.''' + + def testTree16(self): + '''Ping test with user-space datapath on minimal topology''' + init() + for datapath in DATAPATHS: + k = datapath == 'kernel' + network = TreeNet(depth = 2, fanout = 4, kernel = k) + dropped = network.run(pingTest) + self.assertEqual(dropped, 0) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file