diff options
Diffstat (limited to 'qa/src/mmv_genstats.c')
-rw-r--r-- | qa/src/mmv_genstats.c | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/qa/src/mmv_genstats.c b/qa/src/mmv_genstats.c new file mode 100644 index 0000000..e10e19f --- /dev/null +++ b/qa/src/mmv_genstats.c @@ -0,0 +1,131 @@ +/* + * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2009 Aconex. All Rights Reserved. + */ + +#include <pcp/pmapi.h> +#include <pcp/mmv_stats.h> + +static mmv_instances_t test_instances [] = { + { 0, "zero" }, + { 1, "hero" }, +}; + +static mmv_instances_t nest_instances [] = { + { 0, "bird" }, + { 1, "tree" }, + { 2, "eggs" }, +}; + +static mmv_indom_t indoms[] = { + { .serial = 1, + .count = 2, + .instances = test_instances, + .shorttext = "We can be heroes", + .helptext = "We can be heroes, just for one day", + }, + { .serial = 2, + .count = 3, + .instances = nest_instances, + /* exercise no-help-text case */ + }, +}; + +static mmv_metric_t metrics[] = { + { .name = "counter", + .item = 1, + .type = MMV_TYPE_U32, + .semantics = MMV_SEM_COUNTER, + .dimension = MMV_UNITS(0,0,1,0,0,PM_COUNT_ONE), + .shorttext = "test counter metric", + .helptext = "Yes, this is a test counter metric", + }, + { .name = "discrete", + .item = 2, + .type = MMV_TYPE_I32, + .semantics = MMV_SEM_DISCRETE, + .dimension = MMV_UNITS(0,0,0,0,0,0), + .shorttext = "test discrete metric", + .helptext = "Yes, this is a test discrete metric", + }, + { .name = "indom", + .item = 3, + .type = MMV_TYPE_U32, + .semantics = MMV_SEM_INSTANT, + .dimension = MMV_UNITS(0,0,1,0,0,PM_COUNT_ONE), + .indom = 1, + /* exercise no-help-text, no indom case */ + }, + { .name = "interval", + .item = 4, + .type = MMV_TYPE_ELAPSED, + .semantics = MMV_SEM_COUNTER, + .dimension = MMV_UNITS(0,1,0,0,PM_TIME_USEC,0), + .indom = 2, + /* exercise no-help-text case */ + }, + { .name = "string", + .item = 5, + .type = MMV_TYPE_STRING, + .dimension = MMV_UNITS(0,0,0,0,0,0), + .semantics = MMV_SEM_INSTANT, + /* exercise no-help-text, string value case */ + }, + { .name = "strings", + .item = 6, + .type = MMV_TYPE_STRING, + .semantics = MMV_SEM_INSTANT, + .dimension = MMV_UNITS(0,0,0,0,0,0), + .indom = 1, + .shorttext = "test string metrics", + .helptext = "Yes, this is a test string metric with instances", + }, +}; + +static inline int indom_count() { return sizeof(indoms)/sizeof(indoms[0]); } +static inline int metric_count() { return sizeof(metrics)/sizeof(metrics[0]); } + +int +main(int ac, char * av[]) +{ + pmAtomValue * atom; + char * file = (ac > 1) ? av[1] : "test"; + int sleeper = (ac > 2) ? atoi(av[2]) : 0; + void * addr = mmv_stats_init(file, 0, 0, + metrics, metric_count(), indoms, indom_count()); + + if (!addr) { + fprintf(stderr, "mmv_stats_init failed : %s\n", strerror(errno)); + return 1; + } + + /* start an interval */ + atom = mmv_stats_interval_start(addr, NULL, "interval", "eggs"); + + /* add ... */ + mmv_stats_add(addr, "counter", "", 40); + /* add 1 ... */ + mmv_stats_inc(addr, "counter", ""); + + /* set string values */ + mmv_stats_set_string(addr, "string", "", "g'day world"); + mmv_stats_set_strlen(addr, "strings", "zero", "00oo00oo00", 10); + mmv_stats_set_strlen(addr, "strings", "zero", "00oo00oo00", 6); + mmv_stats_set_strlen(addr, "strings", "hero", "ZERO", 4); + mmv_stats_set_strlen(addr, "strings", "hero", "", 0); + + /* set discrete value ... */ + mmv_stats_set(addr, "discrete", "", 41); + mmv_stats_inc(addr, "discrete", ""); + + /* add to instance or another if first doesn't exist */ + mmv_stats_add_fallback(addr, "indom", "foobar", "unknown", 42); + mmv_stats_add_fallback(addr, "indom", "zero", "unknown", 43); + + sleep(sleeper); + + /* end an interval */ + mmv_stats_interval_end(addr, atom); + + return 0; +} |