os-ken/ryu/flags.py
Yuichi Ito 70542380d3 test tool: add OpenFlowSwitch test tool
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>
2013-12-13 17:27:49 +09:00

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