work on grammar test
authorKoos85 <koosjoosten@gmail.com>
Thu, 24 Sep 2020 18:30:37 +0000 (20:30 +0200)
committerKoos85 <koosjoosten@gmail.com>
Thu, 24 Sep 2020 18:30:37 +0000 (20:30 +0200)
itest/querygenerator/_test_grammar2.py [deleted file]
itest/querygenerator/_validate.py [deleted file]
itest/querygenerator/k_map.py
itest/querygenerator/querygenerator.py
itest/test_grammar.py

diff --git a/itest/querygenerator/_test_grammar2.py b/itest/querygenerator/_test_grammar2.py
deleted file mode 100644 (file)
index cf4a284..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-# import re
-# import random
-# import asyncio
-# import functools
-# import random
-# import time
-# import os
-# import sys
-# from testing import Client
-# from testing import default_test_setup
-# from testing import gen_data
-# from testing import gen_points
-# from testing import gen_series
-# from testing import InsertError
-# from testing import PoolError
-# from testing import QueryError
-# from testing import run_test
-# from testing import Series
-# from testing import Server
-# from testing import ServerError
-# from testing import SiriDB
-# from testing import TestBase
-# from testing import UserAuthError
-# from querybouwer.querybouwer import Querybouwer
-# from querybouwer.k_map import k_map
-# #from querybouwer.validate import SiriRipOff, compare_result
-# from cmath import isfinite
-# from math import nan
-
-# from testing.constants import SIRIDBC
-# print(SIRIDBC)
-# sys.path.append('../grammar/')#os.path.join(SIRIDBC, '/grammar'))
-# from pygrammar.grammar import SiriGrammar
-
-
-# M, N = 20, 70
-# #DATA = {str(a).zfill(6): [[b, random.randint(0, 20)] for b in range(N)] for a in range(M)}
-# DATA = {str(a).zfill(6): [[b*N+a, random.randint(0, 20)] for b in range(N)] for a in range(M)}
-# #DATA = {str(a).zfill(6): [[b, nan if b > 15 else float(random.randint(0, 20))] for b in range(N)] for a in range(M)}
-
-# #client_validate = SiriRipOff()
-# #client_validate.groups = {'GROUP': re.compile('.*')}
-# #client_validate.update(DATA)
-
-
-# class TestGrammar(TestBase):
-#     title = 'Test select'
-
-#     async def test_main(self):
-#         qb = Querybouwer(SiriGrammar, {'regex_map': k_map,
-#                 'max_list_n_map': {
-#                     'series_match': 1,
-#                     'aggregate_functions': 1,
-#                     'select_aggregate': 1
-#                 },
-#                 #'default_list_n': 2,
-#                 'replace_map': {
-#                     'k_prefix': '',
-#                     'k_suffix': '',
-#                     'k_where': '',
-#                     'after_expr': '',
-#                     'before_expr': '',
-#                     'between_expr': '',
-#                     'k_merge': '',
-#                     'r_singleq_str': '',
-
-#                     #'f_median': '',
-#                     #'f_median_low': '',
-#                     #'f_median_high': '',
-#                     'k_now': '',
-#                     'r_float': '',
-#                     'r_time_str': '',
-#                     #'r_grave_str': '',
-#                     #'f_filter': '',
-#                     }
-#                 })
-
-#         for q in qb.generate_queries('select_stmt'):
-#             #if '~' in q: continue
-#             #if 'between now' in q: continue
-#             #if "000000" in q or '1970' in q or '*' in q or '==' in q or '>=' in q or '<' in q: continue
-
-#             #if 'filter' in q and 'derivative' in q.split('filter', 1)[0]: continue
-#             q = ' suffix "a", '.join(q.split('   , ', 1))
-#             #a, b = q.split('   , ', 1)
-#             #q = a + ' suffix "b",'+b
-
-#                         #q = 'select * from /.*/ '+q
-#             try:
-#                 res0 = await self.client0.query(q)
-#             except:
-#                 pass
-#             #res1 = client_validate.query(q)
-#             #self.assertFalse(compare_result(res0, res1))
-
-#     async def test_where(self):
-#         qb = Querybouwer(SiriGrammar, {'regex_map': k_map,
-#             'max_list_n_map': {
-#                 'series_match': 1,
-#                 'aggregate_functions': 1},
-#             'replace_map': {
-#                 'k_prefix': '',
-#                 'k_suffix': 'suffix',
-#                 #'k_where': '',
-#                 'after_expr': '',
-#                 'before_expr': '',
-#                 'between_expr': '',
-#                 'k_merge': '',
-#                 'r_singleq_str': '',
-#                 }
-#             })
-#         for q in qb.generate_queries('select_stmt'):
-#             if '~' in q: continue
-#             if 'between now' in q: continue
-#             print(q)
-#             res0 = await self.client0.query(q)
-#             #res1 = client_validate.query(q)
-#             #self.assertFalse(compare_result(res0, res1))
-
-#     async def test_between(self):
-#         qb = Querybouwer(SiriGrammar, {'regex_map': k_map,
-#             'max_list_n_map': {
-#                 'series_match': 1,
-#                 'aggregate_functions': 1},
-#             'replace_map': {
-#                 'k_prefix': '',
-#                 'k_suffix': '',
-#                 'k_where': '',
-#                 'after_expr': '',
-#                 'before_expr': '',
-#                 #'between_expr': '',
-#                 'k_merge': '',
-#                 'r_singleq_str': '',
-#                 }
-#             })
-#         for q in qb.generate_queries('select_stmt'):
-#             if '~' in q: continue
-#             if 'between now' in q: continue
-#             print(q)
-#             res = await self.client0.query(q)
-#             #self.assertFalse(validate_query_result(q, res))
-
-#     async def test_merge(self):
-#         qb = Querybouwer(SiriGrammar, {'regex_map': k_map,
-#             'max_list_n_map': {
-#                 'series_match': 1,
-#                 'aggregate_functions': 1},
-#             'replace_map': {
-#                 'k_prefix': '',
-#                 'k_suffix': '',
-#                 'k_where': '',
-#                 'after_expr': '',
-#                 'before_expr': '',
-#                 'between_expr': '',
-#                 #'k_merge': '',
-#                 'r_singleq_str': '',
-#                 }
-#             })
-#         for q in qb.generate_queries('select_stmt'):
-#             if '~' in q: continue
-#             if 'between now' in q: continue
-#             print(q)
-#             res = await self.client0.query(q)
-
-
-#     @default_test_setup(1)
-#     async def run(self):
-#         await self.client0.connect()
-
-#         for k, v in sorted(DATA.items()):
-#             await self.client0.insert({k: v})
-#         await self.client0.query('create group `GROUP` for /.*/')
-#         #time.sleep(2)
-
-#         await self.test_main()
-#         #await self.test_where()
-#         #await self.test_between()
-#         #await self.test_merge()
-
-#         self.client0.close()
-
-#         return False
-
-
-# if __name__ == '__main__':
-#     SiriDB.LOG_LEVEL = 'CRITICAL'
-#     Server.HOLD_TERM = True
-#     Server.MEM_CHECK = True
-#     Server.BUILDTYPE = 'Debug'
-#     run_test(TestAll())
-#     #run_test(TestSelect())
diff --git a/itest/querygenerator/_validate.py b/itest/querygenerator/_validate.py
deleted file mode 100644 (file)
index b59c589..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-# import sys
-# from _collections import defaultdict
-# from statistics import mean, median, median_low, median_high, variance, pvariance
-# from datetime import datetime
-# from numpy import nan, inf, isnan, isfinite
-# import time
-# import re
-# sys.path.append('../grammar')
-# from pygrammar.grammar import SiriGrammar  # nopep8
-# # import decimal
-# # getcontext().prec = 12
-# PRECISION = 9
-
-# expr_map = {
-#     '==': lambda a, b: a==b,
-#     '!=': lambda a, b: a!=b,
-#     '<=': lambda a, b: a<=b,
-#     '>=': lambda a, b: a>=b,
-#     '<': lambda a, b: a<b,
-#     '>': lambda a, b: a>b,
-#     '!~': lambda a, b: True,
-#     '~': lambda a, b: True,
-# }
-# prop_map = {
-#     'length': lambda k, v: len(v),
-#     'pool': lambda k, v: False,
-#     'name': lambda k, v: k,
-#     'start': lambda k, v: v[0][0],
-#     'end': lambda k, v: v[-1][0],
-#     'type': lambda k, v: 'integer' if type(v[0][1])==int else 'float',
-# }
-# setop_map = {
-#     'k_union': lambda a, b: a | b,
-#     'c_difference': lambda a, b: a - b,
-#     'k_symmetric_difference': lambda a, b: a ^ b,
-#     'k_intersection': lambda a, b: a & b,
-# }
-
-# seconds_map = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400, 'w': 604800}
-
-
-# def difference(pts, ts):
-#     if ts:
-#         return [[t, 0 if len(v)==1 else v[-1]-v[0]] for t, v in sorted(binfun(pts, ts[0]))]#KLOPT DIT? (nan-nan) 0 if len(v)==1 else
-#     else:
-#         return [[t, v1-v0] for (_, v0), (t, v1) in zip(pts[:-1], pts[1:])]
-
-
-# def derivative(pts, ts):
-#     ts = (ts[0] if ts else 1)
-#     return [[t1, inf if (t0==t1 and (v1-v0)>0) else \
-#                  -inf if (t0==t1 and (v1-v0)<0) else \
-#                  nan if t0==t1 else \
-#                  ts*(v1-v0)/(t1-t0)#round(ts*(v1-v0)/(t1-t0), PRECISION)
-#         ] for (t0, v0), (t1, v1) in zip(pts[:-1], pts[1:])]
-
-
-# def pvariance_(vs):
-#     nans = [a for a in vs if not isfinite(a)]
-#     return nan if nans else 0 if len(vs) == 1 else pvariance(vs)
-
-
-# def binfun(pts, size):
-#     bins = defaultdict(list)
-#     for t, v in pts:
-#         bins[(t-1)//size*size+size].append(v)
-#     return bins.items()
-
-
-# def binfunmerge(series, size):
-#     bins = defaultdict(list)
-#     for _, pts in sorted(series.items(), reverse=True):
-#         for t, v in pts:
-#             bins[(t-1)//size*size+size].append(v)
-#     return bins.items()
-
-
-# def mergefun(series):
-#     return sorted([tv for _, pts in sorted(series.items(), reverse=True) for tv in pts], key=lambda a: a[0])
-
-# funmap = {
-#     'f_points': lambda pts, ts: pts,
-#     'f_sum': lambda pts, ts: sorted([t, sum(v)] for t, v in binfun(pts, ts[0])),
-#     'f_mean': lambda pts, ts: sorted([t, mean(v)] for t, v in binfun(pts, ts[0])),
-#     'f_median': lambda pts, ts: sorted([t, median(v)] for t, v in binfun(pts, ts[0])),
-#     'f_median_low': lambda pts, ts: sorted([t, median_low(v)] for t, v in binfun(pts, ts[0])),
-#     'f_median_high': lambda pts, ts: sorted([t, median_high(v)] for t, v in binfun(pts, ts[0])),
-#     'f_min': lambda pts, ts: sorted([t, min(v)] for t, v in binfun(pts, ts[0])),
-#     'f_max': lambda pts, ts: sorted([t, max(v)] for t, v in binfun(pts, ts[0])),
-#     'f_count': lambda pts, ts: sorted([t, len(v)] for t, v in binfun(pts, ts[0])),
-#     'f_variance': lambda pts, ts: sorted([t, 0 if len(v) ==1 else variance(v)] for t, v in binfun(pts, ts[0])),
-#     'f_pvariance': lambda pts, ts: sorted([t, pvariance_(v)] for t, v in binfun(pts, ts[0])),
-#     'f_difference': difference,
-#     'f_derivative': derivative,
-#     'f_filter': lambda pts, ts: [tv for tv in pts if ts[0](tv[1], ts[1])],#round(tv[1], 6)
-# }
-
-# funmapmerge = {
-#     'f_points': lambda series, ts: mergefun(series),
-#     'f_sum': lambda series, ts: sorted([t, sum(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_mean': lambda series, ts: sorted([t, mean(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_median': lambda series, ts: sorted([t, median(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_median_low': lambda series, ts: sorted([t, median_low(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_median_high': lambda series, ts: sorted([t, median_high(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_min': lambda series, ts: sorted([t, min(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_max': lambda series, ts: sorted([t, max(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_count': lambda series, ts: sorted([t, len(v)] for t, v in binfunmerge(series, ts[0])),
-#     'f_variance': lambda series, ts: sorted([t, round(variance(v), PRECISION) if len(v) > 1 else 0] for t, v in binfunmerge(series, ts[0])),
-#     'f_pvariance': lambda series, ts: sorted([t, round(pvariance(v), PRECISION) if len(v) > 1 else 0] for t, v in binfunmerge(series, ts[0])),
-#     'f_difference': lambda series, ts: difference(mergefun(series), ts),
-#     'f_derivative': lambda series, ts: derivative(mergefun(series), ts),
-#     'f_filter': lambda series, ts: [tv for tv in mergefun(series) if ts[0](tv[1], ts[1])],
-# }
-
-
-# class SiriRipOff(dict):
-#     groups = {}
-
-#     def _time_expr(self, e):
-#         for e1 in e.children:
-#             if e1.children[0].element.name == 'r_integer':
-#                 return int(e1.string)
-#             elif e1.children[0].element.name == 'r_time_str':
-#                 return int(e1.string[:-1])*seconds_map[e1.string[-1:]]
-#             elif e1.children[0].element.name == 'k_now':
-#                 return int(time.time())
-#             else:
-#                 alist = e1.string[1:-1].split()
-#                 Y, M, D = map(int, alist[0].split('-'))
-#                 if len(alist) == 2:
-#                     h, m, s = map(int, (alist[1]+':0:0').split(':')[:3])
-#                     dt = datetime(Y, M, D, h, m, s)
-#                 else:
-#                     dt = datetime(Y, M, D)
-#                 return int(time.mktime(dt.timetuple()))
-
-#     def _aggrfun(self, e):
-#         ename = getattr(e.element, 'name', None)
-#         texprs = []
-#         if ename == 'f_filter':
-#             oname = e.children[2].children[0].element.name
-#             op = expr_map[e.children[2].string] if oname == 'str_operator' else expr_map['==']
-#             for e1 in e.children[-2].children:
-#                 if getattr(e1.element, 'name', None) == 'r_integer':
-#                     val = int(e1.string)
-#                 elif getattr(e1.element, 'name', None) == 'r_float':
-#                     val = float(e1.string)
-#                 else:
-#                     assert 0
-#             texprs = [op, val]
-#         else:
-#             for e1 in e.children:
-#                 if getattr(e1.element, 'name', None) == 'time_expr':
-#                     texprs.append(self._time_expr(e1))
-#                 else:
-#                     for e2 in e1.children:
-#                         if getattr(e2.element, 'name', None) == 'time_expr':
-#                             texprs.append(self._time_expr(e2))
-
-#         return ename, texprs
-
-#     def _from(self, e):
-#         seriessets = []
-#         operators = []
-#         for e1 in [a.children[0] for a in e.children]:
-#             ename = getattr(e1.element, 'name', None)
-#             if ename == 'series_name':
-#                 seriessets.append({e1.string[1:-1]} if e1.string[1:-1] in self else set())
-#             elif ename == 'series_re':
-#                 r = re.compile(e1.string[1:-1])
-#                 seriessets.append({name for name in self if r.match(name)})
-#             elif ename == 'group_match':
-#                 r = self.groups[e1.string[1:-1]]
-#                 seriessets.append({name for name in self if r.match(name)})
-#             else:
-#                 operators.append(setop_map[ename])
-
-#         _series = seriessets[0]
-#         for s, o in zip(seriessets[1:], operators):
-#             _series = o(_series, s)
-#         return _series
-
-#     def _where(self, e):
-#         wfun = []
-#         for e1 in e.children[0].children[1].children[0].children:
-#             prop, exp, val = e1.children
-#             vtyp = getattr(val.element, 'name', None)
-#             if vtyp == 'string':
-#                 val = val.string[1:-1]
-#             elif vtyp == 'int_expr':
-#                 val = int(val.string)
-#             elif vtyp == 'time_expr':
-#                 val = self._time_expr(val)
-#             else:
-#                 val = val.string
-
-#             wfun.append(lambda k, v: expr_map[exp.string](prop_map[prop.string](k, v), val))
-
-#         return lambda k, v: sum(fun(k, v) for fun in wfun)==len(wfun)
-
-#     def _aggr(self, e):
-#         aggr = []
-#         for i, e1 in enumerate(e.children):
-#             if i%2==1: continue
-#             _prefix = ''
-#             _suffix = ''
-#             _aggrfuns = []
-#             for i, e2 in enumerate(e1.children[0].children):
-#                 if i%2==1: continue
-#                 fun, ts = self._aggrfun(e2.children[0])
-#                 _aggrfuns.append([fun, ts])
-
-#             for e2 in e1.children[1:]:
-#                 if e2.children[0].element.name == 'prefix_expr':
-#                     _prefix = e2.children[0].children[1].string[1:-1]
-#                 elif e1.children[0].element.name == 'suffix_expr':
-#                     _suffix = e2.children[0].children[1].string[1:-1]
-#             aggr.append([_aggrfuns, _prefix, _suffix])
-#         return aggr
-
-#     def _merge(self, e):
-#         mergeas = e.children[0].children[2].string[1:-1]
-#         _aggrfuns = []
-#         if e.children[0].children[-1].children[0].children:
-#             for i, e1 in enumerate(e.children[0].children[-1].children[0].children[1].children):
-#                 if i%2==1: continue
-#                 fun, ts = self._aggrfun(e1.children[0])
-#                 _aggrfuns.append([fun, ts])
-#         return mergeas, _aggrfuns or [['f_points', None]]
-
-
-#     def select_stmt(self, e):
-#         aggr = self._aggr(e.children[1])
-#         names = self._from(e.children[3])
-#         wfun, merge, after, before = None, None, None, None
-#         for e1 in e.children[4:]:
-#             lname = getattr(e1.children[0].children[0].element, 'name', None)
-#             if lname == 'k_where':
-#                 wfun = self._where(e1)
-#             elif lname == 'k_merge':
-#                 merge = self._merge(e1)
-#             elif lname == 'after_expr':
-#                 after = self._time_expr(e1.children[0].children[0].children[1])
-#             elif lname == 'before_expr':
-#                 before = self._time_expr(e1.children[0].children[0].children[1])
-#             elif lname == 'between_expr':
-#                 after = self._time_expr(e1.children[0].children[0].children[1])
-#                 before = self._time_expr(e1.children[0].children[0].children[3])
-
-#         series = {}
-#         for name in names:
-#             pts = self[name]
-#             if wfun and not wfun(name, pts): continue
-#             if after is not None and before:
-#                 pts = [[t, v] for t, v in pts if after <= t < before]
-#             elif after is not None:
-#                 pts = [[t, v] for t, v in pts if after <= t]
-#             elif before is not None:
-#                 pts = [[t, v] for t, v in pts if t < before]
-
-#             for aggrs, prefix, suffix in aggr:
-#                 for funname, ts in aggrs:
-#                     pts = funmap[funname](pts, ts)
-#                 series[prefix+name+suffix] = pts
-
-#         lname = getattr(e.children[-1].children[0].element, 'name', None)
-#         if merge:
-#             mergeas, aggrs = merge
-#             for funname, ts in aggrs[:1]:
-#                 pts = funmapmerge[funname](series, ts)
-#             for funname, ts in aggrs[1:]:
-#                 pts = funmap[funname](pts, ts)
-
-#             return {mergeas: pts}
-
-#         return series
-
-#     def query(self, q):
-#         res = siri_grammar.parse(q)
-#         for e in res.tree.children[0].children[0].children[0].children:
-#             ename = getattr(e.element, 'name', None)
-#             return getattr(self, ename)(e)
-
-
-# def compare_result(res0, res1):
-#     if res0.keys()!=res1.keys():
-#         return True
-
-#     for k, v in res0.items():
-#         v_val = res1[k]
-#         if v == v_val: continue
-#         n_ok = sum(v0==v1 or round(v0-v1, 3)==0 or (isnan(v0) and isnan(v1)) for (t0, v0), (t1, v1) in zip(v, v_val))
-#         if n_ok == len(v) == len(v_val): continue
-#         print(n_ok)
-#         print('s', len(v), v)
-#         print('k', len(v_val), v_val)
-#         print(len(v), len(v_val))
-#         return True
-#     return False
\ No newline at end of file
index eec7c808374b7c18e291dc07893a2bb73370c5ed..df1ec550713360cb0082d6de9a94b3d0c8f7c845 100644 (file)
@@ -1,6 +1,3 @@
-max_repeat_n_map = {}
-replace_map = {'r_singleq_str': ''}
-max_list_n_map = {'series_match': 2, 'aggregate_functions': 2}
 k_map = {
     'r_doubleq_str': {
         'k_as': '"MERGED"',
@@ -25,9 +22,13 @@ k_map = {
         'k_ip_support': '"ALL"',
         'k_libuv': '"1.8.0"',
         'k_server': '"SERVER"',
+           'k_tee_pipe_name': '"PIPENAME"',
+        'k_shard_duration': 86400,
+        'k_expiration_num': 0,
+        'k_expiration_log': 0,
 
         'aggregate_functions': '"1970-1-1 1:00:10"',
-        'k_start': '"1970-1-1 1:00:00"',
+           'k_start': '"1970-1-1 1:00:00"',
         'k_after': '"1970-1-1 1:00:00"',
         'k_between': '"1970-1-1 1:00:00"',
         'k_before': '"1970-1-1 1:01:00"',
@@ -59,6 +60,9 @@ k_map = {
         'k_before': 60,
         'k_and': 60,
         'k_end': 60,
+        'k_shard_duration': 86400,
+        'k_expiration_num': 0,
+        'k_expiration_log': 0,
     },
     'r_float': {
         'k_filter': 10.0,
@@ -70,13 +74,24 @@ k_map = {
         'k_between': '0d',
         'k_before': '1m',
         'k_and': '1m',
-        'k_end': '1m'},
+        'k_end': '1m',
+        'k_shard_duration': '1d',
+        'k_expiration_num': '0d',
+        'k_expiration_log': '0d',
+    },
     'r_uuid_str': {
         'r_uuid_str': '"UUID"'},
     'r_uinteger': {
     },
-    'r_grave_str': {'r_grave_str': '`000000`'},
+    'r_grave_str': {
+           'group_name': '`GROUP`',
+        'tag_name': '`TAG`',
+        'group_tag_match': '`GROUP_OR_TAG`',
+    },
     'r_regex': {
         'r_regex': '/.*/'
     },
-}
+    'r_comment': {
+        'r_comment': '#',
+    },
+}
\ No newline at end of file
index be0a8189d7360c8c2c856f052474dbaa2d72fff6..d21e84340b49a408c323ba1f92b99f50eb4824b7 100644 (file)
@@ -34,7 +34,8 @@ class QueryGenerator(list):
                 break
 
             self.append(ename)
-            for q1 in getattr(self, '_on_'+e.__class__.__name__)(q, i):
+            func = getattr(self, '_on_'+e.__class__.__name__, lambda q, i: [])
+            for q1 in func(q, i):
                 for q2 in self._addq(q1):
                     yield q2
             self.pop()
@@ -53,16 +54,14 @@ class QueryGenerator(list):
             val = re_map.get(ename)
             if val is not None:
                 q[i] = val
+                yield q
                 break
-        else:
-            print('geen waarde gevonden voor:')
-            print(self[-1])
-            print(q[:i+1])
-            print(i, len(self), self)
-            print(self.regex_map)
-            assert 0
-
-        yield q
+        # else:
+        #     print('geen waarde gevonden voor:')
+        #     print(self[-1])
+        #     print(q[:i+1])
+        #     print(i, len(self), self)
+        #     print(self.regex_map)
 
     def _on_Token(self, q, i):
         q[i] = q[i]._token
@@ -137,73 +136,3 @@ class QueryGenerator(list):
 
             q[i] = e1
             yield q
-
-    def _on_This(self, q, i):
-        pass
-
-
-if __name__ == '__main__':
-    import sys
-    from k_map import k_map
-    sys.path.append('../../grammar/')
-    from pygrammar.grammar import SiriGrammar  # nopep8
-
-    qb = Querybouwer({
-        'regex_map': k_map,
-        'max_list_n_map': {
-            'series_match': 1,
-            'aggregate_functions': 1,
-            'select_aggregate': 1
-        },
-        'default_list_n': 2,
-        'replace_map': {
-            'k_prefix': '',
-            'k_suffix': '',
-            'k_where': '',
-            'after_expr': '',
-            'before_expr': '',
-            'between_expr': '',
-            'k_merge': '',
-            'r_singleq_str': '',
-
-            # 'f_median': '',
-            # 'f_median_low': '',
-            # 'f_median_high': '',
-            'k_now': '',
-            'r_float': '',
-            'r_time_str': '',
-            # 'r_grave_str': '',
-            # 'f_filter': '',
-            }
-        })
-
-    maps = {
-        'replace_map': {
-            'select_stmt': '',
-            # 'list_stmt': '',
-            # 'count_stmt': '',
-            # 'drop_stmt': '',
-            # 'alter_stmt': '',
-            # 'create_stmt': '',
-            # 'revoke_stmt': '',
-            # 'grant_stmt': '',
-            # 'show_stmt': '',
-            'calc_stmt': '',
-
-            # 'k_prefix': '',
-            # 'k_suffix': '',
-            # 'k_where': '',
-            # 'after_expr': '',
-            # 'before_expr': '',
-            # 'between_expr': '',
-            # 'k_merge': '',
-            # 'k_limit': '',
-            # 'k_timeit': '',
-            'r_comment': '',
-            'r_singleq_str': '',
-        }, 'regex_map': k_map,
-    }
-
-    qb = Querybouwer(SiriGrammar, maps)
-    for q in qb.generate_queries(base_ele):
-        print(q)
\ No newline at end of file
index 28b32a575951deaa7e4481f390814734a2d57581..ccc9c9752dd610713453071d54179be83eb33d1f 100644 (file)
@@ -8,11 +8,11 @@ import os
 import sys
 from math import nan
 from testing import default_test_setup
+from testing import parse_args
 from testing import run_test
 from testing import Server
 from testing import SiriDB
 from testing import TestBase
-from testing import parse_args
 from testing.constants import PYGRAMMAR_PATH
 from querygenerator.querygenerator import QueryGenerator
 from querygenerator.k_map import k_map
@@ -78,9 +78,6 @@ class TestGrammar(TestBase):
     async def test_select_stmt(self):
         qb = QueryGenerator(SiriGrammar, {
             'regex_map': k_map,
-            'max_list_n_map': {
-                'series_match': 1,
-                'aggregate_functions': 1},
             'replace_map': {
                 'k_prefix': '',
                 'k_suffix': '',
@@ -120,7 +117,7 @@ class TestGrammar(TestBase):
     async def test_alter_stmt(self):
         qb = QueryGenerator(SiriGrammar, {
             'regex_map': k_map,
-            'replace_map': {'r_singleq_str': ''}})
+            'replace_map': {'r_singleq_str': '', 'k_now': ''}})
         for q in qb.generate_queries('alter_stmt'):
             if 'set address' in q:
                 continue  # kan niet
@@ -128,6 +125,8 @@ class TestGrammar(TestBase):
                 continue  # kan niet
             if 'set timezone' in q:
                 continue  # zelfde as vorig waarde error
+            if 'set log_level' in q:
+                continue  # niet nodig maar wel handig om dit te skippen
             # if 'set name' in q:
             #     continue  # zelfde as vorig waarde error
             if 'group' in q and 'name' in q:
@@ -146,6 +145,8 @@ class TestGrammar(TestBase):
             'regex_map': k_map,
             'replace_map': {'r_singleq_str': ''}})
         for q in qb.generate_queries('list_stmt'):
