diff options
author | Dmitri Pal <dpal@redhat.com> | 2009-08-14 15:05:12 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2009-08-20 15:47:34 -0400 |
commit | c7916d6b820bde690145450ba02209e741154866 (patch) | |
tree | 8fa39e9d28e8d1f384471540e58cdc280975c72e /common/elapi/elapi_ut.c | |
parent | b776f0af14866051ab9dcdb696345643424261d5 (diff) | |
download | sssd-c7916d6b820bde690145450ba02209e741154866.tar.gz sssd-c7916d6b820bde690145450ba02209e741154866.tar.bz2 sssd-c7916d6b820bde690145450ba02209e741154866.zip |
ELAPI: Adding concept of targets
The targets are the destinations which
caller wants to send the events to.
The sinks are now on the second level
under targets and constitute a so called
fail over chain for a target.
Such approach eliminates the need for complex
routing function.
The dispatcher keeps the list of targets in a collection.
The element in the collection is the target context.
Also gispatcher keeps the list of the sinks
in a separate collection.
Each target context has a list of the sinks
associated with this target. But those are just
pointers (at least for now) to the sinks
form the list kept by dispatcher.
I had to add some internal debug callbacks
to be able to see that all the internals of
the dispatcher are actually in order.
See the conttent of config file for more comments.
Also see information posted on SSSD wiki.
https://fedorahosted.org/sssd/wiki/WikiPage/ELAPIInterface
Diffstat (limited to 'common/elapi/elapi_ut.c')
-rw-r--r-- | common/elapi/elapi_ut.c | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/common/elapi/elapi_ut.c b/common/elapi/elapi_ut.c deleted file mode 100644 index 2866411f..00000000 --- a/common/elapi/elapi_ut.c +++ /dev/null @@ -1,304 +0,0 @@ -/* - ELAPI - - Unit test for the ELAPI event interface. - - Copyright (C) Dmitri Pal <dpal@redhat.com> 2009 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <stdio.h> -#define TRACE_HOME -#include "trace.h" -#include "elapi.h" -#include "collection_tools.h" - -int simple_event_test(void) -{ - int error = 0; - struct collection_item *event; - char bin[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - printf("Simple test START:\n"); - - error = elapi_set_default_template( - E_BASE_DEFV1 | E_BASE_HOSTEXT, - "%n( bin )", bin, 8, - " %sb( logical1 )", "false", - "%sb( logical2 )", "YES", - " %db(logical3)", 1, - "%d(int_number),", -200, - "%u(unsigned_number)", 300, - "%ld(long_number)", -1234567, - "%lu(long_unsigned_number)", 123456789, - "%s(just_string)", "string", - "%*s(sub_string)", "truncated string", 10, /* Expect word truncated */ - "%e(double_number)", 3.141592 * 3, - "simple", "value", - "-" E_UTCTIME, /* Remove UTCTIME from the list */ - E_MESSAGE, - "%(stamp), %s(sub_string), %(int_number), %(unsigned_number), %(long_unsigned_number), %(bin), %e(double_number)", - E_EOARG); - - if (error) { - printf("Failed to set default template! %d\n", error); - return error; - } - - error = elapi_create_simple_event( - &event, - " %db(foo_logical)", 0, - "%d(foo_int_number),", -2000, - "%u(foo_unsigned_number)", 3000, - "%ld(foo_long_number)", -7654321, - E_EOARG); - - if (error) { - printf("Failed to set create event! %d\n", error); - return error; - } - - error = elapi_log(event); - - elapi_destroy_event(event); - - if (error) { - printf("Failed to log event! %d\n", error); - return error; - } - - error = elapi_msg(NULL, "a", "b", "c", "d", E_EOARG); - if (error) { - printf("Failed to log event! %d\n", error); - return error; - } - - printf("Simple test success!\n"); - - return error; -} - -int complex_event_test(void) -{ - int error = 0; - struct collection_item *template = NULL; - struct collection_item *event = NULL, *event_copy = NULL; - char bin[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - struct collection_item *col = NULL; - struct elapi_dispatcher *dispatcher = NULL; - - printf("Complex test START:\n"); - - error = elapi_create_event_template( - &template, - E_BASE_DEFV1 | E_BASE_HOSTEXT, - "%lu(long_unsigned_number)", 123456789, - "%s(just_string)", "string", - "%*s(sub_string)", "truncated string", 10, /* Expect word truncated */ - "%e(double_number)", 3.141592 * 3, - "simple", "value", - "-" E_UTCTIME, /* Remove UTCTIME from the list */ - E_MESSAGE, - "%(stamp), %s(sub_string), %(int_number), %(unsigned_number), %(long_unsigned_number), %(bin), %e(double_number)", - E_EOARG); - - if (error) { - printf("Failed to set create template %d\n", error); - return error; - } - - error = elapi_create_event( - &event, - template, - NULL, - 0, - " %db(evt_logical)", 0, - "%d(evt_int_number),", -2000, - "%u(evt_unsigned_number)", 3000, - "%ld(evt_long_number)", -7654321, - E_EOARG); - - if (error) { - printf("Failed to set create template %d\n", error); - elapi_destroy_event_template(template); - return error; - } - - col_debug_collection(template, COL_TRAVERSE_FLAT); - col_debug_collection(event, COL_TRAVERSE_FLAT); - - error = elapi_log(event); - - elapi_destroy_event(event); - - if (error) { - printf("Failed to log event! %d\n", error); - return error; - } - - - elapi_destroy_event_template(template); - - error = elapi_create_event_template( - &template, - E_BASE_DEFV1 | E_BASE_HOSTEXT, - "%n( bin )", bin, 8, - " %sb( logical1 )", "false", - "%sb( logical2 )", "YES", - " %db(logical3)", 1, - "%d(int_number),", -200, - "%u(unsigned_number)", 300, - "%ld(long_number)", -1234567, - E_MESSAGE, - "%(stamp), %s(sub_string), %(int_number), %(unsigned_number), %(long_unsigned_number), %(bin), %e(double_number)", - E_EOARG); - - if (error) { - printf("Failed to set create template %d\n", error); - return error; - } - - if ((error = col_create_collection(&col, "test", 0)) || - /* We are forcing overwrite with different type */ - (error = col_add_int_property(col, NULL, "unsigned_number", 1)) || - (error = col_add_long_property(col, NULL, "bin", 100000000L))) { - elapi_destroy_event_template(template); - printf("Failed to add property. Error %d\n", error); - return error; - } - - error = elapi_create_event( - &event, - template, - col, - COL_ADD_MODE_FLAT, - E_MESSAGE, - "%(stamp) a good message", - "-int_number", - E_EOARG); - - if (error) { - printf("Failed to set create template %d\n", error); - elapi_destroy_event_template(template); - col_destroy_collection(col); - return error; - } - - col_destroy_collection(col); - - col_debug_collection(template, COL_TRAVERSE_FLAT); - col_debug_collection(event, COL_TRAVERSE_FLAT); - - - if ((error = col_create_collection(&col, "test", 0)) || - /* We are forsing overwrite with different type */ - (error = col_add_int_property(col, NULL, "zzz", 1)) || - (error = col_add_long_property(col, NULL, "zzz2", 100000000L))) { - elapi_destroy_event_template(template); - printf("Failed to add property. Error %d\n", error); - elapi_destroy_event(event); - return error; - } - - error = elapi_modify_event( - event, - col, - COL_ADD_MODE_REFERENCE, - "-"E_MESSAGE, - "bin", "bin-string", - E_EOARG); - - if (error) { - printf("Failed to set create template %d\n", error); - elapi_destroy_event(event); - elapi_destroy_event_template(template); - col_destroy_collection(col); - return error; - } - - col_destroy_collection(col); - - error = elapi_copy_event(&event_copy, event); - if (error) { - printf("Failed to set create template %d\n", error); - elapi_destroy_event(event); - elapi_destroy_event_template(template); - return error; - } - - error = elapi_create_dispatcher(&dispatcher, "elapi_ut", "./sdfdsdf"); - if (error) { - elapi_destroy_event(event); - elapi_destroy_event(event_copy); - elapi_destroy_event_template(template); - printf("Failed to create dispatcher %d\n", error); - return error; - } - - error = elapi_dsp_log(dispatcher, event); - - elapi_destroy_event(event); - - if (error) { - elapi_destroy_event(event_copy); - elapi_destroy_event_template(template); - printf("Failed to log event! %d\n", error); - return error; - } - - error = elapi_dsp_log(dispatcher, event_copy); - - elapi_destroy_event(event_copy); - - if (error) { - elapi_destroy_event_template(template); - printf("Failed to log event! %d\n", error); - return error; - } - - error = elapi_dsp_msg(dispatcher, template, "a", "b", "c", "d", E_EOARG); - if (error) { - elapi_destroy_event_template(template); - printf("Failed to log event! %d\n", error); - return error; - } - - error = elapi_dsp_msg(dispatcher, NULL, "a", "b", "c", "d", E_EOARG); - if (error) { - elapi_destroy_event_template(template); - printf("Failed to log event! %d\n", error); - return error; - } - - elapi_destroy_event_template(template); - elapi_destroy_dispatcher(dispatcher); - - return error; -} - - -/* Main function of the unit test */ - -int main(int argc, char *argv[]) -{ - int error = 0; - - printf("Start\n"); - if ((error = simple_event_test()) || - (error = complex_event_test())) { - printf("Failed!\n"); - } - else printf("Success!\n"); - /* Add other tests here ... */ - return error; -} |