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);