aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2012-08-13tests: Fix MockXenAPI to make the ovs-xapi-sync test case pass again.Ben Pfaff
Commit a8d9dfc788 (xenserver: Improve efficiency of code by using get_all_records_where()) updated the ovs-xapi-sync script and caused a unit test failure. This fixes it. Bug #12848. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-07-27Avoid implementation-defined strerror behaviourEd Maste
POSIX states that the string returned by strerror() may be overwritten by a subsequent call (i.e., because it returns a pointer to a static buffer). Make a copy of one of the two strerror() strings to avoid this. Background: FreeBSD historically returned such a pointer only in the case of an invalid errno. With the addition of NLS strerror was changed to do so for all calls. Prior to this change I had confusing results from the test suite like "... is 22 (Invalid argument) but should be 0 (Invalid argument)". Signed-off-by: Ed Maste <emaste@adaranet.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-29ofp-util: Clean up cookie handling.Justin Pettit
Commit e72e793 (Add ability to restrict flow mods and flow stats requests to cookies.) modified cookie handling. Some of its behavior was unintuitive and there was at least one bug (described below). Commit f66b87d (DESIGN: Document uses for flow cookies.) attempted to document a clean design for cookie handling. This commit updates the DESIGN document and brings the implementation in line with it. In commit e72e793, the code that handled processing OpenFlow flow modification requests set the cookie mask to exact-match. This seems reasonable for adding flows, but is not correct for matching, since OpenFlow 1.0 doesn't support matching based on the cookie. This commit changes to cookie mask to fully wildcarded, which is the correct behavior for modifications and deletions. It doesn't cause any problems for flow additions, since the mask is ignored for that operation. Bug #9742 Reported-by: Luca Giraudo <lgiraudo@nicira.com> Reported-by: Paul Ingram <paul@nicira.com> Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-05-16odp-util: Update ODPUTIL_FLOW_KEY_BYTES for current kernel flow format.Ben Pfaff
Before we submitted the kernel module upstream, we updated the flow format by adding two fields to the description of packets with VLAN headers, but we forgot to update ODPUTIL_FLOW_KEY_BYTES to reflect these changes. The result was that a maximum-length flow did not fit in the given space. This fixes a crash processing IPv6 neighbor discovery packets with VLAN headers received in a tunnel configured with key=flow or in_key=flow. This updates some comments to better describe the implications of ODPUTIL_FLOW_KEY_BYTES (suggested by Justin). This also updates test-odp.c so that it would have caught this problem, and updates odp.at to demonstrate that a full 156 bytes are necessary. (To see that, revert the change to ODPUTIL_FLOW_KEY_BYTES and run the test.) Reported-by: Dan Wendlandt <dan@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-09ofproto-dpif: Introduce "slow path" datapath flows.Ben Pfaff
Most exact-match flows can be handled directly in the datapath, but for various reasons, some cannot: every packet in these flows must be sent separately to userspace. Until now, flows that cannot be handled entirely in the kernel have been allowed to miss each time in the datapath. This is generally OK, but it has a few disadvantages: * It can make troubleshooting at the level where one must look at datapath flows a bit confusing in some cases, because datapath misses due to genuinely new flows are mixed in with datapath misses for known flows that cannot be set up. * It means that the kernel-to-userspace packets for a given input port always go to a single kernel-to-userspace queue, even if we'd like to segregate out some of the packets for known flows. (An upcoming commit has examples.) This commit therefore introduces the concept of a "slow path" flow, one that is installed in the datapath with a single action that sends the flow's packets to userspace. To make troubleshooting easier, the action includes a reason code (displayed by "ovs-dpctl dump-flows") that explains why the flow has been slow-pathed. Bug #7550. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-09ofproto-dpif: Introduce "internal flows" for handling flow table misses.Ben Pfaff
The ofproto-dpif implementation of "facet"s requires a facet to be associated with an OpenFlow rule. Until now, this meant that packets that miss in the OpenFlow table (and thus didn't have OpenFlow rules) couldn't be set up as facets and thus couldn't be installed in the kernel. This commit changes that, by introducing "internal" OpenFlow rules to associate with such packets. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-08ofproto: Add support for OF1.3 port description multipart message.Justin Pettit
OpenFlow 1.0 is limited to displaying 1364 ports in the Features Reply message, and there is no other way to get consolidated port information. OpenFlow 1.3 adds a new port description multipart message (OFPMP_PORT_DESC) that is not limited by size. This commit adds support through the OpenFlow 1.0 stats mechanism, since they have complimentary enum values. Bug #11040 Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-05-07ofp-util: Treat a packet-out in_port of OFPP_CONTROLLER as OFPP_NONE.Ben Pfaff
Some OpenFlow 1.0 controllers incorrectly use OPFP_CONTROLLER as the in_port in packet-out messages, when OFPP_NONE is their intent. Until now, Open vSwitch has rejected such requests with an error message. This commit makes Open vSwitch instead treat OFPP_CONTROLLER the same as OFPP_NONE for compatibility with those controllers. (Also, as of this writing, OpenFlow 1.0.1 appears to be changing the port to use from OFPP_NONE to OFPP_CONTROLLER.) Suggested-by: Rob Sherwood <rob.sherwood@bigswitch.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-07ofproto-dpif: Accept OpenFlow-like flows in "ofproto/trace".Ben Pfaff
Until now it has not been possible to directly trace flows that include register values and other concepts that are not in datapath flows, because "ofproto/trace" requires a flow in the format output by "ovs-dpctl dump-flows", which doesn't know anything about registers. This commit makes it possible to instead specify an OpenFlow-like flow. Feature #10084. Requested-by: Igor Ganichev <iganichev@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-02Global replace of Nicira Networks.Raju Subramanian
Replaced all instances of Nicira Networks(, Inc) to Nicira, Inc. Feature #10593 Signed-off-by: Raju Subramanian <rsubramanian@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-01tests: Fix typo in comment.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-05-01ofp-print: Add some more white space to flow dumps.Ben Pfaff
Before idle_age and hard_age were added, in the absence of timeouts there was a space between the statistics for a flow and the start of the flow match. This restores that space. Requested-by: Paul Ingram <paul@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-26nicira-ext: Support masking of nd_target fieldAnsis Atteka
This commit adds support to specify a mask in CIDR format for the nd_target field. Signed-off-by: Ansis Atteka <aatteka@nicira.com>
2012-04-26json: Correct position tracking in JSON parser implementations.Ben Pfaff
When json_lex_input() returns false, the parser does not consume the byte passed in. That byte will get processed again in the next iteration of the json_parser_feed() loop. Therefore, until now, this code has double-counted bytes that cause a false return from json_lex_input(). This fixes the problem. Every input byte is now counted only once. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-23tests: Generalize 'sed' calls in MAC learning test to more than one digit.Ben Pfaff
With "check-valgrind" the test can take more than 10 seconds to run, so replacing only a single trailing digit with ? ends up with 1? which causes the test to fail. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-23tests: Avoid daemon race between pidfile creation and parent notification.Ben Pfaff
This was causing "check-valgrind" to sometimes fail in this test. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-18dpif: Include TCP flags in "ovs-dpctl dump-flows" output.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-17socket-util: Remove DSCP_INVALID.Ethan Jackson
The DSCP_INVALID flag allowed callers to prevent socket-util from modify the DSCP bits of newly created sockets. However, the two really important callers (implementations of the controller and manager tables) never used it. Furthermore, the other callers would be fine always setting the DSCP bits to zero. This patch removes the DSCP_INVALID option in an effort to simplify the code. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-04-13learn: Make it possible to parse "load" actions wider than 64 bits.Ben Pfaff
The implementation of the "learn" action now properly implements specifications such as 0x20010db885a308d313198a2e03707348->NXM_NX_IPV6_DST but the parser used in ovs-ofctl and elsewhere could not generate such specifications. This commit adds that support. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-13learn: Fix bugs when learn actions use subfields wider than 64 bits.Ben Pfaff
Bug #10576. Reported-by: James Schmidt <jschmidt@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-13util: New function bitwise_is_all_zeros().Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-13util: New function bitwise_one().Ben Pfaff
It's the obvious counterpart to bitwise_zero(). Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-12ovsdb-idl: Improve ovsdb_idl_txn_increment() interface.Ben Pfaff
The previous interface was just bizarre. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-12ovsdb-idl: Simplify transaction retry.Ben Pfaff
Originally the IDL transaction state machine had a return value TXN_TRY_AGAIN to signal the client to wait for a change in the database and then retry its transaction. However, this logic was incomplete, because it was possible for the database to change before the reply to the transaction RPC was received, in which case the client would wait for a further change. Commit 4fdfe5ccf84c (ovsdb-idl: Prevent occasional hang when multiple database clients race.) fixed the problem by breaking TXN_TRY_AGAIN into two status codes, TXN_AGAIN_WAIT that meant to wait for a further change and TXN_AGAIN_NOW that meant that a change had already occurred so try again immediately. This is correct enough, but it is more complicated than necessary. It is simpler and just as correct to use a single "try again" status that requires the client to wait for a change relative to the database contents *before* the transaction was committed. This commit makes that change. It also changes ovsdb_idl_run()'s return type from bool to void because its return type is hardly useful anymore. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-04-02check-structs: Disallow uint<N>_t because ovs_be<N> should always be used.Ben Pfaff
The header files that check-structs checks should only contain big-endian data, never native-endian data, so disallow uint<N>_t entirely. (We had a couple of mistakes in this area until recently.) uint8_t is an obvious exception. Reported-by: Simon Horman <horms@verge.net.au> Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-28tests: Gracefully shut down ovsdb-server, to avoid valgrind leak warnings.Ben Pfaff
When ovsdb-server exits gracefully it frees all the memory that it owns, which keeps valgrind from warning about "possibly lost" blocks. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-28tests: Suppress valgrind error reports from glibc timer_create() function.Ben Pfaff
valgrind reports a memory leak and a parameter error in glibc's timer_create() in almost every program execution. I don't know a way to avoid them. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-27Add error codes for Open Flow v1.2Simon Horman
* Where Open Flow 1.2 breaks apart error codes defined in previous versions, provide all new definitions to previous versions and map the numeric error code to the first first definition supplied in ofp-errors.h. The case handled so far is: OFPERR_OFPBIC_BAD_EXP_TYPE -> { OFPERR_OFPBIC_BAD_EXPERIMENTER, OFPERR_OFPBIC_BAD_EXP_TYPE } * Where Open Flow 1.2 adds error codes that were previously defined as Nicira extension errors define the later in terms of the new codes. Signed-off-by: Simon Horman <horms@verge.net.au> [blp@nicira.com added better error checking in extract-ofp-errors, added unit tests, miscellaneous cleanup] Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Simon Horman <horms@verge.net.au>
2012-03-23Allow configuring DSCP on controller and manager connections.Mehak Mahajan
The changes allow the user to specify a separate dscp value for the controller connection and the manager connection. The value will take effect on resetting the connections. If no value is specified a default value of 192 is chosen for each of the connections. Feature #10074 Requested-by: Rajiv Ramanathan <rramanathan@nicira.com> Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
2012-03-20ovs-vsctl: Allow "fake bridges" to be created for VLAN 0.Ben Pfaff
A fake bridge for VLAN 0 is useful, because it provides a way to create access ports for VLAN 0. There is no good reason to prevent it. NIC-464. Reported-by: Rob Hoes <Rob.Hoes@citrix.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-13Use `pwd` in place of $PWD, treewide.Ben Pfaff
The Autoconf manual says: Posix 1003.1-2001 requires that `cd' and `pwd' must update the `PWD' environment variable to point to the logical name of the current directory, but traditional shells do not support this. This can cause confusion if one shell instance maintains `PWD' but a subsidiary and different shell does not know about `PWD' and executes `cd'; in this case `PWD' points to the wrong directory. Use ``pwd`' rather than `$PWD'. so this commit replaces all uses of $PWD by `pwd`. Reported-by: Justin Pettit <jpettit@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-12tests: Skip "strings at least 2 characters long" test for narrow Python.Ben Pfaff
Narrow Python can't handle Unicode characters outside the BMP, so skip the test. Reported-by: Michael Shigorin <mike@osdn.org.ua> Tested-by: Michael Shigorin <mike@osdn.org.ua> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-12tests: Fix "make check" as non-root.Ben Pfaff
Without this change, these tests try to write to /var/run, which fails unless "make check" is run as root. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-09nicira-ext: Increase the number of NXM registers to 8.Ethan Jackson
Requested-by: Amar Padmanabhan <amar@nicira.com> Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-09idl: Convert python daemons to utilize SchemaHelper.Ethan Jackson
The recently added SchemaHelper class significantly simplifies IDL instantiation in Python. This commit converts all users of the old method to the new method, and removes support for the old method. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-07tests: Suppress "role reply" that can appear in async message test.Ben Pfaff
Another race condition in this test, *sigh*. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07python: Make build number format consistent with C.Ethan Jackson
The C code displays the build number as the empty string when 0, and as +build<num> otherwise. This commit updates version.py to be consistent and tests that it is in the unit tests. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-07ovs-ofctl: Make "barrier" output reproducible for testing.Ben Pfaff
The "ofproto - asynchronous message control" test had a race in which the "send: OFPT_BARRIER_REQUEST" message could get printed in different places because there was nothing to ensure that messages from the switch were printed before messages sent to the switch, even though the actual ordering of the messages was predictable. This fixes the problem by not printing a message at all when the barrier request is sent. Bug #10049. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07tests: Convert *_SCHEMA macros to shell functions.Ben Pfaff
This reduces tests/testsuite by about 70 kB, by collapsing a number of macro expansions into just one copy in a shell function. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07tests: Convert OVS_WAIT_* macros to shell functions.Ben Pfaff
This reduces tests/testsuite by about 35 kB, by collapsing a number of macro expansions into just one copy in a shell function. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07tests: Convert interface-reconfigure macros to shell functions.Ben Pfaff
This reduces tests/testsuite by about 50 kB, by collapsing a number of macro expansions into just one copy in a shell function. Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07Abstract everything that uses ofp_phy_port, add OF1.1 support.Ben Pfaff
Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07ofp-print: Print OpenFlow version number of message, unless it's 1.0.Ben Pfaff
The version number is an important part of the OpenFlow message's meaning, so include it. Version 1.0 is grandfathered in so existing output parsers don't have to change. Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07Begin breaking openflow-1.0.h into common and version-specific definitions.Ben Pfaff
The intention is that, as each OpenFlow 1.1 and 1.2 feature is added to Open vSwitch, the corresponding protocol definitions will be broken up this way: - Definitions that are the same in OF1.0 and OF1.1 will retain the "OFP" or "ofp" prefix and move to openflow-common.h. - Definitions that are specific to OF1.0 will be renamed with an "OFP10" or "ofp10" prefix and stay in openflow-1.0.h. - Definitions that are specific to OF1.1 or to OF1.1 and OF1.2 will be renamed with an "OFP11" or "ofp11" prefix and move to openflow-1.1.h. - Definitions that are specific to OF1.2 will be renamed with an "OFP12" or "ofp12" prefix and move to openflow-1.2.h. This commit starts this process with some basic OpenFlow definitions. Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07Introduce ofputil_protocol, to abstract the protocol in use on a connection.Ben Pfaff
Open vSwitch already handles a few different protocol variations, but it does so in a nonuniform manner: - OpenFlow 1.0 and NXM flow formats are distinguished using the NXFF_* constant values from nicira-ext.h. - The "flow_mod_table_id" feature setting is maintained in ofproto as part of an OpenFlow connection's (ofconn's) state. There's no way to easily communicate this state among components. It's not much of a problem yet, but as more protocol support is added it seems better to have an abstract, uniform way to represent protocol versions and variants. This commit implements that by introducing a new type "enum ofputil_protocol". Each ofputil_protocol value represents a variant of a protocol version. Each value is a separate bit, so a single enum can also represent a set of protocols, which is often useful as well. Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-03-07unixctl: Timeout unit tests instead of hanging.Ethan Jackson
We've seen some unixctl tests hang indefinitely which makes them difficult to debug. ovs-appctl and appctl.py calls to timeout instead. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-06unixctl: Re-enable unit tests.Ethan Jackson
The transient failure in the unixctl unit tests likely still exists, but we've added additional instrumentation to our build tools to help us debug it. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-06xenserver: Add vm-id to the external_ids.Gurucharan Shetty
The vm-id external id in the interface table will uniquely identify a VM that is connected to a bridge through that interface. In xenserver, this will have the same value as the external id - xs-vm-uuid and can be overridden by setting the nicira-vm-id key in the other_config field of VM record of XAPI. Bug #10020. Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
2012-03-02unixctl: Skip Python unixctl tests.Ethan Jackson
The Python unixctl tests introduced a transient build failure that can't be debugged until more information is collected. Skipping these tests for now until it's possible to debug them. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-03-02python: Port unixctl to Python.Ethan Jackson
Many of the currently implemented Python daemons, and likely many daemons to be implemented in the future, could benefit from unixctl support even if only to implement "exit" and "version" commands. This patch implements unixctl in Python. Signed-off-by: Ethan Jackson <ethan@nicira.com>