mirror of
https://github.com/ipxe/ipxe
synced 2026-02-04 15:09:29 +03:00
112 lines
2.8 KiB
C
112 lines
2.8 KiB
C
#ifndef _NETDEV_TEST_H
|
|
#define _NETDEV_TEST_H
|
|
|
|
/** @file
|
|
*
|
|
* Network device tests
|
|
*
|
|
*/
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|
|
|
#include <ipxe/device.h>
|
|
#include <ipxe/netdevice.h>
|
|
|
|
/** A test network device setting */
|
|
struct testnet_setting {
|
|
/** Setting name (relative to network device's settings) */
|
|
const char *name;
|
|
/** Value */
|
|
const char *value;
|
|
};
|
|
|
|
/** A test network device */
|
|
struct testnet {
|
|
/** Network device */
|
|
struct net_device *netdev;
|
|
/** Dummy physical device */
|
|
struct device dev;
|
|
/** Initial settings */
|
|
struct testnet_setting *testset;
|
|
/** Number of initial settings */
|
|
unsigned int count;
|
|
};
|
|
|
|
/**
|
|
* Declare a test network device
|
|
*
|
|
* @v NAME Network device name
|
|
* @v ... Initial network device settings
|
|
*/
|
|
#define TESTNET( NAME, ... ) \
|
|
static struct testnet_setting NAME ## _setting[] = { \
|
|
__VA_ARGS__ \
|
|
}; \
|
|
static struct testnet NAME = { \
|
|
.dev = { \
|
|
.name = #NAME, \
|
|
.driver_name = "testnet", \
|
|
.siblings = \
|
|
LIST_HEAD_INIT ( NAME.dev.siblings ), \
|
|
.children = \
|
|
LIST_HEAD_INIT ( NAME.dev.children ), \
|
|
}, \
|
|
.testset = NAME ## _setting, \
|
|
.count = ( sizeof ( NAME ## _setting ) / \
|
|
sizeof ( NAME ## _setting[0] ) ), \
|
|
};
|
|
|
|
/**
|
|
* Report a network device creation test result
|
|
*
|
|
* @v testnet Test network device
|
|
*/
|
|
#define testnet_ok( testnet ) testnet_okx ( testnet, __FILE__, __LINE__ )
|
|
extern void testnet_okx ( struct testnet *testnet, const char *file,
|
|
unsigned int line );
|
|
|
|
/**
|
|
* Report a network device opening test result
|
|
*
|
|
* @v testnet Test network device
|
|
*/
|
|
#define testnet_open_ok( testnet ) \
|
|
testnet_open_okx ( testnet, __FILE__, __LINE__ )
|
|
extern void testnet_open_okx ( struct testnet *testnet, const char *file,
|
|
unsigned int line );
|
|
|
|
/**
|
|
* Report a network device setting test result
|
|
*
|
|
* @v testnet Test network device
|
|
* @v name Setting name (relative to network device's settings)
|
|
* @v value Setting value
|
|
*/
|
|
#define testnet_set_ok( testnet, name, value ) \
|
|
testnet_set_okx ( testnet, name, value, __FILE__, __LINE__ )
|
|
extern void testnet_set_okx ( struct testnet *testnet, const char *name,
|
|
const char *value, const char *file,
|
|
unsigned int line );
|
|
|
|
/**
|
|
* Report a network device closing test result
|
|
*
|
|
* @v testnet Test network device
|
|
*/
|
|
#define testnet_close_ok( testnet ) \
|
|
testnet_close_okx ( testnet, __FILE__, __LINE__ )
|
|
extern void testnet_close_okx ( struct testnet *testnet, const char *file,
|
|
unsigned int line );
|
|
|
|
/**
|
|
* Report a network device removal test result
|
|
*
|
|
* @v testnet Test network device
|
|
*/
|
|
#define testnet_remove_ok( testnet ) \
|
|
testnet_remove_okx ( testnet, __FILE__, __LINE__ )
|
|
extern void testnet_remove_okx ( struct testnet *testnet, const char *file,
|
|
unsigned int line );
|
|
|
|
#endif /* _NETDEV_TEST_H */
|