t-memstat.c revision 159609
1/*
2 * Copyright (c) 2005, 2006 Sendmail, Inc. and its suppliers.
3 *      All rights reserved.
4 *
5 * By using this file, you agree to the terms and conditions set
6 * forth in the LICENSE file which can be found at the top level of
7 * the sendmail distribution.
8 */
9
10#include <sm/gen.h>
11SM_IDSTR(id, "@(#)$Id: t-memstat.c,v 1.6 2006/03/27 22:34:47 ca Exp $")
12
13/*
14**  Simple test program for memstat
15*/
16
17#include <stdlib.h>
18#include <unistd.h>
19#include <stdio.h>
20#include <strings.h>
21#include <string.h>
22
23extern char *optarg;
24extern int optind;
25
26int
27main(argc, argv)
28	int argc;
29	char **argv;
30{
31	int r, r2, i, l, slp, sz;
32	long v;
33	char *resource;
34
35	l = 1;
36	sz = slp = 0;
37	resource = NULL;
38	while ((r = getopt(argc, argv, "l:m:r:s:")) != -1)
39	{
40		switch ((char) r)
41		{
42		  case 'l':
43			l = strtol(optarg, NULL, 0);
44			break;
45
46		  case 'm':
47			sz = strtol(optarg, NULL, 0);
48			break;
49
50		  case 'r':
51			resource = strdup(optarg);
52			break;
53
54		  case 's':
55			slp = strtol(optarg, NULL, 0);
56			break;
57
58		  default:
59			break;
60		}
61	}
62
63	r = sm_memstat_open();
64	r2 = -1;
65	for (i = 0; i < l; i++)
66	{
67		char *mem;
68
69		r2 = sm_memstat_get(resource, &v);
70		if (slp > 0 && i + 1 < l && 0 == r)
71		{
72			printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
73				resource != NULL ? resource : "default-value",
74				v);
75			sleep(slp);
76			if (sz > 0)
77			{
78				/*
79				**  Just allocate some memory to test the
80				**  values that are returned.
81				**  Note: this is a memory leak, but that
82				**  doesn't matter here.
83				*/
84
85				mem = malloc(sz);
86				if (NULL == mem)
87					printf("malloc(%d) failed\n", sz);
88			}
89		}
90	}
91	printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
92		resource != NULL ? resource : "default-value", v);
93	r = sm_memstat_close();
94	return r;
95}
96