Пример #1
0
tap_ev
tap_ev_queue_shift_next(tap_ev_queue queue, const char * identifier)
{
    tap_ev  ev = queue->head;
    tap_ev  prev;

    if (ev == NULL) {
        assert(queue->queue_count == 0);
        return NULL;
    }

    if (strcmp(ev->identifier, identifier) == 0) {
        return tap_ev_queue_shift(queue);
    }

    for (prev = ev, ev = ev->next; ev != NULL; prev = ev, ev = ev->next) {
        if (strcmp(ev->identifier, identifier) == 0) {
            prev->next = ev->next;
            ev->next = NULL;
            assert(queue->queue_count != 0);
            queue->queue_count--;
            return ev;
        }
    }

    return NULL;
}
Пример #2
0
void
tap_ev_queue_flush(tap_ev_queue queue)
{
    tap_ev ev;

    while ((ev = tap_ev_queue_shift(queue)) != NULL) {
        tap_ev_free(ev);
    }
}
Пример #3
0
tap_ev
test_tap_ev_queue_shift_wait(tap_ev_queue queue, ev_tstamp seconds)
{
    tap_ev event;
    SXE_TIME deadline;
    SXE_TIME current;
    SXE_TIME wait_time;

    wait_time = SXE_TIME_FROM_DOUBLE_SECONDS(seconds);
    event     = tap_ev_queue_shift(queue);

    /* If the tap event queue was not empty, return the event.
     */
    if (event != NULL) {
        return event;
    }

    deadline = local_get_time() + wait_time;

    for (;;) {
        test_ev_loop_wait(SXE_TIME_TO_DOUBLE_SECONDS(wait_time));
        event = tap_ev_queue_shift(queue);

        if (event != NULL) {
            return event;
        }

        current = local_get_time();

        if (current >= deadline) {
            return NULL;
        }

        wait_time = deadline - current;
    }
}
Пример #4
0
int
main(int argc, char *argv[]) {
    tap_ev           ev;
    struct object   self;
    struct object * this = &self;
    char            expected[1024];
    pid_t           pid = getpid();

    plan_tests(28);

    MOCK_SET_HOOK(openlog, t_openlog);
    MOCK_SET_HOOK(syslog,  t_syslog);
    q_syslog = tap_ev_queue_new();

    sxe_log_use_syslog("my-program", LOG_NDELAY|LOG_PID, LOG_USER);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "openlog",             "sxe_log_use_syslog() calls openlog()");
    is_eq(tap_ev_arg(ev, "ident"), "my-program",        "sxe_log_use_syslog() calls openlog() with correct 'ident' parameter");
    is(tap_ev_arg(ev, "option"), LOG_NDELAY|LOG_PID,    "sxe_log_use_syslog() calls openlog() with correct 'option' parameter");
    is(tap_ev_arg(ev, "facility"), LOG_USER,            "sxe_log_use_syslog() calls openlog() with correct 'facility' parameter");

    SXEL10("SXEL10");
    snprintf(expected, sizeof expected, "T=%d ------ 1 - SXEL10\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL10() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_ERR,             "SXEL10() maps to LOG_ERR syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL10() is logged correctly");

    SXEL21("SXEL21(%s)", "arg1");
    snprintf(expected, sizeof expected, "T=%d ------ 2 - SXEL21(arg1)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL21() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_WARNING,         "SXEL21() maps to LOG_WARNING syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL21() is logged correctly");

    SXEL32("SXEL32(%s,%d)", "arg1", 22);
    snprintf(expected, sizeof expected, "T=%d ------ 3 - SXEL32(arg1,22)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL32() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_NOTICE,          "SXEL32() maps to LOG_NOTICE syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL32() is logged correctly");

    SXEL43("SXEL43(%s,%d,%u)", "arg1", 22, 44);
    snprintf(expected, sizeof expected, "T=%d ------ 4 - SXEL43(arg1,22,44)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL43() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_INFO,            "SXEL43() maps to LOG_INFO syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL43() is logged correctly");

    SXEL54("SXEL54(%s,%d,%u,%x)", "arg1", 22, 44, 64);
    snprintf(expected, sizeof expected, "T=%d ------ 5 - SXEL54(arg1,22,44,40)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL54() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_DEBUG,           "SXEL54() maps to LOG_DEBUG syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL54() is logged correctly");

    SXEL65("SXEL65(%s,%d,%u,%x,%.2f)", "arg1", 22, 44, 64, 3.1415926);
    snprintf(expected, sizeof expected, "T=%d ------ 6 - SXEL65(arg1,22,44,40,3.14)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL65() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_DEBUG,           "SXEL65() maps to LOG_DEBUG syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL65() is logged correctly");

    this->id = 99;
    SXEL10I("SXEL10I");
    snprintf(expected, sizeof expected, "T=%d     99 1 - SXEL10I\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL10I() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_ERR,             "SXEL10I() maps to LOG_ERR syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL10I() is logged correctly");

    this->id = 98;
    SXEL65I("SXEL65I(%s,%d,%u,%x,%.2f)", "arg1", 22, 44, 64, 3.1415926);
    snprintf(expected, sizeof expected, "T=%d     98 6 - SXEL65I(arg1,22,44,40,3.14)\n", pid);
    ev = tap_ev_queue_shift(q_syslog);
    is_eq(tap_ev_identifier(ev), "syslog",              "SXEL65I() calls syslog()");
    is(tap_ev_arg(ev, "priority"), LOG_DEBUG,           "SXEL65I() maps to LOG_DEBUG syslog level");
    is_eq(tap_ev_arg(ev, "logline"), expected,          "SXEL65I() is logged correctly");

    sxe_log_hook_buffer_prefix(NULL); /* For coverage */
    (void)argc;
    (void)argv;

    return exit_status();
}
Пример #5
0
tap_ev
tap_ev_shift(void)
{
    return tap_ev_queue_shift(&tap_ev_queue_default);
}