NIC Driver Test Suite
Announcements
See Driver News for announcements about NIC drivers.
Related Information
- MAXQ NIC test is a test suite based on netperf
- WIFI test checklist is a self-test guide for WiFi driver development
NICDRV Introduction
This project is for the NIC test suites development. You can download the NIC driver test suite and learn about nic driver testing from this link. Everyone's contribution and feedback is important to this project.
NICDRV is a testsuite developed by us for NIC drivers testing. It is used to qualify the NIC's functionalities working on Solaris and supports both SPARC and X86 platforms. We analyzed the functionalities of all kinds of NICs and refined the testing criteria.
NICDRV contains necessary network applications to verify the working of NIC drivers, including network data transmission at IPv4/IPv6, transmission at promiscuous mode, transmission based on all kinds of packet length, data corruption verifying, multicast transmission, ndd-parameters setting, working-mode testing, Statistics, vlan, link aggregation, loading/unloading drivers and etc.NICDRV also include stress testing
NICDRV is implemented based on our existing Solaris Test Framework (STF), so it can be configured and executed automatically instead of running every test case manually. Test report will also be produced automatically after the test ends.
NICDRV uses code coverage analysis to evaluate test effectiveness. While the test is running, all functions of the under test NIC driver are called can be recorded by a Dtrace script. At the end of the test, the code coverage rate will be shown. Testers can know which functions of the NIC driver routine are passed and which functions aren't called. This feature of the NICDRV framework is also used in developing new test cases for NIC.
We designed NICDRV as an open test platform. The test criteria can be adjusted based on the different models of NIC. If it is a high-end NIC, like 10Gb/s NIC, used on transmitting huge network data, testers can select a set of parameters with high level to test. If the NIC is just for low-end usage, a little data being transmitted (like 10Mb/s NIC), testers can adjust the parameters to a lower level. A new set of parameters can be added into NICDRV platform for the new model of NIC as the new test criteria. And also, new test cases can be added into NICDRV easily.
What Is the Meaning of Each Test Case?
| Case Name | Type | Runtime (full) | Description | Possible Causes for Failure |
|---|---|---|---|---|
| test00 | functional | 2 hours | Data transmitting/receiving Ftp ipv4/ipv6 | A wrong root password in config.vars file Big size files cannot be transmitted by the tested driver Disk free space (/var > 2G) IPv6 doesn't work Hardware chipset error |
| test01 | functional | 3 hours | Receiving/transmitting under promiscuous mode Netperf+snoop on/off | Driver cannot support the promiscuous mode Driver cannot work stably with repeatedly promiscuous mode on/off Sessions/connection can not be established Timeout:performance issue to make the driver cost too much time for transmission. Timeout: system or interface hang. |
| test02 | functional | 1 hour | Packets lost and zero length data pending ping all packet size | Failed to transfer one or several packets with particular length Driver works unstably Timeout: too slow to ping every packet |
| test03 | functional | 2 hours | Data corruption nfs corrupt | Found data corruption An NFS environment mistake (e.g. S10 is different from Snv) |
| test04 | functional | 1 hour | Multicast IPmulticast | Failed to join multiple multicast groups |
| test05 | functional | 5 minutes | ndd interface ndd read/write command | Some parameters of driver cannot be set by ndd There are some new private parameters that the current NICDRV cannot support in the under test driver |
| test06 | functional | 3 hours | Receiving/transmitting on different duplex/speed mode netperf on 10/100/1000Mbps duplex/speed mode | Driver cannot work stably on 10/100/1000Mbps duplex/speed mode Failed to transfer UDP traffic Check the failures of MAXQ |
| test07 | functional | 20 minutes | Statistic kstat and netstat counter check | Found statistics errors |
| test08 | functional | 2 hours | VLAN VLAN plumb/FTP/nfs corrupt/MAXQ | Failed to create VLAN interface Failed to access by rsh Check the switch configuration if the under test interfaces are connected by a switch. The failures of test00 test01 test02 and test03 could cause test08 to fail Failed to create the maximum number of VLAN interface. |
| test09 | functional | 1 hour | Trunking nfs corrupt on trunking interface | Failed to create link aggregation Failed to cleanup after test00-test08 The driver cannot support link aggregation, The driver based on GLDv3 is supposed to support link aggregation. |
| test10 | functional | 1 hour | load,unload driver Test driver load unload functionality | Driver cannot be attach/detach or plumb/unplumb Driver cost too many memories for one interface |
| test11 | functional | 1 hour | DR (dynamic reconfiguration) test Test NIC driver dynamic reconfiguration support | UNSUPPORTED means the under test system cannot support the DR feature, so the test doesn't run. It's not a failure. The main platforms that support DR: (TBD) |
| test12 | functional | 1 hour | VNIC | The VNIC works unstably if the failure is only in MAXQ Failed to create multiple VNIC interfaces |
| test13 | functional | 1.5 hours | dladm (Brussels and Jumbo) | dladm operations on the tested driver failed Changing parameters failed Cannot support jumbo frame feature Driver works unstably in half-duplex mode. |
| test14 | functional | 1.5 hours | IPMI (Intelligent Platform Management Interface) | IPMI configuration incorrectly Test machine not support IPMI |
| netstress | stress | 15 hours | netperf (TCP/UDP) | Driver cannot work stably for a long time, like a half day. The under test system cannot support a certain large number of sessions. System or interface hang could cause the test case timeout. |
| loadunload | stress | 6 hours | load/unload with netperf | Found memory leaks after repeatedly loading/unloading driver System or interface hang could cause the test case timeout. |
| total | 41 hours |
Quick Start
Install wrapper for nicdrv: auto_nicdrv_1109.tar.bz2
Source Code, Binary and Package
Community Group device_drivers: Projects > NIC Driver Test Suite
The NICDRV i386 binary is: SUNWstc-nicdrv-20090924.i386.tar.bz2
The NICDRV SPARC binary is: SUNWstc-nicdrv-20090924.sparc.tar.bz2
The test suite source is: source/xref/test/ontest-stc2/src/suites/net/nicdrv
The test suite source is: stcnv-nicdrv-src-20090629.tar.bz2
How to Build and Use
NICDRV Baseline Report
| nicdrv Version | Solaris Build | x86 | SPARC |
|---|---|---|---|
| 2.0 | Opensolaris 0906 | Function: e1000g test report Stress: e1000g test report | |
| 2.0 | Solaris nv114 | Function: e1000g test report Stress: e1000g test report | |
| 2.0 | Solaris nv116 | Function: bge test report | Function: bge test report Stress: bge test report |
Bugs
View the nicdrv bug list.
Report a bug or request a feature for NICDRV.
How to Participate
Join the discussion at NICDRV-interest at sun dot com. Hear from the experts, review archives, and post your questions.