diff options
| author | tv <tv@krebsco.de> | 2019-12-29 15:51:29 +0100 | 
|---|---|---|
| committer | tv <tv@krebsco.de> | 2019-12-29 16:29:43 +0100 | 
| commit | 9585885012dd6cd43516b81a85b6b25ae2b044ab (patch) | |
| tree | 24f7ec7c2e839d009990e446c8dcd5fdb88a6567 /tests/stats | |
| parent | 8ec8e8a051c57230443e97279b274fcb620e9540 (diff) | |
[WIP] prometheus module fake_stats testprometheus
Based on 51053ebb9ea7068b7a4e6bff11a470d4c4dedb37
Diffstat (limited to 'tests/stats')
| -rw-r--r-- | tests/stats/fake_stats.c | 116 | 
1 files changed, 116 insertions, 0 deletions
| diff --git a/tests/stats/fake_stats.c b/tests/stats/fake_stats.c new file mode 100644 index 00000000..ab30207a --- /dev/null +++ b/tests/stats/fake_stats.c @@ -0,0 +1,116 @@ +#include <talloc.h> +#include <osmocom/core/application.h> +#include <osmocom/core/logging.h> +#include <osmocom/core/utils.h> +#include <osmocom/core/stats.h> +#include <osmocom/vty/vty.h> +#include <osmocom/vty/misc.h> +#include <osmocom/vty/logging.h> +#include <osmocom/vty/telnet_interface.h> +#include <osmocom/vty/stats.h> +#include <osmocom/vty/prometheus.h> + +static struct vty_app_info vty_info = { +	.name		= "fake_stats", +	.version	= "1", +}; + +static const struct log_info_cat categories[] = { +}; + +const struct log_info log_info = { +	.cat = categories, +	.num_cat = ARRAY_SIZE(categories), +}; + +int main(int argc, char **argv) +{ +	int rc; +	void *ctx = talloc_named_const(NULL, 1, "fake_stats"); +	vty_info.tall_ctx = ctx; + +	osmo_init_logging2(ctx, &log_info); + +	osmo_stats_init(ctx); +	// osmo_prom_init(ctx, 12346); + +//int osmo_stat_item_init(void *tall_ctx); + +	vty_init(&vty_info); +	osmo_stats_vty_add_cmds(); + +	logging_vty_add_cmds(); +	osmo_talloc_vty_add_cmds(); + +	enum test_ctr { +		TEST_A_CTR, +		TEST_B_CTR, +	}; +	static const struct rate_ctr_desc ctr_description[] = { +		[TEST_A_CTR] = { "ctr:a", "The A counter value"}, +		[TEST_B_CTR] = { "ctr:b", "The B counter value"}, +	}; +	static const struct rate_ctr_group_desc ctrg_desc = { +		.group_name_prefix = "ctr-test:one", +		.group_description = "Counter test number 1", +		.num_ctr = ARRAY_SIZE(ctr_description), +		.ctr_desc = ctr_description, +		.class_id = OSMO_STATS_CLASS_SUBSCRIBER, +	}; +	struct rate_ctr_group *ctrg1 = rate_ctr_group_alloc(ctx, &ctrg_desc, 1); + + +enum test_items { +	TEST_A_ITEM, +	TEST_B_ITEM, +}; +static const struct osmo_stat_item_desc item_description[] = { +	[TEST_A_ITEM] = { "item.a", "The A value", "ma", 4, -1 }, +	[TEST_B_ITEM] = { "item.b", "The B value", "kb", 7, -1 }, +}; +static const struct osmo_stat_item_group_desc statg_desc = { +	.group_name_prefix = "test.one", +	.group_description = "Test number 1", +	.num_items = ARRAY_SIZE(item_description), +	.item_desc = item_description, +	.class_id = OSMO_STATS_CLASS_PEER, +}; + +	struct osmo_stat_item_group *statg = +		osmo_stat_item_group_alloc(NULL, &statg_desc, 0); + +	osmo_stat_item_set(statg->items[TEST_A_ITEM], 23); +	osmo_stat_item_set(statg->items[TEST_B_ITEM], 42); + +//void rate_ctr_add(struct rate_ctr *ctr, int inc); +// osmo_stat_item + +	/* start telnet after reading config for vty_get_bind_addr() */ +	rc = telnet_init_dynif(ctx, NULL, +			       vty_get_bind_addr(), 12345); +	if (rc < 0) +		return 2; + +	// TODO replace vty_get_bind_addr? +	rc = osmo_prom_init_dynif(ctx, vty_get_bind_addr(), 12346); +	if (rc < 0) +		return 2; + +	int a = 0; +	int b = 0; + +	while (1) { +		log_reset_context(); +		osmo_select_main_ctx(0); +		rate_ctr_add(&ctrg1->ctr[TEST_A_CTR], 1); + +		osmo_stat_item_set(statg->items[TEST_A_ITEM], a); +		osmo_stat_item_set(statg->items[TEST_B_ITEM], b); + +		a = (a + 1) % 23; +		b = (b + 1) % 42; +	} +	return 0; +} + +// telnet localhost 12345 | 
