Skip to content
Snippets Groups Projects
Commit 60c18cf0 authored by Martine Lenders's avatar Martine Lenders
Browse files

tests: add tests for IEEE 802.15.4 to gnrc_netif2 tests

parent 1d8dcae6
No related branches found
No related tags found
No related merge requests found
...@@ -19,6 +19,7 @@ USEMODULE += gnrc_sixlowpan ...@@ -19,6 +19,7 @@ USEMODULE += gnrc_sixlowpan
USEMODULE += gnrc_sixlowpan_iphc USEMODULE += gnrc_sixlowpan_iphc
USEMODULE += gnrc_ipv6 USEMODULE += gnrc_ipv6
USEMODULE += netdev_eth USEMODULE += netdev_eth
USEMODULE += netdev_ieee802154
USEMODULE += netdev_test USEMODULE += netdev_test
USEMODULE += od USEMODULE += od
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
static netdev_test_t _devs[GNRC_NETIF_NUMOF]; static netdev_test_t _devs[GNRC_NETIF_NUMOF];
netdev_t *ethernet_dev = (netdev_t *)&_devs[0]; netdev_t *ethernet_dev = (netdev_t *)&_devs[0];
netdev_t *ieee802154_dev = (netdev_t *)&_devs[1];
netdev_t *devs[DEFAULT_DEVS_NUMOF]; netdev_t *devs[DEFAULT_DEVS_NUMOF];
#define MSG_QUEUE_SIZE (8) #define MSG_QUEUE_SIZE (8)
...@@ -47,6 +48,9 @@ static int _dump_send_packet(netdev_t *netdev, const struct iovec *vector, ...@@ -47,6 +48,9 @@ static int _dump_send_packet(netdev_t *netdev, const struct iovec *vector,
if (netdev == ethernet_dev) { if (netdev == ethernet_dev) {
printf("Ethernet "); printf("Ethernet ");
} }
else if (netdev == ieee802154_dev) {
printf("IEEE 802.15.4 ");
}
else { else {
printf("unknown "); printf("unknown ");
} }
...@@ -114,11 +118,15 @@ static int _get_netdev_device_type(netdev_t *netdev, void *value, size_t max_len ...@@ -114,11 +118,15 @@ static int _get_netdev_device_type(netdev_t *netdev, void *value, size_t max_len
if (dev->state == 0x0) { if (dev->state == 0x0) {
*((uint16_t *)value) = NETDEV_TYPE_ETHERNET; *((uint16_t *)value) = NETDEV_TYPE_ETHERNET;
} }
else if (dev->state == (void *)0x1) {
*((uint16_t *)value) = NETDEV_TYPE_IEEE802154;
}
else { else {
*((uint16_t *)value) = NETDEV_TYPE_UNKNOWN; *((uint16_t *)value) = NETDEV_TYPE_UNKNOWN;
} }
return sizeof(uint16_t); return sizeof(uint16_t);
} }
static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max_len) static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max_len)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = (netdev_test_t *)netdev;
...@@ -126,6 +134,9 @@ static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max ...@@ -126,6 +134,9 @@ static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max
if (dev->state == 0x0) { if (dev->state == 0x0) {
*((uint16_t *)value) = ETHERNET_DATA_LEN; *((uint16_t *)value) = ETHERNET_DATA_LEN;
} }
else if (dev->state == ((void *)0x1)) {
*((uint16_t *)value) = TEST_IEEE802154_MAX_FRAG_SIZE;
}
else { else {
*((uint16_t *)value) = IPV6_MIN_MTU; *((uint16_t *)value) = IPV6_MIN_MTU;
} }
...@@ -144,6 +155,14 @@ void _tests_init(void) ...@@ -144,6 +155,14 @@ void _tests_init(void)
_get_netdev_device_type); _get_netdev_device_type);
netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_MAX_PACKET_SIZE, netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_MAX_PACKET_SIZE,
_get_netdev_max_packet_size); _get_netdev_max_packet_size);
netdev_test_setup((netdev_test_t *)ieee802154_dev, (void *)1);
netdev_test_set_send_cb((netdev_test_t *)ieee802154_dev, _dump_send_packet);
netdev_test_set_recv_cb((netdev_test_t *)ieee802154_dev, _netdev_recv);
netdev_test_set_isr_cb((netdev_test_t *)ieee802154_dev, _netdev_isr);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_DEVICE_TYPE,
_get_netdev_device_type);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev,
NETOPT_MAX_PACKET_SIZE, _get_netdev_max_packet_size);
for (intptr_t i = SPECIAL_DEVS; i < GNRC_NETIF_NUMOF; i++) { for (intptr_t i = SPECIAL_DEVS; i < GNRC_NETIF_NUMOF; i++) {
devs[i - SPECIAL_DEVS] = (netdev_t *)&_devs[i]; devs[i - SPECIAL_DEVS] = (netdev_t *)&_devs[i];
netdev_test_setup(&_devs[i], (void *)i); netdev_test_setup(&_devs[i], (void *)i);
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
extern "C" { extern "C" {
#endif #endif
#define SPECIAL_DEVS (1) #define SPECIAL_DEVS (2)
#define DEFAULT_DEVS_NUMOF (GNRC_NETIF_NUMOF - SPECIAL_DEVS) #define DEFAULT_DEVS_NUMOF (GNRC_NETIF_NUMOF - SPECIAL_DEVS)
#define GP1 (0x20U) #define GP1 (0x20U)
...@@ -56,11 +56,19 @@ extern "C" { ...@@ -56,11 +56,19 @@ extern "C" {
#define LA7 (0xfdU) #define LA7 (0xfdU)
#define LA8 (0x0aU) #define LA8 (0x0aU)
#define TEST_IEEE802154_MAX_FRAG_SIZE (102)
#define ETHERNET_SRC { LA1, LA2, LA3, LA6, LA7, LA8 } #define ETHERNET_SRC { LA1, LA2, LA3, LA6, LA7, LA8 }
#define ETHERNET_IPV6_LL { LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, \ #define ETHERNET_IPV6_LL { LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, \
LA1 ^ 0x2, LA2, LA3, 0xff, 0xfe, LA6, LA7, LA8 } LA1 ^ 0x2, LA2, LA3, 0xff, 0xfe, LA6, LA7, LA8 }
#define ETHERNET_IPV6_G { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, \ #define ETHERNET_IPV6_G { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, \
LA1 ^ 0x2, LA2, LA3, 0xff, 0xfe, LA6, LA7, LA8 } LA1 ^ 0x2, LA2, LA3, 0xff, 0xfe, LA6, LA7, LA8 }
#define IEEE802154_LONG_SRC { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }
#define IEEE802154_SHORT_SRC { LA7, LA8 }
#define IEEE802154_IPV6_LL { LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, \
LA1 ^ 0x2, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }
#define IEEE802154_IPV6_G { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, \
LA1 ^ 0x2, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }
#define NETIF0_SRC { LA1, LA2 + 1, LA3, LA4, LA5, LA6, LA7, LA8 } #define NETIF0_SRC { LA1, LA2 + 1, LA3, LA4, LA5, LA6, LA7, LA8 }
#define NETIF0_IPV6_LL { LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, \ #define NETIF0_IPV6_LL { LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, \
LA1 ^ 0x2, LA2 + 1, LA3, LA4, LA5, LA6, LA7, LA8 } LA1 ^ 0x2, LA2 + 1, LA3, LA4, LA5, LA6, LA7, LA8 }
...@@ -74,6 +82,7 @@ extern "C" { ...@@ -74,6 +82,7 @@ extern "C" {
LA1 ^ 0x82, LA2, LA3, LA4, LA5, LA6, LA7, LA8 } LA1 ^ 0x82, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }
extern netdev_t *ethernet_dev; extern netdev_t *ethernet_dev;
extern netdev_t *ieee802154_dev;
extern netdev_t *devs[DEFAULT_DEVS_NUMOF]; extern netdev_t *devs[DEFAULT_DEVS_NUMOF];
void _tests_init(void); void _tests_init(void);
......
This diff is collapsed.
...@@ -27,6 +27,42 @@ def testfunc(child): ...@@ -27,6 +27,42 @@ def testfunc(child):
child.expect("00000000 FF FF FF FF FF FF 3E E6 B5 22 FD 0A " + child.expect("00000000 FF FF FF FF FF FF 3E E6 B5 22 FD 0A " +
"FF FF 41 42") "FF FF 41 42")
child.expect("00000010 43 44 45 46 47 00") child.expect("00000010 43 44 45 46 47 00")
# test_netapi_send__raw_unicast_ieee802154_long_long_packet
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 DC 00 00 00 0B FD 22 19 0F B5 E6 " +
"3E 0A FD 22")
child.expect("00000010 19 0F B5 E6 3E 31 32 33 41 42 43 44 " +
"45 46 47 00")
# test_netapi_send__raw_unicast_ieee802154_long_short_packet
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 D8 01 00 00 0B FD 0A FD 22 19 0F " +
"B5 E6 3E 31")
child.expect("00000010 32 33 41 42 43 44 45 46 47 00")
# test_netapi_send__raw_unicast_ieee802154_short_long_packet1
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 9C 02 00 00 0B FD 22 19 0F B5 E6 " +
"3E 0A FD 31")
child.expect("00000010 32 33 41 42 43 44 45 46 47 00")
# test_netapi_send__raw_unicast_ieee802154_short_long_packet2
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 9C 03 00 00 0B FD 22 19 0F B5 E6 " +
"3E 0A FD 31")
child.expect("00000010 32 33 41 42 43 44 45 46 47 00")
# test_netapi_send__raw_unicast_ieee802154_short_short_packet
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 98 04 00 00 0B FD 0A FD 31 32 33 " +
"41 42 43 44")
child.expect("00000010 45 46 47 00")
# test_netapi_send__raw_broadcast_ieee802154_long_packet
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 D8 05 00 00 FF FF 0A FD 22 19 0F " +
"B5 E6 3E 31")
child.expect("00000010 32 33 41 42 43 44 45 46 47 00")
# test_netapi_send__raw_broadcast_ieee802154_short_packet
child.expect(r"Sending data from IEEE 802\.15\.4 device:")
child.expect("00000000 41 98 06 00 00 FF FF 0A FD 31 32 33 " +
"41 42 43 44")
child.expect("00000010 45 46 47 00")
# test_netapi_send__ipv6_unicast_ethernet_packet # test_netapi_send__ipv6_unicast_ethernet_packet
child.expect("Sending data from Ethernet device:") child.expect("Sending data from Ethernet device:")
child.expect("00000000 3E E6 B5 0F 19 23 3E E6 B5 22 FD 0A 86 DD 60 00") child.expect("00000000 3E E6 B5 0F 19 23 3E E6 B5 22 FD 0A 86 DD 60 00")
...@@ -39,6 +75,19 @@ def testfunc(child): ...@@ -39,6 +75,19 @@ def testfunc(child):
child.expect("00000010 00 00 00 08 3B 40 FE 80 00 00 00 00 00 00 3C E6") child.expect("00000010 00 00 00 08 3B 40 FE 80 00 00 00 00 00 00 3C E6")
child.expect("00000020 B5 FF FE 22 FD 0A FF 02 00 00 00 00 00 00 00 00") child.expect("00000020 B5 FF FE 22 FD 0A FF 02 00 00 00 00 00 00 00 00")
child.expect("00000030 00 00 00 00 00 01 41 42 43 44 45 46 47 00") child.expect("00000030 00 00 00 00 00 01 41 42 43 44 45 46 47 00")
# test_netapi_send__ipv6_unicast_ieee802154_packet
child.expect("Sending data from IEEE 802.15.4 device:")
child.expect("00000000 41 DC 07 00 00 0B FD 22 19 0F B5 E6 3E 0A FD 22")
child.expect("00000010 19 0F B5 E6 3E 60 00 00 00 00 08 3B 40 FE 80 00")
child.expect("00000020 00 00 00 00 00 3C E6 B5 0F 19 22 FD 0A FE 80 00")
child.expect("00000030 00 00 00 00 00 3C E6 B5 FF FE 0F 19 23 41 42 43")
child.expect("00000040 44 45 46 47 00")
# test_netapi_send__ipv6_multicast_ieee802154_packet
child.expect("Sending data from IEEE 802.15.4 device:")
child.expect("00000000 41 D8 08 00 00 FF FF 0A FD 22 19 0F B5 E6 3E 60")
child.expect("00000010 00 00 00 00 08 3B 40 FE 80 00 00 00 00 00 00 3C")
child.expect("00000020 E6 B5 0F 19 22 FD 0A FF 02 00 00 00 00 00 00 00")
child.expect("00000030 00 00 00 00 00 00 01 41 42 43 44 45 46 47 00")
# test_netapi_recv__empty_ethernet_payload # test_netapi_recv__empty_ethernet_payload
child.expect("pktdump dumping Ethernet packet with empty payload") child.expect("pktdump dumping Ethernet packet with empty payload")
child.expect("PKTDUMP: data received:") child.expect("PKTDUMP: data received:")
...@@ -49,6 +98,16 @@ def testfunc(child): ...@@ -49,6 +98,16 @@ def testfunc(child):
child.expect("src_l2addr: 3e:e6:b5:22:fd:0b") child.expect("src_l2addr: 3e:e6:b5:22:fd:0b")
child.expect("dst_l2addr: 3e:e6:b5:22:fd:0a") child.expect("dst_l2addr: 3e:e6:b5:22:fd:0a")
child.expect("~~ PKT - 2 snips, total size: 20 byte") child.expect("~~ PKT - 2 snips, total size: 20 byte")
# test_netapi_recv__empty_ieee802154_payload
child.expect(r"pktdump dumping IEEE 802\.15\.4 packet with empty payload")
child.expect("PKTDUMP: data received:")
child.expect(r"~~ SNIP 0 - size: 0 byte, type: NETTYPE_UNDEF \(0\)")
child.expect(r"00000000~~ SNIP 1 - size: 24 byte, type: NETTYPE_NETIF \(-1\)")
child.expect("if_pid: 7 rssi: 0 lqi: 0")
child.expect("flags: 0x0")
child.expect("src_l2addr: 3e:e6:b5:0f:19:22:fd:0b")
child.expect("dst_l2addr: 3e:e6:b5:0f:19:22:fd:0a")
child.expect("~~ PKT - 2 snips, total size: 24 byte")
# test_netapi_recv__raw_ethernet_payload # test_netapi_recv__raw_ethernet_payload
child.expect("pktdump dumping Ethernet packet with payload 12 34 45 56") child.expect("pktdump dumping Ethernet packet with payload 12 34 45 56")
child.expect("PKTDUMP: data received:") child.expect("PKTDUMP: data received:")
...@@ -60,6 +119,17 @@ def testfunc(child): ...@@ -60,6 +119,17 @@ def testfunc(child):
child.expect("src_l2addr: 3e:e6:b5:22:fd:0b") child.expect("src_l2addr: 3e:e6:b5:22:fd:0b")
child.expect("dst_l2addr: 3e:e6:b5:22:fd:0a") child.expect("dst_l2addr: 3e:e6:b5:22:fd:0a")
child.expect("~~ PKT - 2 snips, total size: 24 byte") child.expect("~~ PKT - 2 snips, total size: 24 byte")
# test_netapi_recv__raw_ieee802154_payload
child.expect(r"pktdump dumping IEEE 802\.15\.4 packet with payload 12 34 45 56")
child.expect("PKTDUMP: data received:")
child.expect(r"~~ SNIP 0 - size: 4 byte, type: NETTYPE_UNDEF \(0\)")
child.expect("00000000 12 34 45 56")
child.expect(r"~~ SNIP 1 - size: 24 byte, type: NETTYPE_NETIF \(-1\)")
child.expect("if_pid: 7 rssi: 0 lqi: 0")
child.expect("flags: 0x0")
child.expect("src_l2addr: 3e:e6:b5:0f:19:22:fd:0b")
child.expect("dst_l2addr: 3e:e6:b5:0f:19:22:fd:0a")
child.expect("~~ PKT - 2 snips, total size: 28 byte")
# test_netapi_recv__ipv6_ethernet_payload # test_netapi_recv__ipv6_ethernet_payload
child.expect("pktdump dumping IPv6 over Ethernet packet with payload 01") child.expect("pktdump dumping IPv6 over Ethernet packet with payload 01")
child.expect("PKTDUMP: data received:") child.expect("PKTDUMP: data received:")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment