]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
stats: Make metrics struct a global variable.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 14 Nov 2019 22:57:19 +0000 (23:57 +0100)
committermartti.rannanjarvi <martti.rannanjarvi@open-xchange.com>
Sat, 18 Apr 2020 14:55:11 +0000 (14:55 +0000)
src/stats/client-reader.c
src/stats/client-reader.h
src/stats/client-writer.c
src/stats/client-writer.h
src/stats/main.c
src/stats/stats-common.h
src/stats/test-client-reader.c
src/stats/test-client-writer.c
src/stats/test-stats-common.c
src/stats/test-stats-common.h
src/stats/test-stats-metrics.c

index 03145fb540292b9b7426567600f6edb973e9d022..af75fc951655fe070b92fb496cabc7bd72675235 100644 (file)
 
 struct reader_client {
        struct connection conn;
-       struct stats_metrics *metrics;
 };
 
 static struct connection_list *reader_clients = NULL;
 
-void client_reader_create(int fd, struct stats_metrics *metrics)
+void client_reader_create(int fd)
 {
        struct reader_client *client;
 
        client = i_new(struct reader_client, 1);
-       client->metrics = metrics;
        connection_init_server(reader_clients, &client->conn,
                               "stats-reader", fd, fd);
 }
@@ -110,7 +108,7 @@ reader_client_input_dump(struct reader_client *client, const char *const *args)
        const struct metric *metric;
 
        o_stream_cork(client->conn.output);
