diff options
Diffstat (limited to 'INSTALL.md')
-rw-r--r-- | INSTALL.md | 823 |
1 files changed, 0 insertions, 823 deletions
diff --git a/INSTALL.md b/INSTALL.md deleted file mode 100644 index 36ecfb834..000000000 --- a/INSTALL.md +++ /dev/null @@ -1,823 +0,0 @@ -How to Install Open vSwitch on Linux, FreeBSD and NetBSD -======================================================== - -This document describes how to build and install Open vSwitch on a -generic Linux, FreeBSD, or NetBSD host. For specifics around installation -on a specific platform, please see one of these files: - - - [INSTALL.Debian.md] - - [INSTALL.Fedora.md] - - [INSTALL.RHEL.md] - - [INSTALL.XenServer.md] - - [INSTALL.NetBSD.md] - - [INSTALL.Windows.md] - - [INSTALL.DPDK.md] - -Build Requirements ------------------- - -To compile the userspace programs in the Open vSwitch distribution, -you will need the following software: - - - GNU make. - - - A C compiler, such as: - - * GCC 4.x. - - * Clang. Clang 3.4 and later provide useful static semantic - analysis and thread-safety checks. For Ubuntu, there are - nightly built packages available on clang's website. - - * MSVC 2013. See [INSTALL.Windows] for additional Windows build - instructions. - - While OVS may be compatible with other compilers, optimal - support for atomic operations may be missing, making OVS very - slow (see lib/ovs-atomic.h). - - - libssl, from OpenSSL, is optional but recommended if you plan to - connect the Open vSwitch to an OpenFlow controller. libssl is - required to establish confidentiality and authenticity in the - connections from an Open vSwitch to an OpenFlow controller. If - libssl is installed, then Open vSwitch will automatically build - with support for it. - - - libcap-ng, written by Steve Grubb, is optional but recommended. It - is required to run OVS daemons as a non-root user with dropped root - privileges. If libcap-ng is installed, then Open vSwitch will - automatically build with support for it. - - - Python 2.7. You must also have the Python six library. - -On Linux, you may choose to compile the kernel module that comes with -the Open vSwitch distribution or to use the kernel module built into -the Linux kernel (version 3.3 or later). See the [FAQ.md] question -"What features are not available in the Open vSwitch kernel datapath that -ships as part of the upstream Linux kernel?" for more information on -this trade-off. You may also use the userspace-only implementation, -at some cost in features and performance (see [INSTALL.userspace.md] -for details). To compile the kernel module on Linux, you must also -install the following: - - - A supported Linux kernel version. Please refer to [README.md] for a - list of supported versions. - - For optional support of ingress policing, you must enable kernel - configuration options NET_CLS_BASIC, NET_SCH_INGRESS, and - NET_ACT_POLICE, either built-in or as modules. (NET_CLS_POLICE is - obsolete and not needed.) - - On kernels before 3.11, the ip_gre module, for GRE tunnels over IP - (NET_IPGRE), must not be loaded or compiled in. - - To configure HTB or HFSC quality of service with Open vSwitch, - you must enable the respective configuration options. - - To use Open vSwitch support for TAP devices, you must enable - CONFIG_TUN. - - - To build a kernel module, you need the same version of GCC that - was used to build that kernel. - - - A kernel build directory corresponding to the Linux kernel image - the module is to run on. Under Debian and Ubuntu, for example, - each linux-image package containing a kernel binary has a - corresponding linux-headers package with the required build - infrastructure. - -If you are working from a Git tree or snapshot (instead of from a -distribution tarball), or if you modify the Open vSwitch build system -or the database schema, you will also need the following software: - - - Autoconf version 2.63 or later. - - - Automake version 1.10 or later. - - - libtool version 2.4 or later. (Older versions might work too.) - -To run the unit tests, you also need: - - - Perl. Version 5.10.1 is known to work. Earlier versions should - also work. - -The datapath tests for userspace and Linux datapaths also rely upon: - - - pyftpdlib. Version 1.2.0 is known to work. Earlier versions should - also work. - - - GNU wget. Version 1.16 is known to work. Earlier versions should - also work. - -The ovs-vswitchd.conf.db(5) manpage will include an E-R diagram, in -formats other than plain text, only if you have the following: - - - "dot" from graphviz (http://www.graphviz.org/). - - - Perl. Version 5.10.1 is known to work. Earlier versions should - also work. - -If you are going to extensively modify Open vSwitch, please consider -installing the following to obtain better warnings: - - - "sparse" version 0.4.4 or later - (http://www.kernel.org/pub/software/devel/sparse/dist/). - - - GNU make. - - - clang, version 3.4 or later - - - “flake8”, version 2.X, along with the “hacking” flake8 plugin (for Python - code). The automatic flake8 check that runs against Python code has some - warnings enabled that come from the "hacking" flake8 plugin. If it's not - installed, the warnings just won't occur until it's run on a system with - "hacking" installed. Note that there are problems with flake8 3.0 and the - “hacking” plugin. To ensure you get flake8 2.X, you can use - “pip install ‘flake8<3.0’”. - -Also, you may find the ovs-dev script found in utilities/ovs-dev.py useful. - -Installation Requirements -------------------------- - -The machine on which Open vSwitch is to be installed must have the -following software: - - - libc compatible with the libc used for build. - - - libssl compatible with the libssl used for build, if OpenSSL was - used for the build. - - - On Linux, the same kernel version configured as part of the build. - - - For optional support of ingress policing on Linux, the "tc" program - from iproute2 (part of all major distributions and available at - http://www.linux-foundation.org/en/Net:Iproute2). - - - Python 2.7. You must also have the Python six library. - -On Linux you should ensure that /dev/urandom exists. To support TAP -devices, you must also ensure that /dev/net/tun exists. - -Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD -================================================================= - -Once you have installed all the prerequisites listed above in the -Base Prerequisites section, follow the procedures below to bootstrap, -to configure and to build the code. - -Bootstrapping the Sources -------------------------- - -This step is not needed if you have downloaded a released tarball. -If you pulled the sources directly from an Open vSwitch Git tree or -got a Git tree snapshot, then run boot.sh in the top source directory -to build the "configure" script. - - `% ./boot.sh` - - -Configuring the Sources ------------------------ - -Configure the package by running the configure script. You can -usually invoke configure without any arguments. For example: - - `% ./configure` - -By default all files are installed under /usr/local. Open vSwitch also -expects to find its database in /usr/local/etc/openvswitch by default. -If you want to install all files into, e.g., /usr and /var instead of -/usr/local and /usr/local/var and expect to use /etc/openvswitch as the default -database directory, add options as shown here: - - `% ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc` - -Note that the Open vSwitch installed with packages like .rpm (e.g. via 'yum -install' or 'rpm -ivh') and .deb (e.g. via 'apt-get install' or 'dpkg -i') use -the above configure options. - -By default, static libraries are built and linked against. If you -want to use shared libraries instead: - - `% ./configure --enable-shared` - -To use a specific C compiler for compiling Open vSwitch user -programs, also specify it on the configure command line, like so: - - `% ./configure CC=gcc-4.2` - -To use 'clang' compiler: - - `% ./configure CC=clang` - -To supply special flags to the C compiler, specify them as CFLAGS on -the configure command line. If you want the default CFLAGS, which -include "-g" to build debug symbols and "-O2" to enable optimizations, -you must include them yourself. For example, to build with the -default CFLAGS plus "-mssse3", you might run configure as follows: - - `% ./configure CFLAGS="-g -O2 -mssse3"` - -For efficient hash computation special flags can be passed to leverage -built-in intrinsics. For example on X86_64 with SSE4.2 instruction set -support, CRC32 intrinsics can be used by passing '-msse4.2'. - - `% ./configure CFLAGS="-g -O2 -msse4.2"` - -If you are on a different processor and don't know what flags to choose, it -is recommended to use '-march=native' settings. - - `% ./configure CFLAGS="-g -O2 -march=native"` - -With this, GCC will detect the processor and automatically set appropriate -flags for it. This should not be used if you are compiling OVS outside the -target machine. - -Note that these CFLAGS are not applied when building the Linux -kernel module. Custom CFLAGS for the kernel module are supplied -using the EXTRA_CFLAGS variable when running make. So, for example: - - `% make EXTRA_CFLAGS="-Wno-error=date-time"` - -To build the Linux kernel module, so that you can run the -kernel-based switch, pass the location of the kernel build -directory on --with-linux. For example, to build for a running -instance of Linux: - - `% ./configure --with-linux=/lib/modules/`uname -r`/build` - -If --with-linux requests building for an unsupported version of -Linux, then "configure" will fail with an error message. Please -refer to the [FAQ.md] for advice in that case. - -If you wish to build the kernel module for an architecture other -than the architecture of the machine used for the build, you may -specify the kernel architecture string using the KARCH variable -when invoking the configure script. For example, to build for MIPS -with Linux: - - `% ./configure --with-linux=/path/to/linux KARCH=mips` - -If you plan to do much Open vSwitch development, you might want to -add --enable-Werror, which adds the -Werror option to the compiler -command line, turning warnings into errors. That makes it -impossible to miss warnings generated by the build. - -To build with gcov code coverage support, add --enable-coverage, -e.g.: - - `% ./configure --enable-coverage` - -The configure script accepts a number of other options and honors -additional environment variables. For a full list, invoke -configure with the --help option. - -You can also run configure from a separate build directory. This -is helpful if you want to build Open vSwitch in more than one way -from a single source directory, e.g. to try out both GCC and Clang -builds, or to build kernel modules for more than one Linux version. -Here is an example: - - `% mkdir _gcc && (cd _gcc && ../configure CC=gcc)` - `% mkdir _clang && (cd _clang && ../configure CC=clang)` - -Under certains loads the ovsdb-server and other components perform -better when using the jemalloc memory allocator, instead of the glibc -memory allocator. - -If you wish to link with jemalloc add it to LIBS: - - `% ./configure LIBS=-ljemalloc` - -Building the Sources --------------------- - -1. Run GNU make in the build directory, e.g.: - - `% make` - - or if GNU make is installed as "gmake": - - `% gmake` - - If you used a separate build directory, run make or gmake from that - directory, e.g.: - - `% make -C _gcc` - `% make -C _clang` - - For improved warnings if you installed "sparse" (see "Prerequisites"), - add C=1 to the command line. - - Some versions of Clang and ccache are not completely compatible. - If you see unusual warnings when you use both together, consider - disabling ccache for use with Clang. - -2. Consider running the testsuite. Refer to "Running the Testsuite" - below, for instructions. - -3. Become root by running "su" or another program. - -4. Run "make install" to install the executables and manpages into the - running system, by default under /usr/local. - -5. If you built kernel modules, you may install them, e.g.: - - `% make modules_install` - - It is possible that you already had a Open vSwitch kernel module - installed on your machine that came from upstream Linux (in a - different directory). To make sure that you load the Open vSwitch - kernel module you built from this repository, you should create a - depmod.d file that prefers your newly installed kernel modules over - the kernel modules from upstream Linux. The following snippet of - code achieves the same. - - ``` - % config_file="/etc/depmod.d/openvswitch.conf" - % for module in datapath/linux/*.ko; do - modname="$(basename ${module})" - echo "override ${modname%.ko} * extra" >> "$config_file" - echo "override ${modname%.ko} * weak-updates" >> "$config_file" - done - % depmod -a - ``` - - Finally, load the kernel modules that you need. e.g.: - - `% /sbin/modprobe openvswitch` - - To verify that the modules have been loaded, run "/sbin/lsmod" and - check that openvswitch is listed. - - If the `modprobe` operation fails, look at the last few kernel log - messages (e.g. with `dmesg | tail`): - - - Otherwise, the most likely problem is that Open vSwitch was - built for a kernel different from the one into which you are - trying to load it. Run `modinfo` on openvswitch.ko and on - a module built for the running kernel, e.g.: - - ``` - % /sbin/modinfo openvswitch.ko - % /sbin/modinfo /lib/modules/`uname -r`/kernel/net/bridge/bridge.ko - ``` - - Compare the "vermagic" lines output by the two commands. If - they differ, then Open vSwitch was built for the wrong kernel. - - - If you decide to report a bug or ask a question related to - module loading, please include the output from the `dmesg` and - `modinfo` commands mentioned above. - -6. Initialize the configuration database using ovsdb-tool, e.g.: - - `% mkdir -p /usr/local/etc/openvswitch` - `% ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema` - -Startup -======= - -Before starting ovs-vswitchd itself, you need to start its -configuration database, ovsdb-server. Each machine on which Open -vSwitch is installed should run its own copy of ovsdb-server. -Configure it to use the database you created during installation (as -explained above), to listen on a Unix domain socket, to connect to any -managers specified in the database itself, and to use the SSL -configuration in the database: - - ``` - % ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \ - --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ - --private-key=db:Open_vSwitch,SSL,private_key \ - --certificate=db:Open_vSwitch,SSL,certificate \ - --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ - --pidfile --detach - ``` - -(If you built Open vSwitch without SSL support, then omit ---private-key, --certificate, and --bootstrap-ca-cert.) - -Then initialize the database using ovs-vsctl. This is only -necessary the first time after you create the database with -ovsdb-tool (but running it at any time is harmless): - - `% ovs-vsctl --no-wait init` - -Then start the main Open vSwitch daemon, telling it to connect to the -same Unix domain socket: - - `% ovs-vswitchd --pidfile --detach` - -Now you may use ovs-vsctl to set up bridges and other Open vSwitch -features. For example, to create a bridge named br0 and add ports -eth0 and vif1.0 to it: - - `% ovs-vsctl add-br br0` - `% ovs-vsctl add-port br0 eth0` - `% ovs-vsctl add-port br0 vif1.0` - -Please refer to ovs-vsctl(8) for more details. - -Upgrading -========= - -When you upgrade Open vSwitch from one version to another, you should -also upgrade the database schema: - -1. Stop the Open vSwitch daemons, e.g.: - - ``` - % kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid` - ``` - -2. Install the new Open vSwitch release by using the same configure options as -was used for installing the previous version. If you do not use the same -configure options, you can end up with two different versions of Open vSwitch -executables installed in different locations. - -3. Upgrade the database, in one of the following two ways: - - - If there is no important data in your database, then you may - delete the database file and recreate it with ovsdb-tool, - following the instructions under "Building and Installing Open - vSwitch for Linux, FreeBSD or NetBSD". - - - If you want to preserve the contents of your database, back it - up first, then use "ovsdb-tool convert" to upgrade it, e.g.: - - `% ovsdb-tool convert /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema` - -4. Start the Open vSwitch daemons as described under "Building and - Installing Open vSwitch for Linux, FreeBSD or NetBSD" above. - -Hot Upgrading -============= -Upgrading Open vSwitch from one version to the next version with minimum -disruption of traffic going through the system that is using that Open vSwitch -needs some considerations: - -1. If the upgrade only involves upgrading the userspace utilities and daemons -of Open vSwitch, make sure that the new userspace version is compatible with -the previously loaded kernel module. - -2. An upgrade of userspace daemons means that they have to be restarted. -Restarting the daemons means that the OpenFlow flows in the ovs-vswitchd daemon -will be lost. One way to restore the flows is to let the controller -re-populate it. Another way is to save the previous flows using a utility -like ovs-ofctl and then re-add them after the restart. Restoring the old flows -is accurate only if the new Open vSwitch interfaces retain the old 'ofport' -values. - -3. When the new userspace daemons get restarted, they automatically flush -the old flows setup in the kernel. This can be expensive if there are hundreds -of new flows that are entering the kernel but userspace daemons are busy -setting up new userspace flows from either the controller or an utility like -ovs-ofctl. Open vSwitch database provides an option to solve this problem -through the other_config:flow-restore-wait column of the Open_vSwitch table. -Refer to the ovs-vswitchd.conf.db(5) manpage for details. - -4. If the upgrade also involves upgrading the kernel module, the old kernel -module needs to be unloaded and the new kernel module should be loaded. This -means that the kernel network devices belonging to Open vSwitch is recreated -and the kernel flows are lost. The downtime of the traffic can be reduced -if the userspace daemons are restarted immediately and the userspace flows -are restored as soon as possible. - -The ovs-ctl utility's "restart" function only restarts the userspace daemons, -makes sure that the 'ofport' values remain consistent across restarts, restores -userspace flows using the ovs-ofctl utility and also uses the -other_config:flow-restore-wait column to keep the traffic downtime to the -minimum. The ovs-ctl utility's "force-reload-kmod" function does all of the -above, but also replaces the old kernel module with the new one. Open vSwitch -startup scripts for Debian, XenServer and RHEL use ovs-ctl's functions and it -is recommended that these functions be used for other software platforms too. - -Testsuites -========== - -This section describe Open vSwitch's built-in support for various test -suites. You must bootstrap, configure and build Open vSwitch (steps are -in "Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD" -above) before you run the tests described here. You do not need to -install Open vSwitch or to build or load the kernel module to run -these test suites. You do not need supervisor privilege to run these -test suites. - -Self-Tests ----------- - -Open vSwitch includes a suite of self-tests. Before you submit patches -upstream, we advise that you run the tests and ensure that they pass. -If you add new features to Open vSwitch, then adding tests for those -features will ensure your features don't break as developers modify -other areas of Open vSwitch. - -Refer to "Testsuites" above for prerequisites. - -To run all the unit tests in Open vSwitch, one at a time: - `make check` -This takes under 5 minutes on a modern desktop system. - -To run all the unit tests in Open vSwitch, up to 8 in parallel: - `make check TESTSUITEFLAGS=-j8` -This takes under a minute on a modern 4-core desktop system. - -To see a list of all the available tests, run: - `make check TESTSUITEFLAGS=--list` - -To run only a subset of tests, e.g. test 123 and tests 477 through 484: - `make check TESTSUITEFLAGS='123 477-484'` -(Tests do not have inter-dependencies, so you may run any subset.) - -To run tests matching a keyword, e.g. "ovsdb": - `make check TESTSUITEFLAGS='-k ovsdb'` - -To see a complete list of test options: - `make check TESTSUITEFLAGS=--help` - -The results of a testing run are reported in tests/testsuite.log. -Please report test failures as bugs and include the testsuite.log in -your report. - -If the build was configured with "--enable-coverage" and the "lcov" -utility is installed, you can run the testsuite and generate a code -coverage report by using "make check-lcov". All of the options for -TESTSUITEFLAGS are available, so you can e.g.: - `make check-lcov TESTSUITEFLAGS=-j8 -k ovn` - -If you have "valgrind" installed, then you can also run the testsuite -under valgrind by using "make check-valgrind" in place of "make -check". All the same options are available via TESTSUITEFLAGS. When -you do this, the "valgrind" results for test `<N>` are reported in files -named `tests/testsuite.dir/<N>/valgrind.*`. You may find that the -valgrind results are easier to interpret if you put "-q" in -~/.valgrindrc, since that reduces the amount of output. - -Sometimes a few tests may fail on some runs but not others. This is -usually a bug in the testsuite, not a bug in Open vSwitch itself. If -you find that a test fails intermittently, please report it, since the -developers may not have noticed. You can make the testsuite -automatically rerun tests that fail, by adding RECHECK=yes to the -"make" command line, e.g.: - `make check TESTSUITEFLAGS=-j8 RECHECK=yes` - -OFTest ------- - -OFTest is an OpenFlow protocol testing suite. Open vSwitch includes a -Makefile target to run OFTest with Open vSwitch in "dummy mode". In -this mode of testing, no packets travel across physical or virtual -networks. Instead, Unix domain sockets stand in as simulated -networks. This simulation is imperfect, but it is much easier to set -up, does not require extra physical or virtual hardware, and does not -require supervisor privileges. - -To run OFTest with Open vSwitch, first read and follow the -instructions under "Testsuites" above. Second, obtain a copy of -OFTest and install its prerequisites. You need a copy of OFTest that -includes commit 406614846c5 (make ovs-dummy platform work again). -This commit was merged into the OFTest repository on Feb 1, 2013, so -any copy of OFTest more recent than that should work. Testing OVS in -dummy mode does not require root privilege, so you may ignore that -requirement. - -Optionally, add the top-level OFTest directory (containing the "oft" -program) to your $PATH. This slightly simplifies running OFTest later. - -To run OFTest in dummy mode, run the following command from your Open -vSwitch build directory: - `make check-oftest OFT=<oft-binary>` -where `<oft-binary>` is the absolute path to the "oft" program in -OFTest. - -If you added "oft" to your $PATH, you may omit the OFT variable -assignment: - `make check-oftest` -By default, "check-oftest" passes "oft" just enough options to enable -dummy mode. You can use OFTFLAGS to pass additional options. For -example, to run just the basic.Echo test instead of all tests (the -default) and enable verbose logging: - `make check-oftest OFT=<oft-binary> OFTFLAGS='--verbose -T basic.Echo'` - -If you use OFTest that does not include commit 4d1f3eb2c792 (oft: -change default port to 6653), merged into the OFTest repository in -October 2013, then you need to add an option to use the IETF-assigned -controller port: - `make check-oftest OFT=<oft-binary> OFTFLAGS='--port=6653'` - -Please interpret OFTest results cautiously. Open vSwitch can fail a -given test in OFTest for many reasons, including bugs in Open vSwitch, -bugs in OFTest, bugs in the "dummy mode" integration, and differing -interpretations of the OpenFlow standard and other standards. - -Open vSwitch has not been validated against OFTest. Please do report -test failures that you believe to represent bugs in Open vSwitch. -Include the precise versions of Open vSwitch and OFTest in your bug -report, plus any other information needed to reproduce the problem. - -Ryu ---- - -Ryu is an OpenFlow controller written in Python that includes an -extensive OpenFlow testsuite. Open vSwitch includes a Makefile target -to run Ryu in "dummy mode". See "OFTest" above for an explanation of -dummy mode. - -To run Ryu tests with Open vSwitch, first read and follow the -instructions under "Testsuites" above. Second, obtain a copy of Ryu, -install its prerequisites, and build it. You do not need to install -Ryu (some of the tests do not get installed, so it does not help). - -To run Ryu tests, run the following command from your Open vSwitch -build directory: - `make check-ryu RYUDIR=<ryu-source-dir>` -where `<ryu-source-dir>` is the absolute path to the root of the Ryu -source distribution. The default `<ryu-source-dir>` is `$srcdir/../ryu` -where $srcdir is your Open vSwitch source directory, so if this -default is correct then you make simply run `make check-ryu`. - -Open vSwitch has not been validated against Ryu. Please do report -test failures that you believe to represent bugs in Open vSwitch. -Include the precise versions of Open vSwitch and Ryu in your bug -report, plus any other information needed to reproduce the problem. - -Datapath testing ----------------- - -Open vSwitch also includes a suite of tests specifically for datapath -functionality, which can be run against the userspace or kernel datapaths. -If you are developing datapath features, it is recommended that you use -these tests and build upon them to verify your implementation. - -The datapath tests make some assumptions about the environment. They -must be run under root privileges on a Linux system with support for -network namespaces. For ease of use, the OVS source tree includes a -vagrant box to invoke these tests. Running the tests inside Vagrant -provides kernel isolation, protecting your development host from kernel -panics or configuration conflicts in the testsuite. If you wish to run -the tests without using the vagrant box, there are further instructions -below. - -### Vagrant - -*Requires Vagrant (version 1.7.0 or later) and a compatible hypervisor* - -You must bootstrap and configure the sources (steps are in "Building -and Installing Open vSwitch for Linux, FreeBSD or NetBSD" above) before -you run the steps described here. - -A Vagrantfile is provided allowing to compile and provision the source -tree as found locally in a virtual machine using the following command: - - vagrant up - -This will bring up a Fedora 23 VM by default. If you wish to use a -different box or a vagrant backend not supported by the default box, -the `Vagrantfile` can be modified to use a different box as base. - -The VM can be reprovisioned at any time: - - vagrant provision - -OVS out-of-tree compilation environment can be set up with: - - ./boot.sh - vagrant provision --provision-with configure_ovs,build_ovs - -This will set up an out-of-tree build environment inside the VM in -/root/build. The source code can be found in /vagrant. - -To recompile and reinstall OVS in the VM using RPM: - - ./boot.sh - vagrant provision --provision-with configure_ovs,install_rpm - -Two provisioners are included to run system tests with the OVS kernel -module or with a userspace datapath. This tests are different from -the self-tests mentioned above. To run them: - - ./boot.sh - vagrant provision --provision-with configure_ovs,test_ovs_kmod,test_ovs_system_userspace - -The results of the testsuite reside in the VM root user's home directory: - - vagrant ssh - sudo -s - cd /root/build - ls tests/system* - -### Native - -The datapath testsuite as invoked by Vagrant above may also be run -manually on a Linux system with root privileges. These tests may take -several minutes to complete, and cannot be run in parallel. - -#### Userspace datapath - -To invoke the datapath testsuite with the userspace datapath: - - make check-system-userspace - -The results of the testsuite are in tests/system-userspace-traffic.dir/. - -#### Kernel datapath - -Make targets are also provided for testing the Linux kernel module. -Note that these tests operate by inserting modules into the running -Linux kernel, so if the tests are able to trigger a bug in the OVS -kernel module or in the upstream kernel then the kernel may panic. - -To run the testsuite against the kernel module which is currently -installed on your system: - - make check-kernel - -To install the kernel module from the current build directory and -run the testsuite against that kernel module: - - make check-kmod - -The results of the testsuite are in tests/system-kmod-traffic.dir/. - -Continuous Integration with Travis-CI -------------------------------------- - -A .travis.yml file is provided to automatically build Open vSwitch with -various build configurations and run the testsuite using travis-ci. -Builds will be performed with gcc, sparse and clang with the -Werror -compiler flag included, therefore the build will fail if a new warning -has been introduced. - -The CI build is triggered via git push (regardless of the specific -branch) or pull request against any Open vSwitch GitHub repository that -is linked to travis-ci. - -Instructions to setup travis-ci for your GitHub repository: - -1. Go to http://travis-ci.org/ and sign in using your GitHub ID. -2. Go to the "Repositories" tab and enable the ovs repository. You - may disable builds for pushes or pull requests. -3. In order to avoid forks sending build failures to the upstream - mailing list, the notification email recipient is encrypted. If you - want to receive email notification for build failures, replace the - the encrypted string: - 3.1) Install the travis-ci CLI (Requires ruby >=2.0): - gem install travis - 3.2) In your Open vSwitch repository: - travis encrypt mylist@mydomain.org - 3.3) Add/replace the notifications section in .travis.yml and fill - in the secure string as returned by travis encrypt: - - notifications: - email: - recipients: - - secure: "....." - - (You may remove/omit the notifications section to fall back to - default notification behaviour which is to send an email directly - to the author and committer of the failing commit. Note that the - email is only sent if the author/committer have commit rights for - the particular GitHub repository). - -4. Pushing a commit to the repository which breaks the build or the - testsuite will now trigger a email sent to mylist@mydomain.org - -Static Code Analysis --------------------- - -Static Analysis is a method of debugging Software by examining code rather -than actually executing it. This can be done through 'scan-build' commandline -utility which internally uses clang (or) gcc to compile the code and also -invokes a static analyzer to do the code analysis. At the end of the build, the -reports are aggregated in to a common folder and can later be analyzed using -'scan-view'. - -Open vSwitch includes a Makefile target to trigger static code Analysis and -the instructions are below. - -1. ./boot.sh -2. ./configure CC=clang (when using clang compiler) - ./configure CC=gcc CFLAGS="-std=gnu99" (when using GCC) -3. make clang-analyze - -You should invoke scan-view to view analysis results. The last line of output -from 'make clang-analyze' shall list the command (containing results directory) -that you should invoke to view the results on a browser. - -Bug Reporting -============= - -Please report problems to bugs@openvswitch.org. - -[README.md]:README.md -[INSTALL.Debian.md]:INSTALL.Debian.md -[INSTALL.Fedora.md]:INSTALL.Fedora.md -[INSTALL.RHEL.md]:INSTALL.RHEL.md -[INSTALL.XenServer.md]:INSTALL.XenServer.md -[INSTALL.NetBSD.md]:INSTALL.NetBSD.md -[INSTALL.Windows.md]:INSTALL.Windows.md -[INSTALL.DPDK.md]:INSTALL.DPDK.md -[INSTALL.userspace.md]:INSTALL.userspace.md -[FAQ.md]:FAQ.md |