Anuket Project
vHost devices executed tests
Test Environment details:
- Bare Metal, Ubuntu 16.04.1 LTS
Repo/branch used:
- collectd/master branch (git clone git://github.com/collectd/collectd.git).
DPDK stats: DPDK vhost interface to retrieve stats.
Tests precondition:
- Latest DPDK installed (17.02, also try with DPDK 16.04).
DPDK configuration:
- DPDK installation details.
Configuration details -
Collectd configuration:
LoadPlugin dpdkstat
<Plugin dpdkstat>
<EAL>
Coremask "0x2"
MemoryChannels "4"
ProcessType "secondary"
FilePrefix "rte"
</EAL>
# SharedMemObj "dpdk_collectd_stats_0"
EnabledPortMask 0xffff
# PortName "interface1"
# PortName "interface2"
</Plugin>
Table#1: DPDK stats vhost interface tests.
# | Test summary | Steps | Expected | Test Result | Comments |
---|---|---|---|---|---|
1 | Verify vhost DPDK stats upon collectd restart. |
|
| ||
2 | Verify vhost DPDK stats with different time interval. |
|
| ||
3 | Verify vhost DPDK stats with default configuration. |
|
| ||
4 | Verify vhost DPDK stats counters number for available driver. |
|
| MT: Please note the number of stats supported for a vhost port - will be only a subset of that of a physical port. SA: Just will dump counters for driver tested. | |
5 | Verify vhost DPDK Xstats counters number for available driver. |
|
| ||
6 | Verify vhost DPDK stats for Rx packets/bytes counters. |
|
| ||
7 | Verify vhost DPDK stats for packets with different size. |
|
| ||
8 | Verify vhost DPDK stats for unicast/multicast/broadcast packets. |
|
| ||
9 | Verify vhost DPDK Xstats not available for DPDK 16.04. |
|
|
DPDK events: DPDK vhost interface to retrieve link status.
Collectd configuration:
<Plugin "dpdkevents">
<EAL>
Coremask "0xf"
MemoryChannels "4"
ProcessType "secondary"
FilePrefix "rte"
</EAL>
<Event "link_status">
SendEventsOnUpdate true
EnabledPortMask 0xffff
SendNotification false
</Event>
</Plugin>
Table#2: DPDK events vhost interface tests.
# | Test summary | Steps | Expected | Test Result | Comments |
---|---|---|---|---|---|
1 | Verify vhost DPDK metrics upon SendEventsOnUpdate set to true/false. |
| 3. Verify link status is dispatched as statistic accordingly. 5. Verify link status is not dispatched as statistic. | ||
2 | Verify vhost DPDK metrics are not collected for ports disabled by EnabledPortMask. |
| 3. Verify that link status is not dispatched for port this port. 5. Verify link status is dispatched for this port. | ||
3 | Verify vhost DPDK metrics not collected for ports disabled by EnabledPortMask and disabled by SendEventsOnUpdate. |
| 3. Verify link status is not dispatched as statistic accordingly. | ||
4 | Verify link status is collected according to defined PortName field. |
| 3. Verify link status is dispatched for port name 'test_port'. | ||
5 | Verify vhost DPDK link status correct notification is sent when SendNotification and SendEventsOnUpdate are true. |
| 3. Verify link status is dispatched only when link state is changed. Verify notification about link status changed is present in syslog. | ||
6 | Verify vhost DPDK link status correct notification is sent when SendNotification is true and SendEventsOnUpdate is false. |
| 3. Verify link status is dispatched every read interval. Verify notification about link status changed is present in syslog. | ||
7 | Verify vhost DPDK link status is collected when default dpdkevents configuration is applied. |
| 2. Verify link status is dispatched as statistic every read interval. | ||
8 | Verify vhost DPDK events plugin attemps to reconnect to primary process every read interval. |
| 3. Check syslog for attempts to reconnect to primary process every read interval. | ||
9 | Verify vhost DPDK events plugin dispatch values every 5ms. |
| 3. Verify values are dispatched every 5 ms. | ||
10 | Verify vhost DPDK events plugin stops collecting link status data after primary process is stopped and resumes collecting when primary process is started again. |
| 3. Wait read interval and check that no data is dispatched. 4. Wait read interval and check that data is dispatched. |
OVS stats: native vhost interface (tap device) and DPDK vhost interface to retrieve statistic.
OVS stats: DPDK vhost interface to retrieve statistic.
Tests precondition:
- OVS (with DPDK) is started with OVS bridge/port added to configuration.
OVS/DPDK vhost tap configuration:
- OVS with DPDK is build/configured.
Collectd configuration:
- <Plugin ovs_stats>
- Port "6640"
- Address "127.0.0.1"
- Socket "/var/run/openvswitch/db.sock"
- Bridges "br0"
</Plugin>
Table#4: OVS stats DPDK vhost interface tests.
# | Test summary | Steps | Expected | Test Result | Comments |
---|---|---|---|---|---|
1 | Verify vhost OVS stats upon collectd restart. |
|
| ||
2 | Verify vhost OVS stats with different time interval. |
|
| ||
3 | Verify vhost OVS stats with default configuration. |
|
| ||
4 | Verify vhost OVS stats for Rx packets/bytes counters. |
|
| ||
5 | Verify vhost OVS stats for packets with different size. |
|
| ||
6 | Verify vhost OVS stats for unicast/multicast/broadcast packets. |
|
| ||
7 | Verify vhost OVS stats upon OVS stop/start. |
| 2. OVS stats updated, is same as in collectd plugin. 4. OVS stats not updated by collectd plugin. 6. OVS stats updated, is same as in collectd plugin. | ||
8 | Verify vhost OVS stats for new added OVS bridge, port. |
|
3. OVS stats updated for new bridge/port, is same as in collectd plugin. ls /ovs_stats-br0.test_port1 | ||
9 | Verify vhost OVS stats for removed port from bridge. |
| 3. OVS stats updated, is same as in collectd plugin. 5. OVS stats not updated by collectd plugin. | ||
10 | Verify vhost OVS stats for removed bridge. |
| 3. OVS stats updated, is same as in collectd plugin. 5. OVS stats not updated by collectd plugin. | ||
11 | Verify vhost OVS stats updated only for configured bridges. |
| 3. OVS stats not updated by collectd plugin. 5. OVS stats updated, is same as in collectd plugin. | ||
12 | Verify vhost OVS stats updated over socket created by address/port pair. |
| 3. OVS stats updated, is same as in collectd plugin. | ||
13 | Verify vhost OVS stats updated upon overflow counters' values. |
| 3. Values are shown in range 0 - 2^63-1 for every counter. No errors or exceptions raised. |
OVS stats: native vhost interface.
Collectd configuration:
- <Plugin ovs_stats>
- Port "6640"
- Address "127.0.0.1"
- Socket "/var/run/openvswitch/db.sock"
- Bridges "br0"
</Plugin>
Table#5: OVS stats native (tap) vhost interface tests.
Note: See table #4 tests.
OVS events: native vhost interface (tap device) and DPDK vhost interface to retrieve link status.
Tests precondition:
- OVS (with DPDK) is started with OVS bridge/port added to configuration.
OVS/DPDK vhost tap configuration:
- OVS with DPDK is build/configured.
OVS events: DPDK vhost interface to retrieve statistic.
Collectd configuration:
<LoadPlugin python>
Globals true
</LoadPlugin>
<Plugin python>
ModulePath "path_to_plugin_file/"
LogTraces true
Interactive false
Import "collectd-python_plugin"
</Plugin>
<Plugin ovs_events>
Port 6640
Address "127.0.0.1"
Socket "/var/run/openvswitch/db.sock"
Interfaces "br0"
SendNotification true
DispatchValues true
</Plugin>
Table#6: OVS events DPDK vhost interface tests.
# | Test summary | Steps | Expected | Test Result | Comments |
---|---|---|---|---|---|
1 | Verify vhost OVS events upon collectd restart. |
|
| ||
2 | Verify vhost OVS events with default configuration. |
|
| ||
3 | Verify vhost OVS events upon OVS stop/start. |
|
| ||
4 | Verify vhost OVS events with different time interval when SendNotification set to true. |
| 3. OVS link status is updated every second. 4. OVS link status is updated every new defined time interval. | ||
5 | Verify vhost OVS events with different time interval when SendNotification set to false. |
| 3. OVS events updated every second as statistic 4. OVS events updated every new defined time interval. | ||
6 | Verify vhost OVS events for new added OVS bridge, port. |
| 3. OVS link status is dispatched for new bridge/port. | ||
7 | Verify vhost OVS events for removed port from bridge. |
| 3. OVS link status is dispatched. 5. OVS link status is not dispatched. | ||
8 | Verify vhost OVS events for removed bridge. |
| 3. OVS link status is dispatched. 5. OVS link status is not dispatched. | ||
9 | Verify vhost OVS events are not sent when SendNotification set to false. |
| 3. OVS link status is not dispatched. OVS stats/values are dispatched? | MT: notification is not dispatched - but I think a stat/value is SA: Ok, to be verified. | |
10 | Verify vhost OVS events are sent when link to OVS database is lost. |
| 2, 4. OVS link status notification message about loss connection to OVS DB recorded to syslog. | ||
11 | Verify vhost OVS events are sent with defined be syslog plugin severity: OKAY, WARNING, ERROR. |
| 3. OVS link status notification message recorded to syslog. 4. OVS link status notification message recorded to syslog with Warning severity. 5. OVS link status notification message recorded to syslog with Failure (ERROR) severity. | ||
12 | Verify vhost OVS events metadata sent by collectd python plugin. |
| 3. Metadata is present in notifications dispatched by collectd python plugin. | ||
13 | Verify vhost OVS events monitored against interfaces set in collectd.conf. |
| 2. OVS link status is not dispatched. 4. OVS link status is dispatched. | ||
14 | Verify vhost OVS events monitored against not defined interface section in collectd.conf. |
| 2. OVS link status is dispatched. | ||
15 | Verify vhost OVS events upon DispatchValues set to false. |
| 2. OVS link status is not dispatched. 4. OVS link status is dispatched. | ||
16 | Verify vhost OVS events handle data about link status every 0.005 second. |
| 2. OVS link status is updated every 0.005 seconds. |
OVS events: native vhost interface to retrieve statistic.
Collectd configuration:
<LoadPlugin python>
Globals true
</LoadPlugin>
<Plugin python>
ModulePath "path_to_plugin_file/"
LogTraces true
Interactive false
Import "collectd-python_plugin"
</Plugin>
<Plugin ovs_events>
Port 6640
Address "127.0.0.1"
Socket "/var/run/openvswitch/db.sock"
Interfaces "br0"
SendNotification true
DispatchValues true
</Plugin>
Table#7: OVS events DPDK vhost interface tests.
Note: See table #6 tests.