X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=t%2Funit%2Ffrontend%2Fparser_test.c;h=bca86452dffc44afe22f2fb5b3418eaa7e6f42f3;hp=a0826070ed958a6e864998af1eecf3890e944906;hb=b4d485cde96751e1ec832d0e75a3e6081006a1a4;hpb=c170fba7115034b0d39ee8cf9d3bec9c706110f1 diff --git a/t/unit/frontend/parser_test.c b/t/unit/frontend/parser_test.c index a082607..bca8645 100644 --- a/t/unit/frontend/parser_test.c +++ b/t/unit/frontend/parser_test.c @@ -53,11 +53,17 @@ START_TEST(test_parse) /* valid commands */ { "FETCH 'host'", -1, 1, CONNECTION_FETCH }, + { "FETCH 'host' FILTER " + "host = 'host'", -1, 1, CONNECTION_FETCH }, + { "LIST", -1, 1, CONNECTION_LIST }, { "LIST -- comment", -1, 1, CONNECTION_LIST }, { "LIST;", -1, 1, CONNECTION_LIST }, { "LIST; INVALID", 5, 1, CONNECTION_LIST }, + { "LIST FILTER " + "host = 'host'", -1, 1, CONNECTION_LIST }, + { "LOOKUP hosts", -1, 1, CONNECTION_LOOKUP }, { "LOOKUP hosts MATCHING " "host = 'host'", -1, 1, CONNECTION_LOOKUP }, { "LOOKUP hosts MATCHING NOT " @@ -76,6 +82,20 @@ START_TEST(test_parse) "host =~ 'p' AND " "service =~ 'p' OR " "service =~ 'r'", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts MATCHING " + "host =~ 'p' " + "FILTER :age > 1D", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts MATCHING " + "host =~ 'p' " + "FILTER :age > 1D AND " + ":interval < 240s" , -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts MATCHING " + "host =~ 'p' " + "FILTER NOT :age>1D", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts MATCHING " + "host =~ 'p' " + "FILTER :age>" + ":interval", -1, 1, CONNECTION_LOOKUP }, /* numeric constants */ { "LOOKUP hosts MATCHING " @@ -170,8 +190,18 @@ START_TEST(test_parse) { "LIST; INVALID", 8, -1, 0 }, { "/* some incomplete", -1, -1, 0 }, - { "LOOKUP hosts", -1, -1, 0 }, + { "LIST MATCHING " + "host = 'host'", -1, -1, 0 }, + { "FETCH 'host' MATCHING " + "host = 'host'", -1, -1, 0 }, + + { "LOOKUP foo", -1, -1, 0 }, + { "LOOKUP foo MATCHING " + "host = 'host'", -1, -1, 0 }, + { "LOOKUP foo FILTER " + "host = 'host'", -1, -1, 0 }, { "LOOKUP foo MATCHING " + "host = 'host' FILTER " "host = 'host'", -1, -1, 0 }, }; @@ -257,6 +287,16 @@ START_TEST(test_parse_matcher) { "attribute.foo IS NULL", -1, MATCHER_ISNULL }, { "attribute.foo IS NOT NULL", -1, MATCHER_NOT }, + /* object field matchers */ + { ":last_update < 10s", -1, MATCHER_LT }, + { ":AGE <= 1m", -1, MATCHER_LE }, + { ":interval = 10h", -1, MATCHER_EQ }, + { ":Last_Update >= 24D", -1, MATCHER_GE }, + { ":age > 1M", -1, MATCHER_GT }, + { ":age != 20Y", -1, MATCHER_NOT }, + { ":backend != 'be'", -1, MATCHER_NOT }, + { ":age <= 2 * :interval", -1, MATCHER_LE }, + /* check operator precedence */ { "host = 'name' OR " "service = 'name' AND "