summaryrefslogtreecommitdiff
path: root/qa/src/torture_cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'qa/src/torture_cache.c')
-rw-r--r--qa/src/torture_cache.c599
1 files changed, 599 insertions, 0 deletions
diff --git a/qa/src/torture_cache.c b/qa/src/torture_cache.c
new file mode 100644
index 0000000..843863b
--- /dev/null
+++ b/qa/src/torture_cache.c
@@ -0,0 +1,599 @@
+/*
+ * Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/pmda.h>
+
+static pmInDom indom;
+static __pmInDom_int *indomp;
+static char *xxx = "xxxsomefunnyinstancenamestringthatcanbechoppedabout";
+static char nbuf[80]; /* at least as big as xxx[] */
+static int ncount;
+
+static void
+_a(int load, int verbose, int extra)
+{
+ int inst;
+ int sts;
+
+ indomp->domain = 123;
+ indomp->serial = 7;
+
+ if (load) {
+ fprintf(stderr, "Load the instance domain ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ }
+
+ fprintf(stderr, "Add foo ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd bar ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "bar", (void *)((__psint_t)0xdeadbeef));
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd java coffee beans ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "java coffee beans", (void *)((__psint_t)0xcafecafe));
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nAdd another one ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "another one", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nHide another one ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, "another one", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull foo ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull foo again, should fail ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCount instances ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE);
+ fprintf(stderr, "entries: %d\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE_ACTIVE);
+ fprintf(stderr, "active entries: %d\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SIZE_INACTIVE);
+ fprintf(stderr, "inactive entries: %d\n", sts);
+
+ fprintf(stderr, "\nProbe bar ...\n");
+ sts = pmdaCacheLookupName(indom, "bar", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nProbe another one (hidden) ...\n");
+ sts = pmdaCacheLookupName(indom, "another one", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ if (load) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ return;
+ }
+
+ if (extra == 0)
+ return;
+
+ indomp->serial = 8;
+ fprintf(stderr, "\nAdd foo in another indom ...\n");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "foo", NULL);
+ fprintf(stderr, "return -> %d", inst);
+ if (inst < 0) fprintf(stderr, ": %s", pmErrStr(inst));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDumpAll(stderr, 0);
+
+ fprintf(stderr, "\nProbe bar (not in this indom) ...\n");
+ sts = pmdaCacheLookupName(indom, "bar", &inst, NULL);
+ fprintf(stderr, "return ->");
+ if (sts >= 0) fprintf(stderr, " %d", inst);
+ if (sts == PMDA_CACHE_INACTIVE) fprintf(stderr, " [inactive]");
+ if (sts < 0) fprintf(stderr, " %d: %s", sts, pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+
+ indomp->serial = 7;
+
+ fprintf(stderr, "\nMark all active ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_ACTIVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nMark all inactive ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_INACTIVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+ fprintf(stderr, "\nCull all ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ if (verbose) __pmdaCacheDump(stderr, indom, 0);
+
+}
+
+static void
+_b(void)
+{
+ int i;
+ int j;
+ int inst;
+ int sts;
+ char cmd[2*MAXPATHLEN+30];
+
+ indomp->domain = 123;
+ indomp->serial = 8;
+
+ sprintf(cmd, "rm -f %s/config/pmda/%s", pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom));
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: %s: exit status %d\n", cmd, sts);
+ sprintf(cmd, "[ -f %s/config/pmda/%s ] || exit 0; cat %s/config/pmda/%s", pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom), pmGetConfig("PCP_VAR_DIR"), pmInDomStr(indom));
+
+ fprintf(stderr, "\nPopulate the instance domain ...\n");
+ j = 1;
+ for (i = 0; i < 20; i++) {
+ strncpy(nbuf, xxx, ncount+3);
+ sprintf(nbuf, "%03d", ncount);
+ ncount++;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xbeef0000+ncount)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ else if (i > 14) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ }
+ if (i == j) {
+ j <<= 1;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ if (i == 6 || i == 13) {
+ fprintf(stderr, "Save ...\n");
+ fprintf(stderr, "Before:\n");
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:1: %s: exit status %d\n", cmd, sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "return -> %d", sts);
+ if (sts < 0) fprintf(stderr, ": %s", pmErrStr(sts));
+ fputc('\n', stderr);
+ fprintf(stderr, "After:\n");
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:2: %s: exit status %d\n", cmd, sts);
+ }
+ if (i == 14) {
+ fprintf(stderr, "Start save after changes ...\n");
+ }
+ if (i > 14) {
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:3: %s: exit status %d\n", cmd, sts);
+ }
+ }
+ __pmdaCacheDump(stderr, indom, 0);
+ strncpy(nbuf, xxx, 11+3);
+ sprintf(nbuf, "%03d", 11);
+ fprintf(stderr, "\nHide %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:4: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Add %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)0xdeadbeef));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:5: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Cull %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:6: %s: exit status %d\n", cmd, sts);
+ fprintf(stderr, "Add %s ...\n", nbuf);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)0xdeadbeef));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ sts = system(cmd);
+ if (sts != 0)
+ fprintf(stderr, "Warning: _b:7: %s: exit status %d\n", cmd, sts);
+
+}
+
+static void
+_c(void)
+{
+ int inst;
+ int sts;
+
+ indomp->domain = 123;
+ indomp->serial = 13;
+
+ fprintf(stderr, "Load the instance domain ...\n");
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, "fubar-001", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"fubar-001\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "fubar-002", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"fubar-002\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, "fubar-003", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"fubar-003\": %s\n", pmErrStr(inst));
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "fubar-009", NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"fubar-009\": %s\n", pmErrStr(inst));
+
+ __pmdaCacheDump(stderr, indom, 0);
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ return;
+ }
+}
+
+static void
+_e(int since)
+{
+ int i;
+ int j;
+ int sts;
+ int inst;
+
+ indomp->domain = 123;
+ indomp->serial = 11;
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ j = 1;
+ for (i = 0; i < 10; i++) {
+ sprintf(nbuf, "boring-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xcaffe000+i)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ if (i == j) {
+ j <<= 1;
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ }
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ fprintf(stderr, "Before purge ...\n");
+ __pmdaCacheDump(stderr, indom, 0);
+
+ sleep(1);
+
+ sts = pmdaCachePurge(indom, since);
+ if (sts < 0) {
+ fprintf(stderr, "pmdaCachePurge failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ fprintf(stderr, "Purged %d entries\nAfter purge ...\n", sts);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ fprintf(stderr, "Save -> %d\n", sts);
+ __pmdaCacheDump(stderr, indom, 0);
+}
+
+static void
+_g(void)
+{
+ int inst;
+ int i;
+
+ indomp->domain = 123;
+ indomp->serial = 7;
+
+ for (i = 0; i < 254; i++) {
+ sprintf(nbuf, "hashing-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, nbuf, (void *)((__psint_t)(0xdeaf0000+i)));
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_ADD failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ if (i % 2 == 0) {
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_HIDE failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ if (i % 7 == 0) {
+ sprintf(nbuf, "hashing-instance-%03d", i);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, nbuf, NULL);
+ if (inst < 0)
+ fprintf(stderr, "PMDA_CACHE_CULL failed for \"%s\": %s\n", nbuf, pmErrStr(inst));
+ }
+ }
+
+ __pmdaCacheDump(stderr, indom, 1);
+
+ _a(0, 0, 0);
+
+ __pmdaCacheDump(stderr, indom, 1);
+}
+
+static char *h_tab[] = { "foo", "foobar", "foo bar", NULL };
+
+static void
+_h(void)
+{
+ int sts;
+ int inst;
+ int i;
+
+ indomp->domain = 123;
+ indomp->serial = 17;
+
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ return;
+ }
+
+ for (i = 0; h_tab[i] != NULL; i++) {
+ fprintf(stderr, "[%s]\n", h_tab[i]);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, h_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, h_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+
+ }
+}
+
+static char *i_tab[] = { "ernie", "bert", "kermit", "oscar", "big bird", "miss piggy", NULL };
+
+/*
+ * revised dirty cache semantics
+ * style & 1 => SAVE
+ * style & 2 => SYNC
+ */
+static void
+_i(int style)
+{
+ int sts;
+ int inst;
+ int i;
+ static int first = 1;
+
+ indomp->domain = 123;
+ indomp->serial = 15;
+
+ if (first) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_LOAD);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_LOAD failed: %s\n", pmErrStr(sts));
+ }
+ first = 0;
+ }
+
+ for (i = 0; i_tab[i] != NULL; i++) {
+ fprintf(stderr, "[%s]\n", i_tab[i]);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SAVE -> %d\n", sts);
+
+ if (i == 0) {
+ /* last one -> INACTIVE */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+ }
+ else if (i == 1) {
+ /* last one -> INACTIVE -> ACTIVE */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_HIDE, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "HIDE failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "HIDE -> %d\n", inst);
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ }
+ else if (i == 2) {
+ /* last one -> EMPTY */
+ inst = pmdaCacheStore(indom, PMDA_CACHE_CULL, i_tab[i], NULL);
+ if (inst < 0) {
+ fprintf(stderr, "CULL failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "CULL -> %d\n", inst);
+ }
+ else if (i == 3) {
+ /* add another one */
+ fprintf(stderr, "extra [%s]\n", "felix-the-cat");
+ inst = pmdaCacheStore(indom, PMDA_CACHE_ADD, "felix-the-cat", NULL);
+ if (inst < 0) {
+ fprintf(stderr, "ADD failed: %s\n", pmErrStr(inst));
+ continue;
+ }
+ fprintf(stderr, "ADD -> %d\n", inst);
+ }
+ else if (i == 4) {
+ /* do nothing! */
+ ;
+ }
+ else {
+ /* empty cache */
+ sts = pmdaCacheOp(indom, PMDA_CACHE_CULL);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_CULL failed: %s\n", pmErrStr(sts));
+ return;
+ }
+ fprintf(stderr, "CULL ALL -> %d\n", inst);
+ }
+
+ if (style & 1) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SAVE);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SAVE failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SAVE -> %d\n", sts);
+ }
+
+ if (style & 2) {
+ sts = pmdaCacheOp(indom, PMDA_CACHE_SYNC);
+ if (sts < 0) {
+ fprintf(stderr, "PMDA_CACHE_SYNC failed: %s\n", pmErrStr(sts));
+ }
+ else
+ fprintf(stderr, "SYNC -> %d\n", sts);
+ }
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int errflag = 0;
+ int sts;
+ int c;
+
+ __pmSetProgname(argv[0]);
+
+ indomp = (__pmInDom_int *)&indom;
+
+ while ((c = getopt(argc, argv, "D:")) != EOF) {
+ switch (c) {
+
+#ifdef PCP_DEBUG
+ case 'D': /* debug flag */
+ sts = __pmParseDebug(optarg);
+ if (sts < 0) {
+ fprintf(stderr, "%s: unrecognized debug flag specification (%s)\n",
+ pmProgname, optarg);
+ errflag++;
+ }
+ else
+ pmDebug |= sts;
+ break;
+#endif
+
+ case '?':
+ default:
+ errflag++;
+ break;
+ }
+ }
+
+ if (errflag) {
+ fprintf(stderr, "Usage: %s [-D...] [a|b|c|d|...|i 1|2|3}\n", pmProgname);
+ exit(1);
+ }
+
+ while (optind < argc) {
+ if (strcmp(argv[optind], "a") == 0) _a(0, 1, 1);
+ else if (strcmp(argv[optind], "b") == 0) _b();
+ else if (strcmp(argv[optind], "c") == 0) _c();
+ else if (strcmp(argv[optind], "d") == 0) _a(1, 0, 1);
+ else if (strcmp(argv[optind], "e") == 0) _e(0);
+ else if (strcmp(argv[optind], "f") == 0) _e(3600);
+ else if (strcmp(argv[optind], "g") == 0) _g();
+ else if (strcmp(argv[optind], "h") == 0) _h();
+ else if (strcmp(argv[optind], "i") == 0) {
+ optind++;
+ _i(atoi(argv[optind]));
+ }
+ else
+ fprintf(stderr, "torture_cache: no idea what to do with option \"%s\"\n", argv[optind]);
+ optind++;
+ }
+
+ exit(0);
+}