Message ID | 20180419131135.23693-2-pvorel@suse.cz |
---|---|
State | Accepted |
Delegated to: | Alexey Kodanev |
Headers | show |
Series | [v2,1/2] network/in6_02: Don't use default value for LHOST_IFACES | expand |
On 04/19/2018 04:11 PM, Petr Vorel wrote: > Signed-off-by: Petr Vorel <pvorel@suse.cz> > --- > testcases/network/lib6/in6_02.c | 224 ++++++++++++++++++++-------------------- > 1 file changed, 110 insertions(+), 114 deletions(-) > > diff --git a/testcases/network/lib6/in6_02.c b/testcases/network/lib6/in6_02.c > index e1a71d987..e3a92f519 100644 > --- a/testcases/network/lib6/in6_02.c > +++ b/testcases/network/lib6/in6_02.c > @@ -1,115 +1,95 @@ > /* > + * Copyright (c) International Business Machines Corp., 2001 > + * Copyright (c) 2018 Petr Vorel <pvorel@suse.cz> > * > - * Copyright (c) International Business Machines Corp., 2001 > - * Author: David L Stevens > + * Author: David L Stevens > * > - * This program is free software; you can redistribute it and/or modify > - * it under the terms of the GNU General Public License as published by > - * the Free Software Foundation; either version 2 of the License, or > - * (at your option) any later version. > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > - * the GNU General Public License for more details. > + * This program is distributed in the hope that it would be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > * > - * You should have received a copy of the GNU General Public License > - * along with this program; if not, write to the Free Software Foundation, > - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > - */ > -/* > - * Description: > - * Tests for name to index and index to name functions in IPv6 > + * You should have received a copy of the GNU General Public License > + * along with this program. If not, see <http://www.gnu.org/licenses/>. > + * > + * Description: > + * IPv6 name to index and index to name function tests > */ > > + > +#include <stdlib.h> > +#include <stdio.h> > #include <unistd.h> > #include <errno.h> > #include <sys/socket.h> > #include <net/if.h> > > -#include "test.h" > +#include "tst_test.h" > + > +#define I2N_RNDCOUNT 10 /* random ints */ > +#define I2N_LOWCOUNT 10 /* sequential from 0 */ > > static struct { > char *name; > int nonzero; > -} n2i[] = { > +} test_case[] = { > { "lo", 1 }, > { NULL, 1 }, > { "hoser75", 0 }, > { "6", 0 }, > }; > > -#define N2I_COUNT (sizeof(n2i)/sizeof(n2i[0])) > -#define I2N_RNDCOUNT 10 /* random ints */ > -#define I2N_LOWCOUNT 10 /* sequential from 0 */ > - > static void setup(void); > -static void n2itest(void); > -static void i2ntest(void); > -static void initest(void); > - > -static void (*testfunc[])(void) = { n2itest, > - i2ntest, initest }; > +static void if_nametoindex_test(void); > +static void if_indextoname_test(void); > +static void if_nameindex_test(void); > > -char *TCID = "in6_02"; > -int TST_TOTAL = ARRAY_SIZE(testfunc); > +static void (*testfunc[])(void) = { if_nametoindex_test, if_indextoname_test, > + if_nameindex_test }; > > -int main(int argc, char *argv[]) > -{ > - int lc; > - int i; > - > - tst_parse_opts(argc, argv, NULL, NULL); > - > - setup(); > - > - for (lc = 0; TEST_LOOPING(lc); ++lc) { > - tst_count = 0; > - > - for (i = 0; i < TST_TOTAL; i++) > - (*testfunc[i])(); > - } > - > - tst_exit(); > -} > - > -/* if_nametoindex tests */ > -void n2itest(void) > +static void if_nametoindex_test(void) > { > unsigned int i; > char ifname[IF_NAMESIZE], *pifn; > > - for (i = 0; i < N2I_COUNT; ++i) { > - if (n2i[i].name == NULL) { > - tst_resm(TCONF, "LHOST_IFACES not defined or invalid, skip testing it"); > + tst_res(TINFO, "IPv6 if_nametoindex() test"); > + > + for (i = 0; i < ARRAY_SIZE(test_case); ++i) { > + if (test_case[i].name == NULL) { > + tst_res(TCONF, "LHOST_IFACES not defined or invalid, skip testing it"); > return; > } > > - TEST(if_nametoindex(n2i[i].name)); > - if (!TEST_RETURN != !n2i[i].nonzero) { > - tst_resm(TFAIL, "if_nametoindex(\"%s\") %ld " > - "[should be %szero]", n2i[i].name, TEST_RETURN, > - n2i[i].nonzero ? "non" : ""); > + TEST(if_nametoindex(test_case[i].name)); > + if (!TEST_RETURN != !test_case[i].nonzero) { > + tst_res(TFAIL, "if_nametoindex(%s) %ld [should be %szero]", > + test_case[i].name, TEST_RETURN, test_case[i].nonzero ? "non" This line is over 80 chars. test_case[i].nonzero can be moved to the next line: > + : ""); test_case[i].nonzero ? "non" : "" > return; > } > if (TEST_RETURN) { > pifn = if_indextoname(TEST_RETURN, ifname); > - if (!pifn || strcmp(n2i[i].name, pifn)) { > - tst_resm(TFAIL, "if_nametoindex(\"%s\") %ld " > - "doesn't match if_indextoname(%ld) " > - "\"%s\"", n2i[i].name, TEST_RETURN, > - TEST_RETURN, pifn ? pifn : ""); > + if (!pifn || strcmp(test_case[i].name, pifn)) { > + tst_res(TFAIL, > + "if_nametoindex(%s) %ld doesn't match if_indextoname(%ld) \"%s\"", > + test_case[i].name, TEST_RETURN, TEST_RETURN, pifn ? pifn Here as well: pifn ? pifn : "" > + : ""); > return; > } > } > - tst_resm(TINFO, "if_nametoindex(\"%s\") %ld", > - n2i[i].name, TEST_RETURN); > + tst_res(TINFO, "if_nametoindex(%s) %ld", > + test_case[i].name, TEST_RETURN); > } > > - tst_resm(TPASS, "if_nametoindex() tests succeed"); > + tst_res(TPASS, "if_nametoindex() test succeed"); > } I don't think we need to return on TCONF, what about using 'continue' in this loop. Remove the last "tst_res(TPASS, ...)" in the end of this function, and change TINFO to TPASS in the end of the loop? Otherwise it will skip the other test-cases after TCONF. > > -int sub_i2ntest(unsigned int if_index) > +static int sub_if_indextoname_test(unsigned int if_index) > { > char ifname[IF_NAMESIZE]; > unsigned int idx; > @@ -117,48 +97,49 @@ int sub_i2ntest(unsigned int if_index) > TEST((ifname == if_indextoname(if_index, ifname))); > if (!TEST_RETURN) { > if (TEST_ERRNO != ENXIO) { > - tst_resm(TFAIL, "if_indextoname(%d) returns %ld " > - "but errno %d != ENXIO", if_index, TEST_RETURN, > - TEST_ERRNO); > + tst_res(TFAIL, > + "if_indextoname(%d) returns %ld but errno %d != ENXIO", > + if_index, TEST_RETURN, TEST_ERRNO); > return 0; > } > - tst_resm(TINFO, "if_indextoname(%d) returns NULL", if_index); > + tst_res(TINFO, "if_indextoname(%d) returns NULL", if_index); > return 1; > } > /* else, a valid interface-- double check name */ > idx = if_nametoindex(ifname); > if (idx != if_index) { > - tst_resm(TFAIL, "if_indextoname(%u) returns \"%s\" but " > - "doesn't if_nametoindex(\"%s\") returns %u", > - if_index, ifname, ifname, idx); > + tst_res(TFAIL, > + "if_indextoname(%u) returns \"%s\" but doesn't if_nametoindex(%s) returns %u", > + if_index, ifname, ifname, idx); > return 0; > } > - tst_resm(TINFO, "if_indextoname(%d) returns \"%s\"", if_index, ifname); > + tst_res(TINFO, "if_indextoname(%d) returns \"%s\"", if_index, ifname); > return 1; > } > > -/* if_indextoname tests */ > -void i2ntest(void) > +static void if_indextoname_test(void) > { > unsigned int i; > > + tst_res(TINFO, "IPv6 if_indextoname() test"); > + > /* some low-numbered indexes-- likely to get valid interfaces here */ > for (i = 0; i < I2N_LOWCOUNT; ++i) > - if (!sub_i2ntest(i)) > + if (!sub_if_indextoname_test(i)) > return; /* skip the rest, if broken */ > /* some random ints; should mostly fail */ > for (i = 0; i < I2N_RNDCOUNT; ++i) > - if (!sub_i2ntest(rand())) > + if (!sub_if_indextoname_test(rand())) > return; /* skip the rest, if broken */ > > - tst_resm(TPASS, "if_indextoname() tests succeed"); > + tst_res(TPASS, "if_indextoname() test succeed"); > } > > /* > * This is an ugly, linux-only solution. getrusage() doesn't support the > * current data segment size, so we get it out of /proc > */ > -int getdatasize(void) > +static int getdatasize(void) > { > char line[128], *p; > int dsize = -1; > @@ -181,8 +162,7 @@ int getdatasize(void) > return dsize; > } > > -/* if_nameindex tests */ > -void initest(void) > +static void if_nameindex_test(void) > { > struct if_nameindex *pini; > int i; > @@ -191,79 +171,84 @@ void initest(void) > int freenicount; > int dsize_before, dsize_after; > > + tst_res(TINFO, "IPv6 if_nameindex() test"); > + > pini = if_nameindex(); > if (pini == NULL) { > - tst_resm(TFAIL, "if_nameindex() returns NULL, errno %d (%s)", > - TEST_ERRNO, strerror(TEST_ERRNO)); > + tst_res(TFAIL, "if_nameindex() returns NULL, errno %d (%s)", > + TEST_ERRNO, strerror(TEST_ERRNO)); > return; > } > for (i = 0; pini[i].if_index; ++i) { > p = if_indextoname(pini[i].if_index, buf); > if (!p || strcmp(p, pini[i].if_name)) { > - tst_resm(TFAIL, "if_nameindex idx %d name \"%s\" but " > - "if_indextoname(%d) is \"%s\"", > - pini[i].if_index, pini[i].if_name, > - pini[i].if_index, p ? p : ""); > + tst_res(TFAIL, > + "if_nameindex idx %d name \"%s\" but if_indextoname(%d) is \"%s\"", > + pini[i].if_index, pini[i].if_name, > + pini[i].if_index, p ? p : ""); > return; > } > idx = if_nametoindex(pini[i].if_name); > if (idx != pini[i].if_index) { > - tst_resm(TFAIL, "if_nameindex idx %d name \"%s\" but " > - "if_indextoname(\"%s\") is %d", > - pini[i].if_index, pini[i].if_name, > - pini[i].if_name, idx); > + tst_res(TFAIL, > + "if_nameindex idx %d name \"%s\" but if_indextoname(%s) is %d", > + pini[i].if_index, pini[i].if_name, > + pini[i].if_name, idx); > return; > } > - tst_resm(TINFO, "if_nameindex idx %d name \"%s\"", > + tst_res(TINFO, "if_nameindex idx %d name \"%s\"", > pini[i].if_index, pini[i].if_name); > } > if_freenameindex(pini); > > - /* if_freenameindex() has no error conditions; see if we run > + /* > + * if_freenameindex() has no error conditions; see if we run > * out of memory if we do it a lot. > */ > dsize_before = getdatasize(); > if (dsize_before < 0) { > - tst_brkm(TBROK, NULL, "getdatasize failed: errno %d (%s)", > + tst_brk(TBROK, "getdatasize failed: errno %d (%s)", > errno, strerror(errno)); > } > - /* we need to leak at least a page to detect a leak; 1 byte per call > + > + /* > + * we need to leak at least a page to detect a leak; 1 byte per call > * will be detected with getpagesize() calls. > */ > freenicount = getpagesize(); > for (i = 0; i < freenicount; ++i) { > pini = if_nameindex(); > if (pini == NULL) { > - tst_resm(TINFO, "if_freenameindex test failed " > - "if_nameindex() iteration %d", i); > + tst_res(TINFO, > + "if_freenameindex test failed if_nameindex() iteration %d", i); > break; > } > if_freenameindex(pini); > } > dsize_after = getdatasize(); > if (dsize_after < 0) { > - tst_brkm(TBROK, NULL, "getdatasize failed: errno %d (%s)", > + tst_brk(TBROK, "getdatasize failed: errno %d (%s)", > errno, strerror(errno)); > } > if (dsize_after > dsize_before + getpagesize()) { > - tst_resm(TFAIL, "if_freenameindex leaking memory " > - "(%d iterations) dsize before %d dsize after %d", i, > - dsize_before, dsize_after); > + tst_res(TFAIL, > + "if_freenameindex leaking memory (%d iterations) dsize before %d dsize after %d", > + i, dsize_before, dsize_after); > return; > - } else { > - tst_resm(TINFO, "if_freenameindex passed %d iterations", i); > } > + tst_res(TINFO, "if_freenameindex passed %d iterations", i); > > - tst_resm(TPASS, "if_nameindex() tests succeed"); > + tst_res(TPASS, "if_nameindex() test succeed"); > } > > -void setup(void) > +static void setup(void) > { > - TEST_PAUSE; > - > char *ifnames = getenv("LHOST_IFACES"); > - if (!ifnames) > + > + if (!ifnames) { > + tst_res(TINFO, "LHOST_IFACES not defined, it will not be tested"); And this seems to be over 80 too, you could either put it to the next one or better just edit it a little bit so that it takes less space: tst_res(TINFO, "LHOST_IFACES not defined, it won't be tested"); So this is going to be printed on TCONF too, may be just left only one? > > static char name[256]; > int ret; > @@ -272,6 +257,17 @@ void setup(void) > if (ret == -1) > return; > > - tst_resm(TINFO, "get interface name from LHOST_IFACES: '%s'", name); > - n2i[1].name = name; > + tst_res(TINFO, "LHOST_IFACES \"%s\"", name); tst_res(TINFO, "get interface name from LHOST_IFACES: '%s'", name); ?
diff --git a/testcases/network/lib6/in6_02.c b/testcases/network/lib6/in6_02.c index e1a71d987..e3a92f519 100644 --- a/testcases/network/lib6/in6_02.c +++ b/testcases/network/lib6/in6_02.c @@ -1,115 +1,95 @@ /* + * Copyright (c) International Business Machines Corp., 2001 + * Copyright (c) 2018 Petr Vorel <pvorel@suse.cz> * - * Copyright (c) International Business Machines Corp., 2001 - * Author: David L Stevens + * Author: David L Stevens * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -/* - * Description: - * Tests for name to index and index to name functions in IPv6 + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Description: + * IPv6 name to index and index to name function tests */ + +#include <stdlib.h> +#include <stdio.h> #include <unistd.h> #include <errno.h> #include <sys/socket.h> #include <net/if.h> -#include "test.h" +#include "tst_test.h" + +#define I2N_RNDCOUNT 10 /* random ints */ +#define I2N_LOWCOUNT 10 /* sequential from 0 */ static struct { char *name; int nonzero; -} n2i[] = { +} test_case[] = { { "lo", 1 }, { NULL, 1 }, { "hoser75", 0 }, { "6", 0 }, }; -#define N2I_COUNT (sizeof(n2i)/sizeof(n2i[0])) -#define I2N_RNDCOUNT 10 /* random ints */ -#define I2N_LOWCOUNT 10 /* sequential from 0 */ - static void setup(void); -static void n2itest(void); -static void i2ntest(void); -static void initest(void); - -static void (*testfunc[])(void) = { n2itest, - i2ntest, initest }; +static void if_nametoindex_test(void); +static void if_indextoname_test(void); +static void if_nameindex_test(void); -char *TCID = "in6_02"; -int TST_TOTAL = ARRAY_SIZE(testfunc); +static void (*testfunc[])(void) = { if_nametoindex_test, if_indextoname_test, + if_nameindex_test }; -int main(int argc, char *argv[]) -{ - int lc; - int i; - - tst_parse_opts(argc, argv, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); ++lc) { - tst_count = 0; - - for (i = 0; i < TST_TOTAL; i++) - (*testfunc[i])(); - } - - tst_exit(); -} - -/* if_nametoindex tests */ -void n2itest(void) +static void if_nametoindex_test(void) { unsigned int i; char ifname[IF_NAMESIZE], *pifn; - for (i = 0; i < N2I_COUNT; ++i) { - if (n2i[i].name == NULL) { - tst_resm(TCONF, "LHOST_IFACES not defined or invalid, skip testing it"); + tst_res(TINFO, "IPv6 if_nametoindex() test"); + + for (i = 0; i < ARRAY_SIZE(test_case); ++i) { + if (test_case[i].name == NULL) { + tst_res(TCONF, "LHOST_IFACES not defined or invalid, skip testing it"); return; } - TEST(if_nametoindex(n2i[i].name)); - if (!TEST_RETURN != !n2i[i].nonzero) { - tst_resm(TFAIL, "if_nametoindex(\"%s\") %ld " - "[should be %szero]", n2i[i].name, TEST_RETURN, - n2i[i].nonzero ? "non" : ""); + TEST(if_nametoindex(test_case[i].name)); + if (!TEST_RETURN != !test_case[i].nonzero) { + tst_res(TFAIL, "if_nametoindex(%s) %ld [should be %szero]", + test_case[i].name, TEST_RETURN, test_case[i].nonzero ? "non" + : ""); return; } if (TEST_RETURN) { pifn = if_indextoname(TEST_RETURN, ifname); - if (!pifn || strcmp(n2i[i].name, pifn)) { - tst_resm(TFAIL, "if_nametoindex(\"%s\") %ld " - "doesn't match if_indextoname(%ld) " - "\"%s\"", n2i[i].name, TEST_RETURN, - TEST_RETURN, pifn ? pifn : ""); + if (!pifn || strcmp(test_case[i].name, pifn)) { + tst_res(TFAIL, + "if_nametoindex(%s) %ld doesn't match if_indextoname(%ld) \"%s\"", + test_case[i].name, TEST_RETURN, TEST_RETURN, pifn ? pifn + : ""); return; } } - tst_resm(TINFO, "if_nametoindex(\"%s\") %ld", - n2i[i].name, TEST_RETURN); + tst_res(TINFO, "if_nametoindex(%s) %ld", + test_case[i].name, TEST_RETURN); } - tst_resm(TPASS, "if_nametoindex() tests succeed"); + tst_res(TPASS, "if_nametoindex() test succeed"); } -int sub_i2ntest(unsigned int if_index) +static int sub_if_indextoname_test(unsigned int if_index) { char ifname[IF_NAMESIZE]; unsigned int idx; @@ -117,48 +97,49 @@ int sub_i2ntest(unsigned int if_index) TEST((ifname == if_indextoname(if_index, ifname))); if (!TEST_RETURN) { if (TEST_ERRNO != ENXIO) { - tst_resm(TFAIL, "if_indextoname(%d) returns %ld " - "but errno %d != ENXIO", if_index, TEST_RETURN, - TEST_ERRNO); + tst_res(TFAIL, + "if_indextoname(%d) returns %ld but errno %d != ENXIO", + if_index, TEST_RETURN, TEST_ERRNO); return 0; } - tst_resm(TINFO, "if_indextoname(%d) returns NULL", if_index); + tst_res(TINFO, "if_indextoname(%d) returns NULL", if_index); return 1; } /* else, a valid interface-- double check name */ idx = if_nametoindex(ifname); if (idx != if_index) { - tst_resm(TFAIL, "if_indextoname(%u) returns \"%s\" but " - "doesn't if_nametoindex(\"%s\") returns %u", - if_index, ifname, ifname, idx); + tst_res(TFAIL, + "if_indextoname(%u) returns \"%s\" but doesn't if_nametoindex(%s) returns %u", + if_index, ifname, ifname, idx); return 0; } - tst_resm(TINFO, "if_indextoname(%d) returns \"%s\"", if_index, ifname); + tst_res(TINFO, "if_indextoname(%d) returns \"%s\"", if_index, ifname); return 1; } -/* if_indextoname tests */ -void i2ntest(void) +static void if_indextoname_test(void) { unsigned int i; + tst_res(TINFO, "IPv6 if_indextoname() test"); + /* some low-numbered indexes-- likely to get valid interfaces here */ for (i = 0; i < I2N_LOWCOUNT; ++i) - if (!sub_i2ntest(i)) + if (!sub_if_indextoname_test(i)) return; /* skip the rest, if broken */ /* some random ints; should mostly fail */ for (i = 0; i < I2N_RNDCOUNT; ++i) - if (!sub_i2ntest(rand())) + if (!sub_if_indextoname_test(rand())) return; /* skip the rest, if broken */ - tst_resm(TPASS, "if_indextoname() tests succeed"); + tst_res(TPASS, "if_indextoname() test succeed"); } /* * This is an ugly, linux-only solution. getrusage() doesn't support the * current data segment size, so we get it out of /proc */ -int getdatasize(void) +static int getdatasize(void) { char line[128], *p; int dsize = -1; @@ -181,8 +162,7 @@ int getdatasize(void) return dsize; } -/* if_nameindex tests */ -void initest(void) +static void if_nameindex_test(void) { struct if_nameindex *pini; int i; @@ -191,79 +171,84 @@ void initest(void) int freenicount; int dsize_before, dsize_after; + tst_res(TINFO, "IPv6 if_nameindex() test"); + pini = if_nameindex(); if (pini == NULL) { - tst_resm(TFAIL, "if_nameindex() returns NULL, errno %d (%s)", - TEST_ERRNO, strerror(TEST_ERRNO)); + tst_res(TFAIL, "if_nameindex() returns NULL, errno %d (%s)", + TEST_ERRNO, strerror(TEST_ERRNO)); return; } for (i = 0; pini[i].if_index; ++i) { p = if_indextoname(pini[i].if_index, buf); if (!p || strcmp(p, pini[i].if_name)) { - tst_resm(TFAIL, "if_nameindex idx %d name \"%s\" but " - "if_indextoname(%d) is \"%s\"", - pini[i].if_index, pini[i].if_name, - pini[i].if_index, p ? p : ""); + tst_res(TFAIL, + "if_nameindex idx %d name \"%s\" but if_indextoname(%d) is \"%s\"", + pini[i].if_index, pini[i].if_name, + pini[i].if_index, p ? p : ""); return; } idx = if_nametoindex(pini[i].if_name); if (idx != pini[i].if_index) { - tst_resm(TFAIL, "if_nameindex idx %d name \"%s\" but " - "if_indextoname(\"%s\") is %d", - pini[i].if_index, pini[i].if_name, - pini[i].if_name, idx); + tst_res(TFAIL, + "if_nameindex idx %d name \"%s\" but if_indextoname(%s) is %d", + pini[i].if_index, pini[i].if_name, + pini[i].if_name, idx); return; } - tst_resm(TINFO, "if_nameindex idx %d name \"%s\"", + tst_res(TINFO, "if_nameindex idx %d name \"%s\"", pini[i].if_index, pini[i].if_name); } if_freenameindex(pini); - /* if_freenameindex() has no error conditions; see if we run + /* + * if_freenameindex() has no error conditions; see if we run * out of memory if we do it a lot. */ dsize_before = getdatasize(); if (dsize_before < 0) { - tst_brkm(TBROK, NULL, "getdatasize failed: errno %d (%s)", + tst_brk(TBROK, "getdatasize failed: errno %d (%s)", errno, strerror(errno)); } - /* we need to leak at least a page to detect a leak; 1 byte per call + + /* + * we need to leak at least a page to detect a leak; 1 byte per call * will be detected with getpagesize() calls. */ freenicount = getpagesize(); for (i = 0; i < freenicount; ++i) { pini = if_nameindex(); if (pini == NULL) { - tst_resm(TINFO, "if_freenameindex test failed " - "if_nameindex() iteration %d", i); + tst_res(TINFO, + "if_freenameindex test failed if_nameindex() iteration %d", i); break; } if_freenameindex(pini); } dsize_after = getdatasize(); if (dsize_after < 0) { - tst_brkm(TBROK, NULL, "getdatasize failed: errno %d (%s)", + tst_brk(TBROK, "getdatasize failed: errno %d (%s)", errno, strerror(errno)); } if (dsize_after > dsize_before + getpagesize()) { - tst_resm(TFAIL, "if_freenameindex leaking memory " - "(%d iterations) dsize before %d dsize after %d", i, - dsize_before, dsize_after); + tst_res(TFAIL, + "if_freenameindex leaking memory (%d iterations) dsize before %d dsize after %d", + i, dsize_before, dsize_after); return; - } else { - tst_resm(TINFO, "if_freenameindex passed %d iterations", i); } + tst_res(TINFO, "if_freenameindex passed %d iterations", i); - tst_resm(TPASS, "if_nameindex() tests succeed"); + tst_res(TPASS, "if_nameindex() test succeed"); } -void setup(void) +static void setup(void) { - TEST_PAUSE; - char *ifnames = getenv("LHOST_IFACES"); - if (!ifnames) + + if (!ifnames) { + tst_res(TINFO, "LHOST_IFACES not defined, it will not be tested"); return; + } static char name[256]; int ret; @@ -272,6 +257,17 @@ void setup(void) if (ret == -1) return; - tst_resm(TINFO, "get interface name from LHOST_IFACES: '%s'", name); - n2i[1].name = name; + tst_res(TINFO, "LHOST_IFACES \"%s\"", name); + test_case[1].name = name; +} + +static void do_test(unsigned int i) +{ + testfunc[i](); } + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(testfunc), + .setup = setup, + .test = do_test, +};
Signed-off-by: Petr Vorel <pvorel@suse.cz> --- testcases/network/lib6/in6_02.c | 224 ++++++++++++++++++++-------------------- 1 file changed, 110 insertions(+), 114 deletions(-)