+            if 'tags' in q:
+                continue  # TODO
             await self.client0.query(q)
 
     async def test_drop_stmt(self):
@@ -167,6 +168,44 @@ class TestGrammar(TestBase):
             'replace_map': {'r_singleq_str': ''}})
         for q in qb.generate_queries('show_stmt'):
             await self.client0.query(q)
+    
+    async def test_all_stmts(self):
+        qb = QueryGenerator(SiriGrammar, {
+            'regex_map': k_map,
+            'replace_map': {
+                'r_singleq_str': '', 
+                'r_comment': '',
+                'k_timeit': '',
+                'select_stmt': '',
+                'list_stmt': '',
+                'count_stmt': '',
+                
+                'alter_group': '',
+                #'drop_group': '',
+                'alter_server': '',
+                'drop_server': '',
+                'alter_user': '',
+                'drop_user': '',
+                
+                #'set_address': '',
+                #'set_port': '',
+                'set_timezone': '',
+                'set_log_level': '',  # niet nodig maar wel handig om dit te skippen
+                'set_expiration_num': '',
+                'set_expiration_log': '',
+
+                'k_prefix': '',
+                'k_suffix': '',
+                'k_filter': '',
+                #'k_where': '',
+                'after_expr': '',
+                'before_expr': '',
+                'between_expr': '',
+                'k_merge': '',
+        }})
+        for q in qb.generate_queries():
+            print(q)
+            await self.client0.query(q)
 
     @default_test_setup(1)
     async def run(self):
