Пример #1
0
int main (int argc, char const *argv[]) {
    SMFSettings_T *settings = smf_settings_new();
    int pipefd[2];
    char *fname;

    printf("Start smf_pipe tests...\n");

    fflush(stdout); 

    if (pipe(pipefd)) {
        return -1;
    }

    printf("* preparing pipe engine...\t\t\t");
    smf_settings_set_debug(settings, 1);
    smf_settings_set_queue_dir(settings, BINARY_DIR);
    smf_settings_set_engine(settings, "pipe");
    smf_settings_set_nexthop(settings, "/dev/null");
    
    /* add test modules */
    smf_settings_add_module(settings, BINARY_DIR "/libtestmod1.so");
    smf_settings_add_module(settings, BINARY_DIR "/libtestmod2.so");

    asprintf(&fname, "%s/m0001.txt",SAMPLES_DIR);

    switch (fork()) {
        case -1:
            printf("failed\n");
            return -1;
        case 0:
            close(pipefd[0]); 
            dup2(pipefd[1], 1); 
            close(pipefd[1]);  
            execl("/bin/cat", "cat", fname, (char *)NULL);
            
            break;
        default:
            close(pipefd[1]);  
            dup2(pipefd[0], 0);
            close(pipefd[0]); 
            printf("passed\n");
            printf("* sending test message...\t\t\t\t");
            if (load(settings) != 0) {
                printf("failed\n");
                return -1;
            }

            printf("passed\n");
            break;
    }
    free(fname);
    smf_settings_free(settings);
    return 0;
}
Пример #2
0
END_TEST

START_TEST(process_err_nexthop_err) {
    smf_settings_set_nexthop(settings, "something_that_not_exists");
        
    smf_list_append(settings->modules, smf_module_create_callback("mod1", mod1));
    smf_list_append(settings->modules, smf_module_create_callback("mod2", mod2));
    smf_list_append(settings->modules, smf_module_create_callback("mod3", mod3));
    fail_unless(smf_list_size(settings->modules) == 3);
        
    mod2_data.rc = 1; // != 0 is that counts
    processing_error_data.rc = 2; // stop the queue, invoke nexthop
     
    fail_unless(smf_modules_process(queue, session, settings) == -1);
    fail_unless(mod1_data.count == 1);
    fail_unless(mod2_data.count == 1);
    fail_unless(mod3_data.count == 0);
    fail_unless(error_data.count == 0);
    fail_unless(processing_error_data.count == 1);
    fail_unless(nexthop_error_data.count == 1);
}