Module Name: src Committed By: christos Date: Tue May 8 01:02:38 UTC 2018
Modified Files: src/tests/lib/libc/sys: t_getrusage.c Log Message: add tests for maxrss, msgsnd To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/tests/lib/libc/sys/t_getrusage.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/lib/libc/sys/t_getrusage.c diff -u src/tests/lib/libc/sys/t_getrusage.c:1.5 src/tests/lib/libc/sys/t_getrusage.c:1.6 --- src/tests/lib/libc/sys/t_getrusage.c:1.5 Fri Jan 13 15:31:06 2017 +++ src/tests/lib/libc/sys/t_getrusage.c Mon May 7 21:02:38 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: t_getrusage.c,v 1.5 2017/01/13 20:31:06 christos Exp $ */ +/* $NetBSD: t_getrusage.c,v 1.6 2018/05/08 01:02:38 christos Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -29,17 +29,21 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_getrusage.c,v 1.5 2017/01/13 20:31:06 christos Exp $"); +__RCSID("$NetBSD: t_getrusage.c,v 1.6 2018/05/08 01:02:38 christos Exp $"); #include <sys/resource.h> #include <sys/time.h> #include <atf-c.h> +#include <stdio.h> #include <errno.h> #include <limits.h> #include <signal.h> #include <stdint.h> +#include <stdlib.h> #include <string.h> +#include <sys/socket.h> +#include <netinet/in.h> static void work(void); static void sighandler(int); @@ -117,6 +121,64 @@ ATF_TC_BODY(getrusage_sig, tc) atf_tc_fail("getrusage(2) did not record signals"); } +ATF_TC(getrusage_maxrss); +ATF_TC_HEAD(getrusage_maxrss, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test maxrss growing with getrusage(2)"); +} + +ATF_TC_BODY(getrusage_maxrss, tc) +{ + struct rusage ru; + long maxrss; + int i; + + (void)memset(&ru, 0, sizeof(struct rusage)); + ATF_REQUIRE(getrusage(RUSAGE_SELF, &ru) == 0); + maxrss = ru.ru_maxrss; + +#define CHUNK (1024 * 1024) + for (i = 0; i < 40; i++) { + void *p = malloc(CHUNK); + memset(p, 0, CHUNK); + } + ATF_REQUIRE(getrusage(RUSAGE_SELF, &ru) == 0); + ATF_REQUIRE(maxrss < ru.ru_maxrss); +} + +ATF_TC(getrusage_msgsnd); +ATF_TC_HEAD(getrusage_msgsnd, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test send growing with getrusage(2)"); +} + +ATF_TC_BODY(getrusage_msgsnd, tc) +{ + struct rusage ru; + long msgsnd; + int s, i; + struct sockaddr_in sin; + + ATF_REQUIRE(getrusage(RUSAGE_SELF, &ru) == 0); + msgsnd = ru.ru_msgsnd; + + s = socket(AF_INET, SOCK_DGRAM, 0); + ATF_REQUIRE(s >= 0); + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_len = sizeof(sin); + sin.sin_addr.s_addr = ntohl(INADDR_LOOPBACK); + sin.sin_port = htons(3333); + + for (i = 0; i < 10; i++) + ATF_REQUIRE(sendto(s, &sin, sizeof(sin), 0, (void *)&sin, + (socklen_t)sizeof(sin)) != -1); + + ATF_REQUIRE(getrusage(RUSAGE_SELF, &ru) == 0); + ATF_REQUIRE(msgsnd + 10 == ru.ru_msgsnd); + close(s); +} + ATF_TC(getrusage_utime_back); ATF_TC_HEAD(getrusage_utime_back, tc) { @@ -192,6 +254,8 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, getrusage_err); ATF_TP_ADD_TC(tp, getrusage_sig); + ATF_TP_ADD_TC(tp, getrusage_maxrss); + ATF_TP_ADD_TC(tp, getrusage_msgsnd); ATF_TP_ADD_TC(tp, getrusage_utime_back); ATF_TP_ADD_TC(tp, getrusage_utime_zero);