70542380d3
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')
|