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

Reply via email to