diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bgpd/test_aspath.c | 125 | ||||
| -rw-r--r-- | tests/lib/test_checksum.c | 3 | ||||
| -rw-r--r-- | tests/lib/test_ttable.c | 3 | ||||
| -rw-r--r-- | tests/topotests/Dockerfile | 6 | ||||
| -rw-r--r-- | tests/topotests/lib/topotest.py | 125 |
5 files changed, 91 insertions, 171 deletions
diff --git a/tests/bgpd/test_aspath.c b/tests/bgpd/test_aspath.c index b94355e8b8..439891b559 100644 --- a/tests/bgpd/test_aspath.c +++ b/tests/bgpd/test_aspath.c @@ -271,57 +271,9 @@ static struct test_segment { 0x03, 0xce, 0x01, 0x10, 0x00, 0x85, 0xed, }, 502, - {"8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285", - - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285", + {"8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285", + + "8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285", 250, 0, NOT_ALL_PRIVATE, 4096, 4, 8466}, }, { @@ -383,15 +335,13 @@ static struct test_segment { { /* 20 */ "reconcile_confed", - "confseq(123,456,789) confset(456,124,788) seq(6435,59408,21665)" - " set(23456,23456,23456), seq(23456,23456,23456)", + "confseq(123,456,789) confset(456,124,788) seq(6435,59408,21665) set(23456,23456,23456), seq(23456,23456,23456)", {0x3, 0x3, 0x00, 0x7b, 0x01, 0xc8, 0x03, 0x15, 0x4, 0x3, 0x01, 0xc8, 0x00, 0x7c, 0x03, 0x14, 0x2, 0x3, 0x19, 0x23, 0xe8, 0x10, 0x54, 0xa1, 0x1, 0x3, 0x5b, 0xa0, 0x5b, 0xa0, 0x5b, 0xa0, 0x2, 0x3, 0x5b, 0xa0, 0x5b, 0xa0, 0x5b, 0xa0}, 40, - {"(123 456 789) [124,456,788] 6435 59408 21665" - " {23456} 23456 23456 23456", + {"(123 456 789) [124,456,788] 6435 59408 21665 {23456} 23456 23456 23456", "6435 59408 21665 {23456} 23456 23456 23456", 7, 4, NOT_ALL_PRIVATE, 23456, 1, 6435}, }, @@ -739,10 +689,8 @@ static struct tests { /* 3 */ {&test_segments[4], &test_segments[5], - {"8467 59649 {4196,48658} {17322,30745} 6435 59408 21665" - " {2457,4369,61697} 1842 41590 51793", - "8467 59649 {4196,48658} {17322,30745} 6435 59408 21665" - " {2457,4369,61697} 1842 41590 51793", + {"8467 59649 {4196,48658} {17322,30745} 6435 59408 21665 {2457,4369,61697} 1842 41590 51793", + "8467 59649 {4196,48658} {17322,30745} 6435 59408 21665 {2457,4369,61697} 1842 41590 51793", 11, 0, NOT_ALL_PRIVATE, 61697, 1, 8467}}, /* 4 */ { @@ -777,59 +725,9 @@ static struct tests { { &test_segments[14], &test_segments[11], - {"8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 2 52737 4096 8722 4 8722", - - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 3 52737 4096 34285 8466 3 52737 4096 34285 " - "8466 2 52737 4096 8722 4 8722", + {"8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 2 52737 4096 8722 4 8722", + + "8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 3 52737 4096 34285 8466 2 52737 4096 8722 4 8722", 257, 0, NOT_ALL_PRIVATE, 4096, 1000, 8466}, }, {NULL, @@ -861,8 +759,7 @@ struct tests reconcile_tests[] = { { &test_segments[20], &test_segments[19], - {"(123 456 789) [124,456,788] 6435 59408 21665" - " {2457,4369,61697} 1842 41591 51793", + {"(123 456 789) [124,456,788] 6435 59408 21665 {2457,4369,61697} 1842 41591 51793", "6435 59408 21665 {2457,4369,61697} 1842 41591 51793", 7, 4, NOT_ALL_PRIVATE, 51793, 1, 6435}, }, diff --git a/tests/lib/test_checksum.c b/tests/lib/test_checksum.c index ddb76c8f9d..301078867a 100644 --- a/tests/lib/test_checksum.c +++ b/tests/lib/test_checksum.c @@ -489,8 +489,7 @@ int main(int argc, char **argv) in_csum_res = in_cksum_optimized(buffer, exercise); in_csum_rfc = in_cksum_rfc(buffer, exercise); if (in_csum_res != in_csum || in_csum != in_csum_rfc) - printf("verify: in_chksum failed in_csum:%x, in_csum_res:%x," - "in_csum_rfc %x, len:%d\n", + printf("verify: in_chksum failed in_csum:%x, in_csum_res:%x,in_csum_rfc %x, len:%d\n", in_csum, in_csum_res, in_csum_rfc, exercise); ospfd = ospfd_checksum(buffer, exercise + sizeof(uint16_t), diff --git a/tests/lib/test_ttable.c b/tests/lib/test_ttable.c index 674179b6ab..43b8adcb97 100644 --- a/tests/lib/test_ttable.c +++ b/tests/lib/test_ttable.c @@ -93,8 +93,7 @@ int main(int argc, char **argv) /* add bigger row */ ttable_add_row(tt, "%s|%s||%s|%s", - "nebula dusk session streets twilight " - "pioneer beats yeah", + "nebula dusk session streets twilight pioneer beats yeah", "prarie dog", "cornmeal", ":O -*_-*"); assert(tt->ncols == 5); assert(tt->nrows == 2); diff --git a/tests/topotests/Dockerfile b/tests/topotests/Dockerfile index cdd0ae2f6e..b7c6298228 100644 --- a/tests/topotests/Dockerfile +++ b/tests/topotests/Dockerfile @@ -19,6 +19,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \ libjson-c-dev \ libpcre3-dev \ libpython-dev \ + libpython3-dev \ libreadline-dev \ libc-ares-dev \ libcap-dev \ @@ -26,7 +27,10 @@ RUN export DEBIAN_FRONTEND=noninteractive \ mininet \ pkg-config \ python-pip \ - python-sphinx \ + python3 \ + python3-dev \ + python3-sphinx \ + python3-pytest \ rsync \ strace \ tcpdump \ diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py index bffb8208e7..b5fa2ea59b 100644 --- a/tests/topotests/lib/topotest.py +++ b/tests/topotests/lib/topotest.py @@ -35,6 +35,7 @@ import tempfile import platform import difflib import time +import signal from lib.topolog import logger from copy import deepcopy @@ -51,6 +52,35 @@ from mininet.log import setLogLevel, info from mininet.cli import CLI from mininet.link import Intf +def gdb_core(obj, daemon, corefiles): + gdbcmds = ''' + info threads + bt full + disassemble + up + disassemble + up + disassemble + up + disassemble + up + disassemble + up + disassemble + ''' + gdbcmds = [['-ex', i.strip()] for i in gdbcmds.strip().split('\n')] + gdbcmds = [item for sl in gdbcmds for item in sl] + + daemon_path = os.path.join(obj.daemondir, daemon) + backtrace = subprocess.check_output( + ['gdb', daemon_path, corefiles[0], '--batch'] + gdbcmds + ) + sys.stderr.write( + "\n%s: %s crashed. Core file found - Backtrace follows:\n" + % (obj.name, daemon) + ) + sys.stderr.write("%s" % backtrace) + return backtrace class json_cmp_result(object): "json_cmp result class for better assertion messages" @@ -422,6 +452,10 @@ def pid_exists(pid): if pid <= 0: return False try: + os.waitpid(pid, os.WNOHANG) + except: + pass + try: os.kill(pid, 0) except OSError as err: if err.errno == errno.ESRCH: @@ -992,8 +1026,8 @@ class Router(Node): os.system("chmod -R go+rw /tmp/topotests") # Return count of running daemons - def countDaemons(self): - numRunning = 0 + def listDaemons(self): + ret = [] rundaemons = self.cmd("ls -1 /var/run/%s/*.pid" % self.routertype) errors = "" if re.search(r"No such file or directory", rundaemons): @@ -1002,12 +1036,11 @@ class Router(Node): for d in StringIO.StringIO(rundaemons): daemonpid = self.cmd("cat %s" % d.rstrip()).rstrip() if daemonpid.isdigit() and pid_exists(int(daemonpid)): - numRunning += 1 - return numRunning + ret.append(os.path.basename(d.rstrip().rsplit(".", 1)[0])) + return ret def stopRouter(self, wait=True, assertOnError=True, minErrorVersion="5.1"): # Stop Running FRR Daemons - numRunning = 0 rundaemons = self.cmd("ls -1 /var/run/%s/*.pid" % self.routertype) errors = "" if re.search(r"No such file or directory", rundaemons): @@ -1016,24 +1049,36 @@ class Router(Node): for d in StringIO.StringIO(rundaemons): daemonpid = self.cmd("cat %s" % d.rstrip()).rstrip() if daemonpid.isdigit() and pid_exists(int(daemonpid)): + daemonname = os.path.basename(d.rstrip().rsplit(".", 1)[0]) logger.info( "{}: stopping {}".format( - self.name, os.path.basename(d.rstrip().rsplit(".", 1)[0]) + self.name, daemonname ) ) - self.cmd("kill -TERM %s" % daemonpid) - self.waitOutput() - if pid_exists(int(daemonpid)): - numRunning += 1 - - if wait and numRunning > 0: - counter = 5 - while counter > 0 and numRunning > 0: - sleep(2, "{}: waiting for daemons stopping".format(self.name)) - numRunning = self.countDaemons() + try: + os.kill(int(daemonpid), signal.SIGTERM) + except OSError as err: + if err.errno == errno.ESRCH: + logger.error("{}: {} left a dead pidfile (pid={})".format(self.name, daemonname, daemonpid)) + else: + logger.info("{}: {} could not kill pid {}: {}".format(self.name, daemonname, daemonpid, str(err))) + + if not wait: + return errors + + running = self.listDaemons() + + if running: + sleep(0.1, "{}: waiting for daemons stopping: {}".format(self.name, ', '.join(running))) + running = self.listDaemons() + + counter = 20 + while counter > 0 and running: + sleep(0.5, "{}: waiting for daemons stopping: {}".format(self.name, ', '.join(running))) + running = self.listDaemons() counter -= 1 - if wait and numRunning > 0: + if running: # 2nd round of kill if daemons didn't exit for d in StringIO.StringIO(rundaemons): daemonpid = self.cmd("cat %s" % d.rstrip()).rstrip() @@ -1048,13 +1093,15 @@ class Router(Node): self.waitOutput() self.cmd("rm -- {}".format(d.rstrip())) - if wait: - errors = self.checkRouterCores(reportOnce=True) - if self.checkRouterVersion("<", minErrorVersion): - # ignore errors in old versions - errors = "" - if assertOnError and len(errors) > 0: - assert "Errors found - details follow:" == 0, errors + if not wait: + return errors + + errors = self.checkRouterCores(reportOnce=True) + if self.checkRouterVersion("<", minErrorVersion): + # ignore errors in old versions + errors = "" + if assertOnError and len(errors) > 0: + assert "Errors found - details follow:" == 0, errors return errors def removeIPs(self): @@ -1348,20 +1395,7 @@ class Router(Node): "{}/{}/{}_core*.dmp".format(self.logdir, self.name, daemon) ) if len(corefiles) > 0: - daemon_path = os.path.join(self.daemondir, daemon) - backtrace = subprocess.check_output( - [ - "gdb {} {} --batch -ex bt 2> /dev/null".format( - daemon_path, corefiles[0] - ) - ], - shell=True, - ) - sys.stderr.write( - "\n%s: %s crashed. Core file found - Backtrace follows:\n" - % (self.name, daemon) - ) - sys.stderr.write("%s" % backtrace) + backtrace = gdb_core(self, daemon, corefiles) traces = ( traces + "\n%s: %s crashed. Core file found - Backtrace follows:\n%s" @@ -1431,20 +1465,7 @@ class Router(Node): "{}/{}/{}_core*.dmp".format(self.logdir, self.name, daemon) ) if len(corefiles) > 0: - daemon_path = os.path.join(self.daemondir, daemon) - backtrace = subprocess.check_output( - [ - "gdb {} {} --batch -ex bt 2> /dev/null".format( - daemon_path, corefiles[0] - ) - ], - shell=True, - ) - sys.stderr.write( - "\n%s: %s crashed. Core file found - Backtrace follows:\n" - % (self.name, daemon) - ) - sys.stderr.write("%s\n" % backtrace) + gdb_core(self, daemon, corefiles) else: # No core found - If we find matching logfile in /tmp, then print last 20 lines from it. if os.path.isfile( |
