mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-02-08 09:21:18 +01:00
What this patch implements:
This patch implements a tool which performs OpenFlow conformance testing.
The tool can:
- install various flow entries of OpenFlow 1.3 as follows:
* all 'action' except SET_QUEUE and GROUP
* all 'match' except IN_PHY_PORT
- confirm whether the datapath works correctly according to the installed flow entries.
Required test environment:
The tool requires the test environment that includes 2 switches and 2 links as follows:
+-----------+
+----------| target sw | The OpenFlow switch to be tested
| +-----------+
+------------+ (1) (2)
| controller | | |
+------------+ (1) (2)
| +-----------+
+----------| tester sw | OpenFlow Switch
+-----------+
(X) : port number
How does the tool work:
The tool will:
- install the flow entries into the target switch.
- transmit a packet from the tester switch to the target switch.
* According to the installed flow entries, the target switch outputs a packet towards the tester switch.
* The tester switch sends a PacketIn message to the tool.
- examine the packet that is included in the PacketIn message and output the result.
* The tool supports also the table-miss examinations.
The tool processes test files in the specified directory sequentially.
By forming the result, you can create the list as:
http://osrg.github.io/ryu-certification/switch/ovs.html
http://osrg.github.io/ryu-certification/switch/LINC.html
http://osrg.github.io/ryu-certification/switch/ofsoftswitch13.html
Required test file format:
[
"test name",
{
test pattern #01
},
{
test pattern #02
}, ...
]
Each test pattern has the following internal format:
{
"description": description of this test pattern,
"prerequisite": [
FlowMod messages used by this test pattern
],
"tests": [
"ingress": inbound packet data,
"egress": outbound packet data,
"PACKET-IN": packet data sent by PacketIn message,
"table-miss": table id in which table-miss occurs
]
}
The extensions of the test files have to be '.json'.
How to run:
Do the following command:
ryu-manager ryu/tests/switch/tester.py
The following options can be used:
- --test-switch-target (target sw dp-id)
- --test-switch-tester (tester sw dp-id)
- --test-switch-dir (test files directory)
ex)
ryu-manager --test-switch-target 0000000000000005 --test-switch-dir /home/ryu/tests ryu/tests/switch/tester.py
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
61 lines
2.6 KiB
Python
61 lines
2.6 KiB
Python
# Copyright (C) 2011 Nippon Telegraph and Telephone Corporation.
|
|
# Copyright (C) 2011 Isaku Yamahata <yamahata at valinux co jp>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
"""
|
|
global flags
|
|
"""
|
|
|
|
from oslo.config import cfg
|
|
|
|
CONF = cfg.CONF
|
|
|
|
CONF.register_cli_opts([
|
|
# app/quantum_adapter
|
|
cfg.StrOpt('neutron-url', default='http://localhost:9696',
|
|
help='URL for connecting to neutron',
|
|
deprecated_name='quantum-url'),
|
|
cfg.IntOpt('neutron-url-timeout', default=30,
|
|
help='timeout value for connecting to neutron in seconds',
|
|
deprecated_name='quantum-url-timeout'),
|
|
cfg.StrOpt('neutron-admin-username', default='neutron',
|
|
help='username for connecting to neutron in admin context',
|
|
deprecated_name='quantum-admin-username'),
|
|
cfg.StrOpt('neutron-admin-password', default='service_password',
|
|
help='password for connecting to neutron in admin context',
|
|
deprecated_name='quantum-admin-password'),
|
|
cfg.StrOpt('neutron-admin-tenant-name', default='service',
|
|
help='tenant name for connecting to neutron in admin context',
|
|
deprecated_name='quantum-admin-tenant-name'),
|
|
cfg.StrOpt('neutron-admin-auth-url', default='http://localhost:5000/v2.0',
|
|
help='auth url for connecting to neutron in admin context',
|
|
deprecated_name='quantum-admin-auth-url'),
|
|
cfg.StrOpt('neutron-auth-strategy', default='keystone',
|
|
help='auth strategy for connecting to neutron in admin'
|
|
'context',
|
|
deprecated_name='quantum-auth-strategy'),
|
|
cfg.StrOpt('neutron-controller-addr', default=None,
|
|
help='openflow method:address:port to set controller of'
|
|
'ovs bridge',
|
|
deprecated_name='quantum-controller-addr')
|
|
])
|
|
|
|
CONF.register_cli_opts([
|
|
# tests/switch/tester
|
|
cfg.StrOpt('target', default='0000000000000001', help='target sw dp-id'),
|
|
cfg.StrOpt('tester', default='0000000000000002', help='tester sw dp-id'),
|
|
cfg.StrOpt('dir', default='ryu/tests/switch/of13',
|
|
help='test files directory')
|
|
], group='test-switch')
|