summaryrefslogtreecommitdiff
path: root/qa/src/check_import.c
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/src/check_import.c
downloadpcp-debian.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/src/check_import.c')
-rw-r--r--qa/src/check_import.c175
1 files changed, 175 insertions, 0 deletions
diff --git a/qa/src/check_import.c b/qa/src/check_import.c
new file mode 100644
index 0000000..0e3ef3c
--- /dev/null
+++ b/qa/src/check_import.c
@@ -0,0 +1,175 @@
+/*
+ * Exercise libpcp_import
+ *
+ * Copyright (c) 2009 Ken McDonell. All Rights Reserved.
+ */
+
+#include <pcp/pmapi.h>
+#include <pcp/impl.h>
+#include <pcp/import.h>
+
+static void
+check(int sts, char *name)
+{
+ if (sts < 0) fprintf(stderr, "%s: Error: %s\n", name, pmiErrStr(sts));
+ else {
+ fprintf(stderr, "%s: OK", name);
+ if (sts != 0) fprintf(stderr, " ->%d", sts);
+ fputc('\n', stderr);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ int sts;
+ int ctx1;
+ int ctx2;
+ int hdl1;
+ int hdl2;
+ int errflag = 0;
+ int c;
+#ifdef PCP_DEBUG
+ static char *debug = "[-D N] ";
+#else
+ static char *debug = "";
+#endif
+ static char *usage = "";
+
+ __pmSetProgname(argv[0]);
+
+ 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) {
+ printf("Usage: %s %s%s\n", pmProgname, debug, usage);
+ exit(1);
+ }
+
+ pmiDump();
+
+ ctx1 = pmiStart("myarchive", 0);
+ check(ctx1, "pmiStart");
+ pmiDump();
+
+ sts = pmiSetHostname("somehost.com");
+ check(sts, "pmiSetHostname");
+ sts = pmiSetTimezone("GMT-12");
+ check(sts, "pmiSetTimezone");
+
+ sts = pmiUseContext(3);
+ check(sts, "pmiUseContext");
+ sts = pmiUseContext(ctx1);
+ check(sts, "pmiUseContext");
+
+ sts = pmiAddMetric("my.metric.foo", pmid_build(245,0,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.bar", PM_ID_NULL, PM_TYPE_U64, pmInDom_build(245,1), PM_SEM_INSTANT, pmiUnits(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.foo", 1, 2, 3, 4, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.long", PM_ID_NULL, PM_TYPE_64, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.double", PM_ID_NULL, PM_TYPE_DOUBLE, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.string", PM_ID_NULL, PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.dup.pmid", pmid_build(245,0,3), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+ sts = pmiAddMetric("my.metric.float", PM_ID_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_DISCRETE, pmiUnits(0,0,0,0,0,0));
+ check(sts, "pmiAddMetric");
+
+ sts = pmiAddInstance(pmInDom_build(245,1), "eek really", 1);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "eek", 2);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "blah", 3);
+ check(sts, "pmiAddInstance");
+ sts = pmiAddInstance(pmInDom_build(245,1), "not-blah-again", 3);
+ check(sts, "pmiAddInstance");
+
+ sts = pmiPutValue("my.metric.foo", NULL, "123");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.foo", "should be null", "1234");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "eek", "4567890123456");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "blah", "4567890123457");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", "not-blah", "4567890123457");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.bar", NULL, "42");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.string", "", "a new string value");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.long", "", "123456789012345");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.double", "", "1.23456789012");
+ check(sts, "pmiPutValue");
+ sts = pmiPutValue("my.metric.float", "", "-1.234567");
+ check(sts, "pmiPutValue");
+
+ hdl1 = pmiGetHandle("my.metric.foo", "");
+ check(hdl1, "pmiGetHandle");
+ sts = pmiGetHandle("my.bad", "");
+ check(sts, "pmiGetHandle");
+ sts = pmiPutValueHandle(hdl1, "321");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValueHandle(0, "error");
+ check(sts, "pmiPutValueHandle");
+
+ pmiDump();
+
+ sts = pmiWrite((int)(365.25*30*24*60*60), 0);
+ check(sts, "pmiWrite");
+ sts = pmiPutValueHandle(hdl1, "4321");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValue("my.metric.string", "", "a second string value");
+ check(sts, "pmiPutValue");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+ sts = pmiPutValue("my.metric.string", "", "a third string value");
+ check(sts, "pmiPutValue");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+ sts = pmiWrite(-1, -1);
+ check(sts, "pmiWrite");
+
+ sts = pmiEnd();
+ check(sts, "pmiEnd");
+
+ ctx2 = pmiStart("myotherarchive", 1);
+ check(ctx2, "pmiStart");
+ sts = pmiAddInstance(pmInDom_build(245,1), "other", 2);
+ check(sts, "pmiAddInstance");
+ hdl2 = pmiGetHandle("my.metric.bar", "eek");
+ check(hdl2, "pmiGetHandle");
+ sts = pmiPutValueHandle(hdl2, "6543210987654");
+ check(sts, "pmiPutValueHandle");
+ sts = pmiPutValueHandle(3, "error");
+ check(sts, "pmiPutValueHandle");
+
+ pmiDump();
+
+ exit(0);
+}