From fddc399eac12f2d16e76ed4ca34593c48a060067 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Posp=C3=AD=C5=A1il?= Date: Tue, 26 Oct 2004 16:41:57 +0000 Subject: [PATCH] work in progress on unit tests for parse event... --- org.glite.lb.common/src/context.c | 1 + org.glite.lb.common/src/events_parse.c.T | 56 +++++++++++++- org.glite.lb.common/test/parse.cpp.T | 128 +++++++++++++++++++------------ 3 files changed, 135 insertions(+), 50 deletions(-) diff --git a/org.glite.lb.common/src/context.c b/org.glite.lb.common/src/context.c index 73eafa1..cb1a385 100644 --- a/org.glite.lb.common/src/context.c +++ b/org.glite.lb.common/src/context.c @@ -90,6 +90,7 @@ static const char* const errTexts[] = { "Duplicate ULM key", "Misuse of ULM key", "Warning: extra ULM fields", + "Compared events differ", "XML Parse error", "Server response error", "Bad JobId format", diff --git a/org.glite.lb.common/src/events_parse.c.T b/org.glite.lb.common/src/events_parse.c.T index 87512b2..71e3e99 100644 --- a/org.glite.lb.common/src/events_parse.c.T +++ b/org.glite.lb.common/src/events_parse.c.T @@ -319,7 +319,7 @@ for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} } } /* put it all together (inc. the ending LF) */ -if (asprintf(&logline,"%s%s%s\n",common,user,var) == -1) NOMEM +if (trio_asprintf(&logline,"%s%s%s\n",common,user,var) == -1) NOMEM clean: if (date) free(date); @@ -418,6 +418,58 @@ end: return ret; } +/** + * edg_wll_CompareEvents - compare two event structures + * Calls: + * Algorithm: + */ +edg_wll_ErrorCode edg_wll_CompareEvents( + edg_wll_Context context, /* context IN */ + const edg_wll_Event *e1, /* event 1 IN */ + const edg_wll_Event *e2 /* event 2 IN */ +) +{ + if (e1->any.type != e2->any.type) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,"Different event types"); +@@@{ + selectType $event '_common_'; + for ($event->getFieldsOrdered) { + my $f = selectField $event $_; + my $fn = getName $f; + my $ft = $f->{type}; + + my $a = "e1->any.$fn"; + my $b = "e2->any.$fn"; + + gen "\tif (!(".eval($main::compare{C}->{$ft}).")) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,\"Different $fn\");\n"; + } + + gen "\tswitch(e1->any.type) {\n"; + for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} } + $event->getTypes) + { + my $tu = uc $t; + my $tl = lcfirst $t; + + selectType $event $t; + gen "\t\tcase EDG_WLL_EVENT\_$tu :\n"; + for ($event->getFieldsOrdered) { + my $f = selectField $event $_; + my $fn = $f->{name}; + my $ft = $f->{type}; + + my $a = "e1->$tl.$fn"; + my $b = "e2->$tl.$fn"; + + gen "\t\t\tif (!(".eval($main::compare{C}->{$ft}).")) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,\"Different $fn\");\n"; + } + gen "\t\tbreak;\n"; + } +@@@} + default: return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,"Unknown difference"); + } /* switch */ + return edg_wll_ResetError(context); +} + /** * my_edg_wll_ULMGetValueAt - get value at index, but also @@ -721,7 +773,7 @@ $indent = " "; @@@} /* put it all together (inc. the ending LF) */ -if (asprintf(&logline,"%s%s\n",common,var) == -1) NOMEM +if (trio_asprintf(&logline,"%s%s\n",common,var) == -1) NOMEM clean: if (date) free(date); diff --git a/org.glite.lb.common/test/parse.cpp.T b/org.glite.lb.common/test/parse.cpp.T index 18f2736..ad37a40 100644 --- a/org.glite.lb.common/test/parse.cpp.T +++ b/org.glite.lb.common/test/parse.cpp.T @@ -13,56 +13,30 @@ class EventParseTest: public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(EventParseTest); CPPUNIT_TEST(regJob); +/* +@@@{ + for my $e ($event->getTypesOrdered) { + my $u = lcfirst $e; + my $c = getTypeComment $event $e; + gen "\tCPPUNIT_TEST($u);\n"; + } +@@@} +*/ CPPUNIT_TEST_SUITE_END(); public: void regJob(); - - -}; - -static char * compare_events(const edg_wll_Event *e1, const edg_wll_Event *e2) -{ - if (e1->any.type != e2->any.type) return "type"; +/* @@@{ - selectType $event '_common_'; - for ($event->getFieldsOrdered) { - my $f = selectField $event $_; - my $fn = getName $f; - my $ft = $f->{type}; - - my $a = "e1->any.$fn"; - my $b = "e2->any.$fn"; - - gen "\tif (!(".eval($main::compare{C}->{$ft}).")) return \"$fn\";\n"; - } - - gen "\tswitch(e1->any.type) {\n"; - for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} } - $event->getTypes) - { - my $tu = uc $t; - my $tl = lcfirst $t; - - selectType $event $t; - gen "\t\tcase EDG_WLL_EVENT\_$tu :\n"; - for ($event->getFieldsOrdered) { - my $f = selectField $event $_; - my $fn = $f->{name}; - my $ft = $f->{type}; - - my $a = "e1->$tl.$fn"; - my $b = "e2->$tl.$fn"; - - gen "\t\t\tif (!(".eval($main::compare{C}->{$ft}).")) return \"$fn\";\n"; - } - gen "\t\tbreak;\n"; - } + for my $e ($event->getTypesOrdered) { + my $u = lcfirst $e; + my $c = getTypeComment $event $e; + gen "\tvoid $u();\n"; + } @@@} - default: return "default"; - } /* switch */ - return NULL; -} +*/ + +}; void EventParseTest::regJob() { @@ -95,19 +69,77 @@ void EventParseTest::regJob() if (!line) { edg_wll_Error(ctx,&et,&ed); - CPPUNIT_ASSERT_MESSAGE(std::string("UnparseEvent():") + et + " " + ed, line); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_UnparseEvent():") + et + " " + ed, line); } if (edg_wll_ParseEvent(ctx,line,&e2)) { edg_wll_Error(ctx,&et,&ed); - CPPUNIT_ASSERT_MESSAGE(std::string("ParseEvent():") + et + " " + ed, 0); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_ParseEvent():") + et + " " + ed, 0); } - if ((et = compare_events(e1,e2))) { - CPPUNIT_ASSERT_MESSAGE(std::string("compare_events():") + et, 0); + if ((edg_wll_CompareEvents(ctx,e1,e2))) { + edg_wll_Error(ctx,&et,&ed); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_CompareEvents():") + et + " " + ed, 0); } } +/* +@@@{ + for my $e ($event->getTypesOrdered) { + my $l = lcfirst $e; + my $u = uc $e; + my $c = getTypeComment $event $e; + gen " +void EventParseTest::$l(){ + edg_wll_Context ctx; + edg_wll_Event *e1,*e2; + char *line,*et,*ed; + + edg_wll_InitContext(&ctx); + e1 = edg_wll_InitEvent(EDG_WLL_EVENT_$u); + e1->any.type = EDG_WLL_EVENT_$u; +"; + + selectType $event '_common_'; + for ($event->getFieldsOrdered) { + my $f = selectField $event $_; + my $fn = getName $f; + my $value = getDefaultTestValue $f; + if (!$f->{codes}) { + if (!$f->hasAlias('ULM')) { + my $fu = uc $fn; + gen "\te1->any.$fn = $value;\n"; +# gen "\tif (". $f->isNULL("e1->any.$fn") .") MISSING(EDG_WLL\_COMMON\_$fu)\n"; + } else { + my $fa = $f->getName('ULM'); + my $fu = uc $fa; +# gen "\tif (". $f->isNULL("e1->any.$fn") .") MISSING(ULM\_$fu)\n"; + } + } + } + gen ' + if (!line) { + edg_wll_Error(ctx,&et,&ed); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_UnparseEvent():") + et + " " + ed, line); + } + + if (edg_wll_ParseEvent(ctx,line,&e2)) { + edg_wll_Error(ctx,&et,&ed); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_ParseEvent():") + et + " " + ed, 0); + } + + if ((edg_wll_CompareEvents(ctx,e1,e2))) { + edg_wll_Error(ctx,&et,&ed); + CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_CompareEvents():") + et + " " + ed, 0); + } +} + +'; + + } +@@@} +*/ + CPPUNIT_TEST_SUITE_REGISTRATION( EventParseTest ); int main (int ac,const char *av[]) -- 1.8.2.3