-       iter = stats_metrics_iterate_init(client->metrics);
+       iter = stats_metrics_iterate_init(stats_metrics);
        while ((metric = stats_metrics_iterate(iter)) != NULL) T_BEGIN {
                string_t *str = t_str_new(128);
                str_append_tabescaped(str, metric->name);
@@ -130,7 +128,7 @@ reader_client_input_dump_reset(struct reader_client *client,
                               const char *const *args)
 {
        (void)reader_client_input_dump(client, args);
-       stats_metrics_reset(client->metrics);
+       stats_metrics_reset(stats_metrics);
        return 1;
 }
 
index e011b7776700592048b319e184d9fb33cb5eb34c..2acab19ae7bf0a01fee72c87d3a855421d25fddf 100644 (file)
@@ -3,7 +3,7 @@
 
 struct stats_metrics;
 
-void client_reader_create(int fd, struct stats_metrics *metrics);
+void client_reader_create(int fd);
 
 void client_readers_init(void);
 void client_readers_deinit(void);
index d9638b74bb2ed619ca3b9f80babcaa1225da1626..c0e790237f26b1ad26df25841475f232480ccd16 100644 (file)
@@ -24,7 +24,6 @@ struct stats_event {
 
 struct writer_client {
        struct connection conn;
-       struct stats_metrics *metrics;
 
        struct stats_event *events;
        HASH_TABLE(struct stats_event *, struct stats_event *) events_hash;
@@ -37,7 +36,7 @@ static void client_writer_send_handshake(struct writer_client *client)
        string_t *str = t_str_new(128);
 
        str_append(str, "FILTER\t");
-       event_filter_export(stats_metrics_get_event_filter(client->metrics), str);
+       event_filter_export(stats_metrics_get_event_filter(stats_metrics), str);
        str_append_c(str, '\n');
        o_stream_nsend(client->conn.output, str_data(str), str_len(str));
 }
@@ -53,12 +52,11 @@ static int stats_event_cmp(const struct stats_event *event1,
        return event1->id == event2->id ? 0 : 1;
 }
 
-void client_writer_create(int fd, struct stats_metrics *metrics)
+void client_writer_create(int fd)
 {
        struct writer_client *client;
 
        client = i_new(struct writer_client, 1);
-       client->metrics = metrics;
        hash_table_create(&client->events_hash, default_pool, 0,
                          stats_event_hash, stats_event_cmp);
 
@@ -126,7 +124,7 @@ writer_client_run_event(struct writer_client *client,
                event_unref(&event);
                return FALSE;
        }
-       stats_metrics_event(client->metrics, event, &ctx);
+       stats_metrics_event(stats_metrics, event, &ctx);
        *event_r = event;
        return TRUE;
 }
index fee633d94eb833acd1e73d56b8eef88305ee1392..dbb9e75856d523b2217c9b9a38ffdffba31ef0ce 100644 (file)
@@ -3,7 +3,7 @@
 
 struct stats_metrics;
 
-void client_writer_create(int fd, struct stats_metrics *metrics);
+void client_writer_create(int fd);
 
 void client_writers_init(void);
 void client_writers_deinit(void);
index 7d845249976563a54dec4a8232adae0daeed5d6e..1e8283fa50f7bd935574678d3a13631039eb0ec8 100644 (file)
@@ -11,8 +11,7 @@
 #include "client-reader.h"
 
 const struct stats_settings *stats_settings;
-
-static struct stats_metrics *metrics;
+struct stats_metrics *stats_metrics;
 
 static bool client_is_writer(const char *path)
 {
@@ -36,9 +35,9 @@ static bool client_is_writer(const char *path)
 static void client_connected(struct master_service_connection *conn)
 {
        if (client_is_writer(conn->name))
-               client_writer_create(conn->fd, metrics);
+               client_writer_create(conn->fd);
        else
-               client_reader_create(conn->fd, metrics);
+               client_reader_create(conn->fd);
        master_service_client_connection_accept(conn);
 }
 
@@ -56,10 +55,9 @@ static void main_preinit(void)
 static void main_init(void)
 {
        void **sets = master_service_settings_get_others(master_service);
-
        stats_settings = sets[0];
 
-       metrics = stats_metrics_init(stats_settings);
+       stats_metrics = stats_metrics_init(stats_settings);
        stats_event_categories_init();
        client_readers_init();
        client_writers_init();
@@ -70,7 +68,7 @@ static void main_deinit(void)
        client_readers_deinit();
        client_writers_deinit();
        stats_event_categories_deinit();
-       stats_metrics_deinit(&metrics);
+       stats_metrics_deinit(&stats_metrics);
 }
 
 int main(int argc, char *argv[])
index 5f833bbd5250d4a8034187fba56987a61e34b36d..932ea32c37360766885dff547c1d59ab39e5f3d3 100644 (file)
@@ -5,5 +5,6 @@
 #include "stats-settings.h"
 
 extern const struct stats_settings *stats_settings;
+extern struct stats_metrics *stats_metrics;
 
 #endif
index 77aeb9f2eeddb88e16b1f68867ec2ab0872c6deb..710e9901b2ede5430be4869d5e73b5cc8da5d642 100644 (file)
@@ -35,9 +35,10 @@ bool test_stats_callback(struct event *event,
                         struct failure_context *ctx, const char *fmt ATTR_UNUSED,
                         va_list args ATTR_UNUSED)
 {
-       if (metrics != NULL) {
-               stats_metrics_event(metrics, event, ctx);
-               struct event_filter *filter = stats_metrics_get_event_filter(metrics);
+       if (stats_metrics != NULL) {
+               stats_metrics_event(stats_metrics, event, ctx);
+               struct event_filter *filter =
+                       stats_metrics_get_event_filter(stats_metrics);
                return !event_filter_match(filter, event, ctx);
        }
        return TRUE;
@@ -71,7 +72,7 @@ static void test_dump_metrics(void)
 
        struct ioloop *loop = io_loop_create();
 
-       client_reader_create(fds[1], metrics);
+       client_reader_create(fds[1]);
        connection_init_client_fd(conn_list, conn, "stats", fds[0], fds[0]);
        o_stream_nsend_str(conn->output, "DUMP\tcount\n");
 
@@ -161,7 +162,7 @@ static void test_dump_metrics_group_by(void)
 
        struct ioloop *loop = io_loop_create();
 
-       client_reader_create(fds[1], metrics);
+       client_reader_create(fds[1]);
        connection_init_client_fd(conn_list, &conn->conn, "stats", fds[0], fds[0]);
        o_stream_nsend_str(conn->conn.output, "DUMP\tcount\n");
 
index 4561eb07e23a4a59102eec20bc246f7f8e813ed1..c7f590996e5b4b2988a631d3ed3c6be970d949e4 100644 (file)
@@ -61,7 +61,7 @@ static void test_write_one(struct event *event ATTR_UNUSED)
 
        struct ioloop *loop = io_loop_create();
 
-       client_writer_create(fds[1], metrics);
+       client_writer_create(fds[1]);
        connection_init_client_fd(conn_list, conn, "stats", fds[0], fds[0]);
 
        last_sent_event = event;
@@ -89,7 +89,7 @@ bool test_stats_callback(struct event *event,
                return TRUE;
 
        recurse_back = TRUE;
-       if (metrics != NULL) {
+       if (stats_metrics != NULL) {
                test_write_one(event);
        }
        recurse_back = FALSE;
index f6e8f290acfa3f42f826ff6e43a602893498d213..7c94ff530a94a2b39b6e1841f4491b29cd48552a 100644 (file)
@@ -13,7 +13,7 @@ struct event_category child_test_category = {
 };
 
 pool_t test_pool;
-struct stats_metrics *metrics = NULL;
+struct stats_metrics *stats_metrics = NULL;
 
 static bool callback_added = FALSE;
 
@@ -50,12 +50,12 @@ void test_init(const char *settings_blob)
        stats_event_category_register(child_test_category.name,
                                      &test_category);
        struct stats_settings *set = read_settings(settings_blob);
-       metrics = stats_metrics_init(set);
+       stats_metrics = stats_metrics_init(set);
 }
 
 void test_deinit(void)
 {
-       stats_metrics_deinit(&metrics);
+       stats_metrics_deinit(&stats_metrics);
        stats_event_categories_deinit();
        pool_unref(&test_pool);
 }
@@ -72,7 +72,8 @@ void test_event_send(struct event *event)
 
 uint64_t get_stats_dist_field(const char *metric_name, enum stats_dist_field field)
 {
-        struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics);
+        struct stats_metrics_iter *iter =
+               stats_metrics_iterate_init(stats_metrics);
         const struct metric *metric;
         while((metric = stats_metrics_iterate(iter)) != NULL)
                 if (strcmp(metric->name, metric_name) == 0)
index 06daca3c406c75f68402ee76ab6bd56f77db6134..86c03f4c8c76cfe3c04e04fca69f03e0f47f59bc 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef TEST_STATS_COMMON
 #define TEST_STATS_COMMON 1
 
-#include "lib.h"
+#include "stats-common.h"
 #include "event-filter.h"
 #include "istream.h"
 #include "settings-parser.h"
@@ -16,8 +16,6 @@ extern struct event_category test_category;
 extern struct event_category child_test_category;
 extern pool_t test_pool;
 
-extern struct stats_metrics *metrics;
-
 bool test_stats_callback(struct event *event,
                         enum event_callback_type type ATTR_UNUSED,
                         struct failure_context *ctx, const char *fmt ATTR_UNUSED,
index c255b7733309bec6afcb0f22306bac8d584b90e1..558ad7bbbbf106156fe503f0824ab1c597e944d4 100644 (file)
@@ -8,9 +8,10 @@ bool test_stats_callback(struct event *event,
                         struct failure_context *ctx, const char *fmt ATTR_UNUSED,
                         va_list args ATTR_UNUSED)
 {
-       if (metrics != NULL) {
-               stats_metrics_event(metrics, event, ctx);
-               struct event_filter *filter = stats_metrics_get_event_filter(metrics);
+       if (stats_metrics != NULL) {
+               stats_metrics_event(stats_metrics, event, ctx);
+               struct event_filter *filter =
+                       stats_metrics_get_event_filter(stats_metrics);
                return !event_filter_match(filter, event, ctx);
        }
        return TRUE;
@@ -58,7 +59,8 @@ static void test_stats_metrics_filter(void)
        test_init(settings_blob_2);
 
        /* check filter */
-       struct event_filter *filter = stats_metrics_get_event_filter(metrics);
+       struct event_filter *filter =
+               stats_metrics_get_event_filter(stats_metrics);
        string_t *str_filter = t_str_new(64);
        event_filter_export(filter, str_filter);
        test_assert_strcmp("ntest       ftest_field     value   ",
@@ -187,7 +189,7 @@ static void test_stats_metrics_group_by_discrete_real(const struct discrete_test
        test_assert(get_stats_dist_field("test", STATS_DIST_COUNT) == test->num_values * test->num_values);
 
        /* analyze the structure */
-       struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics);
+       struct stats_metrics_iter *iter = stats_metrics_iterate_init(stats_metrics);
        const struct metric *root_metric = stats_metrics_iterate(iter);
        stats_metrics_iterate_deinit(&iter);
 
@@ -363,7 +365,7 @@ static void test_stats_metrics_group_by_quantized_real(const struct quantized_te
        test_assert(get_stats_dist_field("test", STATS_DIST_COUNT) == test->num_inputs);
 
        /* analyze the structure */
-       struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics);
+       struct stats_metrics_iter *iter = stats_metrics_iterate_init(stats_metrics);
        const struct metric *root_metric = stats_metrics_iterate(iter);
        stats_metrics_iterate_deinit(&iter);