#include #include #include #include #include #include #include #include #include #include #include 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