Exemple #1
0
	bool Thread::Resume() {
		if (was_started() && thread_handle_ != nullptr) {
			ResumeThread(thread_handle_);
			return true;
		}
		return false;
	}
Exemple #2
0
	bool Thread::Suspend() {
		if (was_started() && thread_handle_ != nullptr) {
			SuspendThread(thread_handle_);
			return true;
		}
		return false;
	}
Exemple #3
0
	void Thread::Stop() {
		if (!was_started()) {
			return;
		}
		StopInternal();
		ThreadHelper::Join(thread_handle_);
		assert(!message_loop_);
		was_started_ = false;
		stopping_ = false;
	}
Exemple #4
0
static void test_analyze_results(struct test *test, int *stdo, int *stde)
{
    scanstate scanner;
    char scanbuf[BUFSIZ];

    *stdo = *stde = -1;

    if(was_aborted(test->status)) {
        test_failures++;
        return;
    }

    if(was_disabled(test->status)) {
        return;
    }

    if(test->status == test_has_failed) {
        test_failures++;
        return;
    }

    if(!was_started(test->status)) {
        test_failures++;
        return;
    }

    test->stdout_match = match_unknown;
    test->stderr_match = match_unknown;

    scanstate_init(&scanner, scanbuf, sizeof(scanbuf));
    scan_sections(test, &test->testscanner, parse_section_compare, &scanner);

    assert(test->stdout_match != match_inprogress);
    assert(test->stderr_match != match_inprogress);

    if(test->stdout_match == match_unknown) {
        test->stdout_match = (fd_has_data(test, test->outfd) ? match_no : match_yes);
    }
    if(test->stderr_match == match_unknown) {
        test->stderr_match = (fd_has_data(test, test->errfd) ? match_no : match_yes);
    }

    *stdo = (test->stdout_match != match_yes);
    *stde = (test->stderr_match != match_yes);

    if(!*stdo && !*stde && !test->exitsignal) {
        test_successes++;
    } else {
        test_failures++;
    }
}
Exemple #5
0
static void dump_reason(struct test *test, const char *name)
{
    fprintf(stderr, "ERROR Test %s", name);
    if(!was_started(test->status)) {
        fprintf(stderr, " by %s", convert_testfile_name(test->last_file_processed));
        if(test->status_reason) {
            printf(": ");
        }
    }
    if(test->status_reason) {
        fprintf(stderr, ": %s", test->status_reason);
    }
    fprintf(stderr, "\n");
}
Exemple #6
0
static void print_reason(struct test *test, const char *name, const char *prep)
{
    printf("%s %-25s ", name, convert_testfile_name(test->testfile));
    if(!was_started(test->status)) {
        printf("%s %s", prep, test->last_file_processed);
        if(test->status_reason) {
            printf(": ");
        }
    }
    if(test->status_reason) {
        printf("%s", test->status_reason);
    }
    printf("\n");
}
Exemple #7
0
void dump_results(struct test *test)
{
    int tempref = 0;

    if(was_aborted(test->status)) {
        dump_reason(test, "was aborted");
        return;
    }

    if(was_disabled(test->status)) {
        dump_reason(test, "is disabled");
        return;

    }

    if(!was_started(test->status)) {
        fprintf(stderr, "Error: %s was not started due to errors in %s.\n",
                convert_testfile_name(test->testfile), test->last_file_processed);
        test_failures++;
        return;
    }

    // The command section has already been dumped.  We just
    // need to dump the STDERR and STDOUT results.

    test->stdout_match = match_unknown;
    test->stderr_match = match_unknown;

    scan_sections(test, &test->testscanner, parse_section_output, &tempref);

    // if any sections haven't been output, but they differ from
    // the default, then they need to be output here at the end.
    if(test->stderr_match == match_unknown && fd_has_data(test, test->errfd)) {
        write_strconst(test->rewritefd, "STDERR:\n");
        write_file(test, test->rewritefd, test->errfd, NULL);
    }
    if(test->stdout_match == match_unknown && fd_has_data(test, test->outfd)) {
        write_strconst(test->rewritefd, "STDOUT:\n");
        write_file(test, test->rewritefd, test->outfd, NULL);
    }
}
Exemple #8
0
void test_results(struct test *test)
{
    int stdo, stde; // true if there are differences.

    test_analyze_results(test, &stdo, &stde);

    if(was_aborted(test->status)) {
        print_reason(test, "ABRT", "by");
        return;
    }

    if(was_disabled(test->status)) {
        if(verbose) {
            print_reason(test, "dis ", "by");
        }
        return;
    }

    if(test->status == test_has_failed) {
        if(verbose) {
            print_reason(test, "FAIL", "by");
        } else {
            putchar('F');
            fflush(stdout);
        }
        return;
    }

    if(!was_started(test->status)) {
        if(verbose) {
            print_reason(test, "ERR ", "error in");
        } else {
            putchar('E');
            fflush(stdout);
        }
        return;
    }

    if(!stdo && !stde && !test->exitsignal) {
        if(verbose) {
            printf("ok   %s \n", convert_testfile_name(test->testfile));
        } else {
            putchar('.');
            fflush(stdout);
        }
    } else {
        if(verbose) {
            printf("FAIL %-25s ", convert_testfile_name(test->testfile));
            if(test->exitsignal) {
                printf("terminated by signal %d%s", test->exitsignal,
                        (test->exitcored ? " with core" : ""));
            } else {
                printf("%c%c  ",
                        (stdo ? 'O' : '.'),
                        (stde ? 'E' : '.'));
                if(stdo || stde) {
                    if(stdo) printf("stdout ");
                    if(stdo && stde) printf("and ");
                    if(stde) printf("stderr ");
                    printf("differed");
                }
            }
            printf("\n");
        } else {
            putchar('F');
            fflush(stdout);
        }
    }

    return;
}