X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_vl_lookup_test.c;h=6a2676a89e1d8ccee1cddc6735d2f5e7d9335ff7;hb=0003c4d3c184f0f437499d6073cd023dc7b659c2;hp=6265b321f0b5481edf6bda51cb572793effdb254;hpb=d6d42818a8794a756727a6bb56e3680c7eefd6f9;p=collectd.git diff --git a/src/utils_vl_lookup_test.c b/src/utils_vl_lookup_test.c index 6265b321..6a2676a8 100644 --- a/src/utils_vl_lookup_test.c +++ b/src/utils_vl_lookup_test.c @@ -1,6 +1,6 @@ /** - * collectd - src/utils_vl_lookup_test.c - * Copyright (C) 2012 Florian Forster + * collectd - src/tests/test_utils_vl_lookup.c + * Copyright (C) 2012 Florian Forster * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -24,6 +24,7 @@ * Florian Forster **/ +#include "testing.h" #include "collectd.h" #include "utils_vl_lookup.h" @@ -46,7 +47,8 @@ static int lookup_obj_callback (data_set_t const *ds, identifier_t *class = user_class; identifier_t *obj = user_obj; - assert (expect_new_obj == have_new_obj); + OK1(expect_new_obj == have_new_obj, + (expect_new_obj ? "New obj is created." : "Updating existing obj.")); memcpy (&last_class_ident, class, sizeof (last_class_ident)); memcpy (&last_obj_ident, obj, sizeof (last_obj_ident)); @@ -63,7 +65,7 @@ static void *lookup_class_callback (data_set_t const *ds, identifier_t *class = user_class; identifier_t *obj; - assert (expect_new_obj); + OK(expect_new_obj); memcpy (&last_class_ident, class, sizeof (last_class_ident)); @@ -82,11 +84,11 @@ static void *lookup_class_callback (data_set_t const *ds, static void checked_lookup_add (lookup_t *obj, /* {{{ */ char const *host, char const *plugin, char const *plugin_instance, - char const *type, char const *type_instance) + char const *type, char const *type_instance, + unsigned int group_by) { identifier_t ident; void *user_class; - int status; memset (&ident, 0, sizeof (ident)); strncpy (ident.host, host, sizeof (ident.host)); @@ -98,8 +100,7 @@ static void checked_lookup_add (lookup_t *obj, /* {{{ */ user_class = malloc (sizeof (ident)); memmove (user_class, &ident, sizeof (ident)); - status = lookup_add (obj, &ident, user_class); - assert (status == 0); + OK(lookup_add (obj, &ident, group_by, user_class) == 0); } /* }}} void test_add */ static int checked_lookup_search (lookup_t *obj, @@ -135,15 +136,15 @@ static lookup_t *checked_lookup_create (void) lookup_obj_callback, (void *) free, (void *) free); - assert (obj != NULL); + OK(obj != NULL); return (obj); } -static void testcase0 (void) +DEF_TEST(group_by_specific_host) { lookup_t *obj = checked_lookup_create (); - checked_lookup_add (obj, "/any/", "test", "", "test", "/all/"); + checked_lookup_add (obj, "/.*/", "test", "", "test", "/.*/", LU_GROUP_BY_HOST); checked_lookup_search (obj, "host0", "test", "", "test", "0", /* expect new = */ 1); checked_lookup_search (obj, "host0", "test", "", "test", "1", @@ -154,13 +155,14 @@ static void testcase0 (void) /* expect new = */ 0); lookup_destroy (obj); + return (0); } -static void testcase1 (void) +DEF_TEST(group_by_any_host) { lookup_t *obj = checked_lookup_create (); - checked_lookup_add (obj, "/any/", "/all/", "/all/", "test", "/all/"); + checked_lookup_add (obj, "/.*/", "/.*/", "/.*/", "test", "/.*/", LU_GROUP_BY_HOST); checked_lookup_search (obj, "host0", "plugin0", "", "test", "0", /* expect new = */ 1); checked_lookup_search (obj, "host0", "plugin0", "", "test", "1", @@ -179,15 +181,16 @@ static void testcase1 (void) /* expect new = */ 0); lookup_destroy (obj); + return (0); } -static void testcase2 (void) +DEF_TEST(multiple_lookups) { lookup_t *obj = checked_lookup_create (); int status; - checked_lookup_add (obj, "/any/", "plugin0", "", "test", "/all/"); - checked_lookup_add (obj, "/any/", "/all/", "", "test", "ti0"); + checked_lookup_add (obj, "/.*/", "plugin0", "", "test", "/.*/", LU_GROUP_BY_HOST); + checked_lookup_add (obj, "/.*/", "/.*/", "", "test", "ti0", LU_GROUP_BY_HOST); status = checked_lookup_search (obj, "host0", "plugin1", "", "test", "", /* expect new = */ 0); @@ -203,12 +206,44 @@ static void testcase2 (void) assert (status == 2); lookup_destroy (obj); + return (0); +} + +DEF_TEST(regex) +{ + lookup_t *obj = checked_lookup_create (); + + checked_lookup_add (obj, "/^db[0-9]\\./", "cpu", "/.*/", "cpu", "/.*/", + LU_GROUP_BY_TYPE_INSTANCE); + checked_lookup_search (obj, "db0.example.com", "cpu", "0", "cpu", "user", + /* expect new = */ 1); + checked_lookup_search (obj, "db0.example.com", "cpu", "0", "cpu", "idle", + /* expect new = */ 1); + checked_lookup_search (obj, "db0.example.com", "cpu", "1", "cpu", "user", + /* expect new = */ 0); + checked_lookup_search (obj, "db0.example.com", "cpu", "1", "cpu", "idle", + /* expect new = */ 0); + checked_lookup_search (obj, "app0.example.com", "cpu", "0", "cpu", "user", + /* expect new = */ 0); + checked_lookup_search (obj, "app0.example.com", "cpu", "0", "cpu", "idle", + /* expect new = */ 0); + checked_lookup_search (obj, "db1.example.com", "cpu", "0", "cpu", "user", + /* expect new = */ 0); + checked_lookup_search (obj, "db1.example.com", "cpu", "0", "cpu", "idle", + /* expect new = */ 0); + checked_lookup_search (obj, "db1.example.com", "cpu", "0", "cpu", "system", + /* expect new = */ 1); + + lookup_destroy (obj); + return (0); } int main (int argc, char **argv) /* {{{ */ { - testcase0 (); - testcase1 (); - testcase2 (); - return (EXIT_SUCCESS); + RUN_TEST(group_by_specific_host); + RUN_TEST(group_by_any_host); + RUN_TEST(multiple_lookups); + RUN_TEST(regex); + + END_TEST; } /* }}} int main */