Code

Let the network protocol and SysQL support last_update for metric stores.
[sysdb.git] / t / unit / parser / parser_test.c
index 62a7e9047a70ea4541ad5f6e8fab487846267930..14977ff820f91e63dfc69b822fdcf98f2ebc5c38 100644 (file)
@@ -31,7 +31,7 @@
 
 #include "parser/parser.h"
 #include "core/object.h"
-#include "core/store.h"
+#include "core/memstore.h"
 #include "testutils.h"
 
 #include <check.h>
@@ -157,6 +157,8 @@ struct {
          "host.name = 'p'",         -1,   1, SDB_AST_TYPE_LOOKUP, SDB_SERVICE },
        { "LOOKUP services MATCHING "
          "service.name = 'p'",      -1,   1, SDB_AST_TYPE_LOOKUP, SDB_SERVICE },
+       { "LOOKUP services MATCHING ANY "
+         "host.backend =~ 'b'",     -1,   1, SDB_AST_TYPE_LOOKUP, SDB_SERVICE },
        { "LOOKUP metrics",          -1,   1, SDB_AST_TYPE_LOOKUP, SDB_METRIC },
        { "LOOKUP metrics MATCHING ANY "
          "attribute.name =~ 'a'",   -1,   1, SDB_AST_TYPE_LOOKUP, SDB_METRIC },
@@ -164,6 +166,8 @@ struct {
          "host.name = 'p'",         -1,   1, SDB_AST_TYPE_LOOKUP, SDB_METRIC },
        { "LOOKUP metrics MATCHING "
          "metric.name = 'p'",       -1,   1, SDB_AST_TYPE_LOOKUP, SDB_METRIC },
+       { "LOOKUP metrics MATCHING ANY "
+         "host.service.name = 'p'", -1,   1, SDB_AST_TYPE_LOOKUP, SDB_METRIC },
 
        /* TIMESERIES commands */
        { "TIMESERIES 'host'.'metric' "
@@ -216,6 +220,11 @@ struct {
          "STORE 'typ' 'id' "
          "LAST UPDATE "
          "2015-02-01",          -1,  1, SDB_AST_TYPE_STORE, SDB_METRIC },
+       { "STORE metric "
+         "'host'.'metric' "
+         "STORE 'typ' 'id' 2015-02-01 13:37 "
+         "LAST UPDATE "
+         "2015-02-01",          -1,  1, SDB_AST_TYPE_STORE, SDB_METRIC },
        { "STORE metric attribute "
          "'host'.'metric'.'key' "
          "123",                 -1,  1, SDB_AST_TYPE_STORE, SDB_ATTRIBUTE },
@@ -335,6 +344,9 @@ struct {
          "ALL backend =~ 'b'", -1,   1, SDB_AST_TYPE_LOOKUP, SDB_HOST },
        { "LOOKUP hosts MATCHING "
          "ALL backend !~ 'b'", -1,   1, SDB_AST_TYPE_LOOKUP, SDB_HOST },
+       { "LOOKUP hosts MATCHING "
+         "ANY backend || 'a' = 'b'",
+                               -1,   1, SDB_AST_TYPE_LOOKUP, SDB_HOST },
        /* attribute type is unknown */
        { "LOOKUP hosts MATCHING "
          "ANY backend = attribute['backend']",
@@ -575,10 +587,14 @@ struct {
          "ALL 1 || '2' < '3'", -1,  -1, 0, 0 },
        { "LOOKUP hosts MATCHING "
          "ALL name =~ 'a'",    -1,  -1, 0, 0 },
-       /* this could work in theory but is not supported atm */
-       { "LOOKUP hosts MATCHING "
-         "ANY backend || 'a' = 'b'",
-                               -1,  -1, 0, 0 },
+       { "LOOKUP hosts MATCHING ANY "
+         "host.name = 'h'",    -1, -1, 0, 0 },
+       { "LOOKUP services MATCHING ANY "
+         "host.name = 'h'",    -1, -1, 0, 0 },
+       { "LOOKUP metrics MATCHING ANY "
+         "host.name = 'h'",    -1, -1, 0, 0 },
+       { "LOOKUP hosts MATCHING ANY "
+         "name || 'a' = 'b'",  -1, -1, 0, 0 },
 
        /* invalid LIST commands */
        { "LIST",                -1, -1, 0, 0 },
@@ -667,7 +683,7 @@ START_TEST(test_parse)
        sdb_strbuf_t *errbuf = sdb_strbuf_create(64);
        sdb_llist_t *check;
        sdb_ast_node_t *node;
-       sdb_store_query_t *q;
+       sdb_memstore_query_t *q;
        _Bool ok;
 
        check = sdb_parser_parse(parse_data[_i].query,
@@ -730,9 +746,9 @@ START_TEST(test_parse)
        }
 
        /* TODO: this should move into front-end specific tests */
-       q = sdb_store_query_prepare(node);
+       q = sdb_memstore_query_prepare(node);
        fail_unless(q != NULL,
-                       "sdb_store_query_prepare(AST<%s>) = NULL; expected: <query>",
+                       "sdb_memstore_query_prepare(AST<%s>) = NULL; expected: <query>",
                        parse_data[_i].query);
 
        sdb_object_deref(SDB_OBJ(node));