/* * Copyright (c) 1995-2001 Silicon Graphics, Inc. All Rights Reserved. * Copyright (c) 2009 Aconex. All Rights Reserved. */ #include #include 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; }