[ONOS-7356] Initial commit to decouple Mininet from TestON tests:
- Add Network class
- Allow ONOS start up without Mininet component
- Migrate SAMP tests and FUNCintent to use Network class
Change-Id: I81b4a4dd27ff6b3a7f2b60abbbcef078b0fa0438
diff --git a/TestON/tests/dependencies/Network.py b/TestON/tests/dependencies/Network.py
new file mode 100644
index 0000000..6377c0c
--- /dev/null
+++ b/TestON/tests/dependencies/Network.py
@@ -0,0 +1,58 @@
+"""
+Copyright 2018 Open Networking Foundation ( ONF )
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+
+ TestON 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 of the License, or
+ ( at your option ) any later version.
+
+ TestON 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 TestON. If not, see <http://www.gnu.org/licenses/>.
+"""
+import json
+class Network():
+
+ def __str__( self ):
+ return self.name
+
+ def __repr__( self ):
+ return "%s:%s" % ( self.name, self.components )
+
+ def __getattr__( self, name ):
+ """
+ Called when an attribute lookup has not found the attribute
+ in the usual places (i.e. it is not an instance attribute nor
+ is it found in the class tree for self). name is the attribute
+ name. This method should return the (computed) attribute value
+ or raise an AttributeError exception.
+
+ We will look into each of the network component handles to try
+ to find the attreibute.
+ """
+ #FIXME: allow to call a specific driver
+ for component in self.components:
+ if hasattr( component, name ):
+ main.log.debug( "%s has attribute '%s'" % ( component.options[ 'name' ], name ) )
+ return getattr( component, name )
+ raise AttributeError( "Could not find attribute '%s' in any of these components: %s" % ( name, self.components ) )
+
+ def __init__( self, name="Network" ):
+ """
+ components: network components created for the test
+ """
+ self.name = str( name )
+ # Get a list of network components that are created in the test
+ self.components = []
+ for key, value in main.componentDictionary.items():
+ if value[ 'type' ] in [ 'MininetCliDriver', 'RemoteMininetDriver', 'NetworkDriver' ] and hasattr( main, key ):
+ self.components.append( getattr( main, key ) )
+ main.log.debug( "%s initialized with components: %s" % ( self.name, self.components ) )