blob: 469a99ed786806de34f1a4eb720ebb49be354985 [file] [log] [blame]
peusterm94f53ae2016-01-15 12:32:53 +01001#!/usr/bin/env python
2
3"""
4Run all tests
5 -v : verbose output
6 -e : emulator test only (no API tests)
7 -a : API tests only
8"""
9
10from unittest import defaultTestLoader, TextTestRunner, TestSuite
11import os
12import sys
13from mininet.util import ensureRoot
14from mininet.clean import cleanup
15from mininet.log import setLogLevel
16
17
18def runTests( testDir, verbosity=1, emuonly=False, apionly=False ):
19 "discover and run all tests in testDir"
peusterm0344cc62016-02-03 09:50:26 +010020 # ensure inport paths work
21 sys.path.append("%s/.." % testDir)
peusterm94f53ae2016-01-15 12:32:53 +010022 # ensure root and cleanup before starting tests
23 ensureRoot()
24 cleanup()
25 # discover all tests in testDir
26 testSuite = defaultTestLoader.discover( testDir )
27 if emuonly:
28 testSuiteFiltered = [s for s in testSuite if "Emulator" in str(s)]
29 testSuite = TestSuite()
30 testSuite.addTests(testSuiteFiltered)
31 if apionly:
32 testSuiteFiltered = [s for s in testSuite if "Api" in str(s)]
33 testSuite = TestSuite()
34 testSuite.addTests(testSuiteFiltered)
35
36 # run tests
37 TextTestRunner( verbosity=verbosity ).run( testSuite )
38
39
40def main(thisdir):
41 setLogLevel( 'warning' )
42 # get the directory containing example tests
43 vlevel = 2 if '-v' in sys.argv else 1
44 emuonly = ('-e' in sys.argv)
45 apionly = ('-a' in sys.argv)
46 runTests(
47 testDir=thisdir, verbosity=vlevel, emuonly=emuonly, apionly=apionly)
48
49
50if __name__ == '__main__':
51 thisdir = os.path.dirname( os.path.realpath( __file__ ) )
52 main(thisdir)