Beispiel #1
0
void task_func(void *sched)
{
	struct timeval prev;

	printf("%s start\n", __FUNCTION__);
	XTEST(gettimeofday(&prev, NULL) == 0);
	rinoo_task_wait(sched, 100);
	XTEST(check_time(&prev, 100) == 0);
	rinoo_task_wait(sched, 200);
	XTEST(check_time(&prev, 200) == 0);
	rinoo_task_wait(sched, 500);
	XTEST(check_time(&prev, 500) == 0);
	rinoo_task_wait(sched, 1000);
	XTEST(check_time(&prev, 1000) == 0);
	printf("%s end\n", __FUNCTION__);
}
Beispiel #2
0
void event_generator(void *sched)
{
	int i;
	int fd;
	char path[100];

	rinoo_task_wait(sched, 200);
	for (i = 0; i < NB_EVENT / 2; i++) {
		snprintf(path, sizeof(path), TEST_DIRECTORY ".inotify.XXXXXX");
		fd = mkstemp(path);
		close(fd);
		rinoo_log("Event generator: file created.");
		nb_create++;
		rinoo_task_wait(sched, 200);
		unlink(path);
		nb_rm++;
		rinoo_log("Event generator: file removed.");
		rinoo_task_wait(sched, 200);
	}
}
Beispiel #3
0
void rsc_start_client(void *client_sched)
{
    bool redo;
    uint32_t i;
    t_email email;
    t_session session = { 0 };

    redo = true;
    email = *config->email;
    session.email = &email;
    session.helo = config->session.helo;
    session.read = buffer_create(NULL);
    if (session.read == NULL) {
        goto send_error;
    }
    session.write = buffer_create(NULL);
    if (session.write == NULL) {
        goto send_error;
    }
    rinoo_email_session_set(&email, &session);
    while (redo) {
        session.socket = rinoo_tcp_client(client_sched, &config->connection.ip, config->connection.port, config->connection.timeout * 1000);
        if (session.socket == NULL) {
            rinoo_log("Error: %s", strerror(errno));
            config->stats.thread[rinoo_sched_self()->id].failed++;
            rsc_log(config, RSC_LOG_ERROR, "Couldn't create socket to %s:%d", config->connection.server, config->connection.port);
            goto send_error;
        }
        config->stats.thread[rinoo_sched_self()->id].sessions++;
        if (rinoo_smtp_start(&email) != 0) {
            goto send_error;
        }
        for (i = 0; i < config->session.nbmsg; i++) {
            if (rinoo_smtp_send(&email) != 0) {
                goto send_error;
            }
            config->stats.thread[rinoo_sched_self()->id].sent++;
        }
        if (rinoo_smtp_end(&email) != 0) {
            goto send_error;
        }
        rinoo_socket_destroy(session.socket);
        session.socket = NULL;
        config->stats.thread[rinoo_sched_self()->id].sessions--;
        if (config->mode == RSC_MODE_SECOND) {
            if (rinoo_task_wait(client_sched, 1000) != 0) {
                goto send_error;
            }
        } else if (config->mode != RSC_MODE_FLOOD) {
            redo = false;
        }
    }
send_error:
    if (session.read != NULL) {
        buffer_destroy(session.read);
    }
    if (session.write != NULL) {
        buffer_destroy(session.write);
    }
    if (session.socket != NULL) {
        config->stats.thread[rinoo_sched_self()->id].sessions--;
        config->stats.thread[rinoo_sched_self()->id].failed++;
        rinoo_socket_destroy(session.socket);
    }
    if (__atomic_fetch_sub(&thread_counter, 1, __ATOMIC_SEQ_CST) == 1) {
        sched->stop = true;
    }
}
Beispiel #4
0
void rsc_stat_aggregate(void *unused(arg))
{
    while (rinoo_task_wait(sched, 1000) == 0) {
        rsc_stats();
    }
}