qa: update 660 to generate index.html, fixing pcp-testsuite runs
[pcp.git] / qa / src / disk_test.c
blobbb24af9d4e07be2ced83015abf386b50fc951991
1 /*
2 * Copyright (c) 1997-2002 Silicon Graphics, Inc. All Rights Reserved.
3 */
5 #include <pcp/pmapi.h>
6 #include <pcp/impl.h>
8 static int listOne[2];
9 #define LEN(l) (sizeof(l)/sizeof(l[0]))
11 static char *namelist[] = {
12 "disk.dev.read"
15 #define NCONTEXTS 2
17 int
18 main(int argc, char **argv)
20 int e, i;
21 int h[NCONTEXTS];
22 pmID metrics[2];
23 pmResult *resp;
24 pmInDom diskindom;
25 pmDesc desc;
26 int *inst;
27 char **name;
28 int numinst;
29 int c;
30 int sts;
31 int errflag = 0;
33 __pmSetProgname(argv[0]);
35 while ((c = getopt(argc, argv, "D:?")) != EOF) {
36 switch (c) {
38 case 'D': /* debug flag */
39 sts = __pmParseDebug(optarg);
40 if (sts < 0) {
41 fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
42 pmProgname, optarg);
43 errflag++;
45 else
46 pmDebug |= sts;
47 break;
49 case '?':
50 default:
51 errflag++;
52 break;
56 if (errflag || optind != argc) {
57 fprintf(stderr, "Usage: %s [-D n]\n", pmProgname);
58 exit(1);
61 for (i=0; i < NCONTEXTS; i++) {
62 if ((h[i] = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) {
63 printf("pmNewContext: %s\n", pmErrStr(h[i]));
64 exit(1);
67 if ((e = pmLookupName(1, namelist, metrics)) < 0) {
68 printf("pmLookupName: %s\n", pmErrStr(e));
69 exit(1);
72 if ((e = pmLookupDesc(metrics[0], &desc)) < 0) {
73 printf("pmLookupDesc: %s\n", pmErrStr(e));
74 exit(1);
78 diskindom = desc.indom;
79 if ((numinst = pmGetInDom(diskindom, &inst, &name)) < 0) {
80 printf("pmGetInDom: %s\n", pmErrStr(numinst));
81 exit(1);
83 printf("Disks:\n");
84 for (i = 0; i < numinst; i++)
85 printf("\t[%d]: %d %s\n", i, inst[i], name[i]);
87 for (i=0; i < NCONTEXTS; i++) {
88 pmUseContext(h[i]);
90 listOne[0] = inst[0];
91 listOne[1] = inst[numinst-1];
93 pmAddProfile(diskindom, 0, (int *)0);
94 printf("all drives should be included here\n");
95 if ((e = pmFetch(1, metrics, &resp)) < 0) {
96 printf("pmFetch[2]: %s\n", pmErrStr(e));
98 else
99 __pmDumpResult(stdout, resp);
101 pmDelProfile(diskindom, 0, (int *)0);
102 putchar('\n');
103 printf("no drives should be included here\n");
104 if ((e = pmFetch(1, metrics, &resp)) < 0) {
105 printf("pmFetch[3]: %s\n", pmErrStr(e));
107 else
108 __pmDumpResult(stdout, resp);
110 pmDelProfile(diskindom, 0, (int *)0);
111 pmAddProfile(diskindom, LEN(listOne), listOne);
112 putchar('\n');
113 printf("only the first and last drive should be included here\n");
114 if ((e = pmFetch(1, metrics, &resp)) < 0) {
115 printf("pmFetch[0]: %s\n", pmErrStr(e));
117 else
118 __pmDumpResult(stdout, resp);
120 pmDelProfile(diskindom, 0, (int *)0);
121 pmAddProfile(diskindom, numinst, inst);
122 pmDelProfile(diskindom, 1, listOne);
123 putchar('\n');
124 printf("all except drive zero should be included here\n");
125 if ((e = pmFetch(1, metrics, &resp)) < 0) {
126 printf("pmFetch[1]: %s\n", pmErrStr(e));
128 else
129 __pmDumpResult(stdout, resp);
131 pmDelProfile(diskindom, 0, (int *)0);
132 pmAddProfile(diskindom, 1, inst);
133 putchar('\n');
134 printf("drive zero ONLY should be included here\n");
135 if ((e = pmFetch(1, metrics, &resp)) < 0) {
136 printf("pmFetch[1]: %s\n", pmErrStr(e));
138 else
139 __pmDumpResult(stdout, resp);
142 exit(0);