示例#1
0
int
check_zeroes(seL4_Word addr, seL4_Word size_bytes)
{
    test_assert_fatal(IS_ALIGNED(addr, sizeof(seL4_Word)));
    test_assert_fatal(IS_ALIGNED(size_bytes, sizeof(seL4_Word)));
    seL4_Word *p = (void*)addr;
    seL4_Word size_words = size_bytes / sizeof(seL4_Word);
    while (size_words--) {
        if (*p++ != 0) {
            LOG_ERROR("Found non-zero at position %d: %d\n", ((int)p) - (addr), p[-1]);
            return 0;
        }
    }
    return 1;
}
示例#2
0
文件: timer.c 项目: seL4/sel4test
int
test_timer(driver_env_t env)
{
    int error = ltimer_set_timeout(&env->timer.ltimer, 1 * NS_IN_S, TIMEOUT_PERIODIC);
    test_assert_fatal(!error);

    for (int i = 0; i < 3; i++) {
        wait_for_timer_interrupt(env);
        ZF_LOGV("Tick\n");
    }

    error = ltimer_reset(&env->timer.ltimer);
    test_assert_fatal(!error);

    return sel4test_get_result();
}
示例#3
0
文件: timer.c 项目: seL4/sel4test
int
test_gettime_timeout(driver_env_t env)
{
    int error = 0;
    uint64_t start, end;

    start = timestamp(env);
    error = ltimer_set_timeout(&env->timer.ltimer, 1 * NS_IN_MS, TIMEOUT_PERIODIC);
    test_assert_fatal(!error);

    for (int i = 0; i < 3; i++) {
        wait_for_timer_interrupt(env);
        ZF_LOGV("Tick\n");
    }

    end = timestamp(env);

    test_gt(end, start);

    error = ltimer_reset(&env->timer.ltimer);
    test_assert_fatal(!error);

    return sel4test_get_result();
}
示例#4
0
文件: test.c 项目: BwRy/seL4_libs
void
sel4test_run_tests(const char *name, int (*run_test)(struct testcase *t)) {

    /* Count how many tests actually exist and allocate space for them */
    int max_tests = (int)(__stop__test_case - __start__test_case);
    struct testcase *tests[max_tests];

    /* Extract and filter the tests based on the regex */
    regex_t reg;
    int error = regcomp(&reg, CONFIG_TESTPRINTER_REGEX, REG_EXTENDED | REG_NOSUB);
    if (error != 0) {
        printf("Error compiling regex \"%s\"\n", CONFIG_TESTPRINTER_REGEX);
        return;
    }

    int num_tests = 0;
    for (struct testcase *i = __start__test_case; i < __stop__test_case; i++) {
        if (regexec(&reg, i->name, 0, NULL, 0) == 0) {
             tests[num_tests] = i;
             num_tests++;
         }
     }
     
    regfree(&reg);

    /* Sort the tests to remove any non determinism in test ordering */
    qsort(tests, num_tests, sizeof(struct testcase*), test_comparator);

    /* Now that they are sorted we can easily ensure there are no duplicate tests.
     * this just ensures some sanity as if there are duplicates, they could have some
     * arbitrary ordering, which might result in difficulty reproducing test failures */
     for (int i = 1; i < num_tests; i++) {
         test_assert_fatal(strcmp(tests[i]->name, tests[i - 1]->name) != 0);
     }

     sel4test_start_suite(name);
     /* Run tests */
     for (int i = 0; i < num_tests; i++) {
         sel4test_start_test(tests[i]->name);
         int result = run_test(tests[i]);
         if (result != SUCCESS) {
             current_test_passed = false;
         }
         sel4test_end_test();
     }

     /* Run the tests backwards... */
     for (int i = num_tests - 1; i >= 0; i--) {
         assert(tests[i]->name != NULL);
         /* junit doesn't like duplicate test names */
         int length = strlen(tests[i]->name);
         char name_copy[length + 2];
         strncpy(name_copy, tests[i]->name, length);
         name_copy[length] = '2';
         name_copy[length + 1] = '\0';
         sel4test_start_test(name_copy);
         int result = run_test(tests[i]);
         if (result != SUCCESS) {
              current_test_passed = false;
         }
         sel4test_end_test();
     }
 
     sel4test_end_suite();

     /* Print closing banner. */
     printf("\n");
     int tests_run, passes, failures;
     sel4_test_get_suite_results(&tests_run, &passes, &failures);
     printf("%d/%d tests passed.\n", tests_run - failures, tests_run);
     if (failures > 0) {
         printf("*** FAILURES DETECTED ***\n");
     } else {
         printf("All is well in the universe.\n");
     }
     printf("\n\n");
}
示例#5
0
文件: trivial.c 项目: BwRy/sel4test
int test_trivial(env_t env)
{
    test_assert_fatal(2 > 1);
    return sel4test_get_result();
}