[Issue #1] Added time measurements
This commit is contained in:
parent
96c05610cc
commit
c28cff39b8
4 changed files with 29 additions and 10 deletions
|
@ -46,6 +46,7 @@ struct criterion_test_stats {
|
|||
int passed_asserts;
|
||||
int failed_asserts;
|
||||
int signal;
|
||||
float elapsed_time;
|
||||
unsigned progress;
|
||||
const char *file;
|
||||
|
||||
|
|
24
src/event.c
24
src/event.c
|
@ -40,15 +40,25 @@ struct event *read_event(int fd) {
|
|||
if (read(fd, &kind, sizeof (unsigned)) < (ssize_t) sizeof (unsigned))
|
||||
return NULL;
|
||||
|
||||
if (kind != ASSERT)
|
||||
return unique_ptr(struct event, ({ .kind = kind, .data = NULL }));
|
||||
switch (kind) {
|
||||
case ASSERT: {
|
||||
const size_t assert_size = sizeof (struct criterion_assert_stats);
|
||||
unsigned char *buf = malloc(assert_size);
|
||||
if (read(fd, buf, assert_size) < (ssize_t) assert_size)
|
||||
return NULL;
|
||||
|
||||
const size_t assert_size = sizeof (struct criterion_assert_stats);
|
||||
unsigned char *buf = malloc(assert_size);
|
||||
if (read(fd, buf, assert_size) < (ssize_t) assert_size)
|
||||
return NULL;
|
||||
return unique_ptr(struct event, ({ .kind = kind, .data = buf }), destroy_event);
|
||||
}
|
||||
case POST_TEST: {
|
||||
float *elapsed_time = malloc(sizeof (float));
|
||||
if (read(fd, elapsed_time, sizeof (float)) < (ssize_t) sizeof (float))
|
||||
return NULL;
|
||||
|
||||
return unique_ptr(struct event, ({ .kind = kind, .data = buf }), destroy_event);
|
||||
return unique_ptr(struct event, ({ .kind = kind, .data = elapsed_time }), destroy_event);
|
||||
}
|
||||
default:
|
||||
return unique_ptr(struct event, ({ .kind = kind, .data = NULL }));
|
||||
}
|
||||
}
|
||||
|
||||
void send_event(int kind, void *data, size_t size) {
|
||||
|
|
11
src/runner.c
11
src/runner.c
|
@ -24,6 +24,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <csptr/smart_ptr.h>
|
||||
#include "criterion/options.h"
|
||||
#include "stats.h"
|
||||
|
@ -87,8 +88,13 @@ static void run_test_child(struct criterion_test *test) {
|
|||
send_event(PRE_INIT, NULL, 0);
|
||||
(test->data->init ?: nothing)();
|
||||
send_event(PRE_TEST, NULL, 0);
|
||||
|
||||
clock_t before = clock();
|
||||
(test->test ?: nothing)();
|
||||
send_event(POST_TEST, NULL, 0);
|
||||
clock_t after = clock();
|
||||
|
||||
double elapsed_time = (double) (after - before) / CLOCKS_PER_SEC;
|
||||
send_event(POST_TEST, &elapsed_time, sizeof (double));
|
||||
(test->data->fini ?: nothing)();
|
||||
send_event(POST_FINI, NULL, 0);
|
||||
}
|
||||
|
@ -124,7 +130,8 @@ static void run_test(struct criterion_global_stats *stats, struct criterion_test
|
|||
stat_push_event(stats, test_stats, &ev);
|
||||
report(TEST_CRASH, test_stats);
|
||||
} else {
|
||||
struct event ev = { .kind = POST_TEST };
|
||||
double elapsed_time = 0;
|
||||
struct event ev = { .kind = POST_TEST, .data = &elapsed_time };
|
||||
stat_push_event(stats, test_stats, &ev);
|
||||
report(POST_TEST, test_stats);
|
||||
|
||||
|
|
|
@ -114,7 +114,8 @@ static void push_assert(s_glob_stats *stats,
|
|||
|
||||
static void push_post_test(s_glob_stats *stats,
|
||||
s_test_stats *test,
|
||||
UNUSED void *ptr) {
|
||||
float *ptr) {
|
||||
test->elapsed_time = *ptr;
|
||||
if (test->failed_asserts > 0 || test->signal != test->test->data->signal) {
|
||||
test->failed = 1;
|
||||
++stats->tests_failed;
|
||||
|
|
Loading…
Add table
Reference in a new issue