diff options
Diffstat (limited to 'src/fluent-bit/lib/monkey/api/errors.c')
-rw-r--r-- | src/fluent-bit/lib/monkey/api/errors.c | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/fluent-bit/lib/monkey/api/errors.c b/src/fluent-bit/lib/monkey/api/errors.c new file mode 100644 index 000000000..44e9c35fa --- /dev/null +++ b/src/fluent-bit/lib/monkey/api/errors.c @@ -0,0 +1,103 @@ +#include <monkey/mk_lib.h> +#include <mk_core/mk_unistd.h> + +#include <stdio.h> +#include <stdlib.h> +#include <signal.h> + +#define API_ADDR "127.0.0.1" +#define API_PORT "2020" + +/* Main context set as global so the signal handler can use it */ +mk_ctx_t *ctx; + +static void signal_handler(int signal) +{ + write(STDERR_FILENO, "[engine] caught signal\n", 23); + + switch (signal) { + case SIGTERM: + case SIGINT: + mk_stop(ctx); + mk_destroy(ctx); + _exit(EXIT_SUCCESS); + default: + break; + } +} + +static void signal_init() +{ + signal(SIGINT, &signal_handler); + signal(SIGTERM, &signal_handler); +} + +void cb_ok_200(mk_request_t *request, void *data) +{ + int i = 0; + (void) data; + char tmp[32]; + + mk_http_status(request, 200); + mk_http_header(request, "X-Monkey", 8, "OK", 2); + + for (i = 0; i < 100; i++) { + int len; + + len = snprintf(tmp, sizeof(tmp) - 1, "test %i\n", i); + mk_http_send(request, tmp, len, NULL); + } + mk_http_done(request); +} + +void cb_error_404(mk_request_t *request, void *data) +{ + int i = 0; + (void) data; + char tmp[32]; + + mk_http_status(request, 404); + mk_http_header(request, "X-Monkey", 8, "OK", 2); + + for (i = 0; i < 100; i++) { + int len; + + len = snprintf(tmp, sizeof(tmp) - 1, "test %i\n", i); + mk_http_send(request, tmp, len, NULL); + } + mk_http_done(request); +} + +int main() +{ + int vid; + + signal_init(); + + ctx = mk_create(); + if (!ctx) { + return -1; + } + + mk_config_set(ctx, + "Listen", API_PORT, + NULL); + + vid = mk_vhost_create(ctx, NULL); + mk_vhost_set(ctx, vid, + "Name", "mk_lib", + NULL); + + mk_vhost_handler(ctx, vid, "/200", cb_ok_200, NULL); + mk_vhost_handler(ctx, vid, "/404", cb_error_404, NULL); + mk_info("Service: http://%s:%s/404", API_ADDR, API_PORT); + mk_start(ctx); + + sleep(3600); + + mk_stop(ctx); + mk_destroy(ctx); + + + return 0; +} |