diff options
Diffstat (limited to 'testcases/Controllers/ODL/CI/libraries/Common.py')
-rw-r--r-- | testcases/Controllers/ODL/CI/libraries/Common.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/testcases/Controllers/ODL/CI/libraries/Common.py b/testcases/Controllers/ODL/CI/libraries/Common.py new file mode 100644 index 000000000..e748caad8 --- /dev/null +++ b/testcases/Controllers/ODL/CI/libraries/Common.py @@ -0,0 +1,81 @@ +""" +Library for the robot based system test tool of the OpenDaylight project. +Authors: Baohua Yang@IBM, Denghui Huang@IBM +Updated: 2013-11-14 +""" +import collections +import xml.etree.ElementTree as ET + +''' +Common constants and functions for the robot framework. +''' + +def collection_should_contain(collection, *members): + """ + Fail if not every members is in the collection. + """ + if not isinstance(collection, collections.Iterable): + return False + for m in members: + if m not in collection: + return False + else: + return True + +def combine_strings(*strings): + """ + Combines the given `strings` together and returns the result. + The given strings are not altered by this keyword. + """ + result = '' + for s in strings: + if isinstance(s,str) or isinstance(s,unicode): + result += s + if result == '': + return None + else: + return result + + +def compare_xml(xml1, xml2): + """ + compare the two XML files to see if they contain the same data + but could be if different order. + It just split the xml in to lines and just check the line is in + the other file + """ + for line in xml1.rstrip().split('\n'): + if line not in xml2.rstrip().split('\n'): + return False + + for line in xml2.rstrip().split('\n'): + if line not in xml1.rstrip().split('\n'): + return False + + return True + +def num_of_nodes(depth, fanout): + '''returns num of switches of a mininet with tree topology + with particular depth and fanout parameters + ''' + result = 0 + for i in xrange(depth): + result += fanout**i + return result + +def num_of_links_for_node(nodeid, leaflist, fanout): + ''' + If the given node is a leaf node, there will be an only one link for it + and nodeid will be represented 2 times in topology + If the given node is not a leaf node, then there will be fanout+1 links + for it and nodeid will be represented (fanout+1)*2 times in topology + + p.s. root node is excluded. + ''' + if nodeid in leaflist: + return 1 + return (fanout+1) + +if __name__ == '__main__': + print num_of_nodes(3,4) + pass |