blob: b6c14d3ba5ab7a0b154dbc8dedadf51cd0a6c555 [file] [log] [blame]
Dan Talayco34089522010-02-07 23:07:41 -08001"""
2OpenFlow Test Framework
3
4Configuration fragment
5
6This file contains Python code to specify the configuration
7of the system under test.
8
9This is a work in progress. The code below is for illustration only.
10
11The configuration information is extensible in that any
12Python code may be added to this file (or its imports) and will
13be available to test cases.
14
15A platform identifier is given at the top of the file and most
16other information is determined by testing this value. Additional
17files may also be imported based on the platform.
18
19The configuration must specify a mapping from system interfaces
20available to the test framework to OpenFlow port numbers on the
21switch under test. This is done in the interface_ofport_map
22dictionary. Future extensions may include specifying a driver
23for the port (so as to allow remote packet generation) and to
24specify a switch instance (to allow multiple switches to be
25tested together).
26
27Currently, the assumption is that ports are bidirectional, so
28specifying "OF port 1 is connnected to eth2" implies this is so
29for both TX and RX.
30
31"""
32
33##@var platform
34# A string representing the platform under test. Tested below
35# for determining other variables.
36
37##@var switch_cxn_type
38# How does the test framework communicate to the switch?
39#
40# Options include:
41# @arg localhost: Switch is running on same host as tests
42# @arg ssh: Use paramiko to control ssh connection. Needs switch
43# IP and other params
44#
45# For ssh, additional variables include
46# @arg switch_ip = "192.168.2.21"
47# @arg switch_username = "root"
48# @arg switch_password
49
50##@var switch_init
51# A function to be called to initialize the switch. May be None
52# to indicate no such function needs to be called.
53
54##@var switch_connect
55# Function to be called to prompt the switch to connect to the
56# controller. The function may need to maintain connection state
57# as it could be called multiple times between disconnects.
58
59##@var switch_disconnect
60# Function to be called to force the switch to disconnect from the
61# controller.
62
Dan Talayco9be11bc2010-02-12 22:58:46 -080063##@var controller_host
64# Gives the controller host address to use
Dan Talayco34089522010-02-07 23:07:41 -080065
66##@var controller_port
67# Gives the controller port to use
68
Dan Talayco9be11bc2010-02-12 22:58:46 -080069# platform = "sw_userspace"
Dan Talayco34089522010-02-07 23:07:41 -080070# platform = "sw_kernelspace"
Dan Talayco9be11bc2010-02-12 22:58:46 -080071platform = "bcm_indigo"
Dan Talayco34089522010-02-07 23:07:41 -080072# platform = "stanford_lb4g"
73
Dan Talayco9be11bc2010-02-12 22:58:46 -080074
75# These can be moved into platform specific code if needed
76
77RCV_TIMEOUT_DEFAULT = 10
78RCV_SIZE_DEFAULT = 4096
79CONTROLLER_HOST_DEFAULT = ''
80CONTROLLER_PORT_DEFAULT = 6633
81
82# Number of switch connection requests to queue
83LISTEN_QUEUE_SIZE = 1
84
Dan Talayco34089522010-02-07 23:07:41 -080085if platform == "sw_userspace":
86 interface_ofport_map = {
87 1 : "eth2",
88 2 : "eth3",
89 3 : "eth4",
90 4 : "eth5"
91 }
92 switch_cxn_type = "localhost"
93 switch_init = None # TBD
94 switch_connect = None # TBD
95 switch_disconnect = None # TBD
Dan Talayco9be11bc2010-02-12 22:58:46 -080096 controller_host = "172.27.74.158"
Dan Talayco34089522010-02-07 23:07:41 -080097 controller_port = 7000
98
99elif platform == "bcm_indigo":
Dan Talayco9be11bc2010-02-12 22:58:46 -0800100 interface_ofport_map = {
101 1 : "eth2",
102 2 : "eth3",
103 3 : "eth4",
104 4 : "eth5"
105 }
106 # For SSH connections to switch
Dan Talayco34089522010-02-07 23:07:41 -0800107 switch_cxn_type = "ssh"
108 switch_ip = "192.168.2.21"
109 switch_username = "root"
110 switch_password = "OpenFlow"
111 switch_init = None # TBD
112 switch_connect = None # TBD
113 switch_disconnect = None # TBD
Dan Talayco9be11bc2010-02-12 22:58:46 -0800114 controller_host = "192.168.2.2"
115# controller_host = "172.27.74.26"
Dan Talayco34089522010-02-07 23:07:41 -0800116 controller_port = 7000
Dan Talayco9be11bc2010-02-12 22:58:46 -0800117
118
119# Debug levels
120DEBUG_ALL = 0
121DEBUG_VERBOSE = 1
122DEBUG_INFO = 2
123DEBUG_WARN = 3
124DEBUG_ERROR = 4
125DEBUG_CRITICAL = 5
126DEBUG_NONE = 6 # For current setting only; not for string level
127
128dbg_string = [
129 "DBG ALL ",
130 "VERBOSE ",
131 "INFO ",
132 "WARN ",
133 "ERROR ",
134 "CRITICAL "
135 ]
136
137def debug_log(module, cur_level, level, string):
138 """
139 Log a debug message
140
141 Compare the debug level to the current level and display
142 the string if appropriate.
143 @param module String representing the module reporting the info/error
144 @param cur_level The module's current debug level
145 @param level The level of the error message
146 @param string String to report
147
148 @todo Allow file logging options, etc
149 @todo Add timestamps
150 """
151
152 if level >= cur_level:
153 #@todo Support output redirection based on debug level
154 print module + ":" + dbg_string[level] + ":" + string
155