diff options
author | Jose Bollo <jose.bollo@iot.bzh> | 2018-11-22 09:03:33 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-11-22 17:39:50 +0100 |
commit | bc247d4c9e16e548c84466d8975529568e7c395d (patch) | |
tree | 757edd27e14a08b7122062febd01e34d425f41fd /src/tests | |
parent | 153a7c9c44ac84f32a0869ed14e4f08563e6d97c (diff) |
globset: Introduce globset for event handlingguppy_6.99.1guppy/6.99.16.99.1
It optimises the event handling that was slow.
It also fix few bugs:
- at most one event handler is called now
- the handler call has the most specific pattern
Change-Id: Ic13a0258b5743579ab15e0e953ec62206d982850
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tests/globset/CMakeLists.txt | 23 | ||||
-rw-r--r-- | src/tests/globset/globset.in | 30 | ||||
-rw-r--r-- | src/tests/globset/globset.out | 30 | ||||
-rw-r--r-- | src/tests/globset/test-globset.c | 60 |
5 files changed, 144 insertions, 0 deletions
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index b516a9db..b0ddbdbf 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -25,6 +25,7 @@ if(check_FOUND) add_subdirectory(apiset) add_subdirectory(apiv3) add_subdirectory(wrap-json) + add_subdirectory(globset) else(check_FOUND) MESSAGE(WARNING "check not found! no test!") endif(check_FOUND) diff --git a/src/tests/globset/CMakeLists.txt b/src/tests/globset/CMakeLists.txt new file mode 100644 index 00000000..6bc9e600 --- /dev/null +++ b/src/tests/globset/CMakeLists.txt @@ -0,0 +1,23 @@ +########################################################################### +# Copyright (C) 2017, 2018 "IoT.bzh" +# +# author: José Bollo <jose.bollo@iot.bzh> +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +add_executable(test-globset test-globset.c) +target_include_directories(test-globset PRIVATE ../..) +target_link_libraries(test-globset afb-lib ${link_libraries}) +add_test(NAME globset COMMAND test-globset) + diff --git a/src/tests/globset/globset.in b/src/tests/globset/globset.in new file mode 100644 index 00000000..3aa5bd52 --- /dev/null +++ b/src/tests/globset/globset.in @@ -0,0 +1,30 @@ +kilil +?kilil ++kilil +kilil +?kilil +kil +-error ++kilil +-kilil ++kilil ++kilil ++kil* +kilil +kililo ++*/* +ryjt +rthetrfh +trhzrt/rztyrt ++zer*o* +zero +zerksdjfhkjdsffbhqkdbfdozz +zer/o ++a* ++az* ++aze* +alij +azdfbgfhnb +az +azefgnjfghn,dfnh +qsd diff --git a/src/tests/globset/globset.out b/src/tests/globset/globset.out new file mode 100644 index 00000000..e0f4c074 --- /dev/null +++ b/src/tests/globset/globset.out @@ -0,0 +1,30 @@ +match [kilil]: NOT FOUND +search [kilil]: NOT FOUND +add [kilil]: 0, Success +match [kilil]: found by kilil +search [kilil]: found +match [kil]: NOT FOUND +del [error]: -1, No such file or directory +add [kilil]: -1, File exists +del [kilil]: 0, Success +add [kilil]: 0, Success +add [kilil]: -1, File exists +add [kil*]: 0, Success +match [kilil]: found by kilil +match [kililo]: found by kil* +add [*/*]: 0, Success +match [ryjt]: NOT FOUND +match [rthetrfh]: NOT FOUND +match [trhzrt/rztyrt]: found by */* +add [zer*o*]: 0, Success +match [zero]: found by zer*o* +match [zerksdjfhkjdsffbhqkdbfdozz]: found by zer*o* +match [zer/o]: found by zer*o* +add [a*]: 0, Success +add [az*]: 0, Success +add [aze*]: 0, Success +match [alij]: found by a* +match [azdfbgfhnb]: found by az* +match [az]: found by az* +match [azefgnjfghn,dfnh]: found by aze* +match [qsd]: NOT FOUND diff --git a/src/tests/globset/test-globset.c b/src/tests/globset/test-globset.c new file mode 100644 index 00000000..6369332a --- /dev/null +++ b/src/tests/globset/test-globset.c @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2018 "IoT.bzh" + * Author: José Bollo <jose.bollo@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define _GNU_SOURCE + +#include <stdio.h> +#include <string.h> +#include <errno.h> + +#include "globset.h" + +int main() +{ + int rc; + char buffer[1024], *str; + const struct globset_handler *gh; + struct globset *set; + + setvbuf(stdout, NULL, _IOLBF, 0); + set = globset_create(); + while (fgets(buffer, sizeof buffer, stdin)) { + str = strchr(buffer,'\n'); + if (str) *str = 0; + errno = 0; + switch (buffer[0]) { + case '+': + rc = globset_add(set, &buffer[1], NULL, NULL); + printf("add [%s]: %d, %m\n", &buffer[1], rc); + break; + case '-': + rc = globset_del(set, &buffer[1], NULL); + printf("del [%s]: %d, %m\n", &buffer[1], rc); + break; + case '?': + gh = globset_search(set, &buffer[1]); + printf("search [%s]: %s%s\n", &buffer[1], gh ? "found " : "NOT FOUND", gh ? gh->pattern : ""); + break; + default: + gh = globset_match(set, buffer); + printf("match [%s]: %s%s\n", buffer, gh ? "found by " : "NOT FOUND", gh ? gh->pattern : ""); + break; + } + } + globset_destroy(set); + return 0; +} |