@@ -179,13 +218,15 @@ class TestGrammar(TestBase):
         series = gen_simple_data(20, 70)
 
         await self.client0.insert(series)
+        await self.client0.query('create group `GROUP_OR_TAG` for /00000.*/')
         # await self.client0.query('create group `GROUP` for /.*/')
-
+        # await self.client0.query('create user "USER" set password "PASSWORD"')
+        
         await self.test_create_stmt()
 
         time.sleep(2)
 
-        await self.test_select_stmt()
+        await self.test_select_stmt()
 
         await self.test_revoke_stmt()
 
@@ -203,9 +244,27 @@ class TestGrammar(TestBase):
 
         self.client0.close()
 
+        print('.')
         return False
 
+    # @default_test_setup(1)
+    # async def run(self):
+    #     await self.client0.connect()
+
+    #     # await self.db.add_pool(self.server1, sleep=2)
+
+    #     update_k_map_show(await self.client0.query('show'))
+
+    #     series = gen_simple_data(20, 70)
+
+    #     await self.client0.insert(series)
+    #     await self.client0.query('create group `GROUP_OR_TAG` for /00000.*/')
+    #     #time.sleep(2)
+    #     await self.test_all_stmts()
+    #     self.client0.close()
+    #     return False
+
 
 if __name__ == '__main__':
     parse_args()
-    run_test(TestGrammar())
+    run_test(TestGrammar())
\ No newline at end of file