Commit dc9297b7 authored by Maria Matejka's avatar Maria Matejka
Browse files

Tests: added a simple benchmark

parent 4e164bb3
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -174,12 +174,14 @@ $(tests_targets): %: %.o $(tests_objs) | prepare
$(tests_targets): LIBS += $(DAEMON_LIBS)

$(tests_targets_ok): %.ok: %
	$(Q)$* 2>/dev/null && touch $*.ok
	$(Q)$* $(TESTFLAGS) 2>/dev/null && touch $*.ok

test: testsclean check
check: tests tests_run
tests: $(tests_targets)
tests_run: $(tests_targets_ok)
benchmark: test
benchmark: TESTFLAGS+=-b

tags:
	cd $(srcdir) ; etags -lc `find $(dirs) -name *.[chY]`
+27 −5
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>

#include <sys/ioctl.h>
@@ -35,6 +36,7 @@ static int no_fork;
static int no_timeout;
static int is_terminal;		/* Whether stdout is a live terminal or pipe redirect */

int bt_benchmark;
uint bt_verbose;
const char *bt_filename;
const char *bt_test_id;
@@ -67,9 +69,14 @@ bt_init(int argc, char *argv[])
  bt_test_id = NULL;
  is_terminal = isatty(fileno(stdout));

  while ((c = getopt(argc, argv, "lcftv")) >= 0)
  while ((c = getopt(argc, argv, "blcftv")) >= 0)
    switch (c)
    {
      case 'b':
	bt_benchmark = 1;
	no_timeout = 1;
	break;

      case 'l':
	list_tests = 1;
	break;
@@ -155,10 +162,25 @@ int bt_run_test_fn(int (*fn)(const void *), const void *fn_arg, int timeout)
  int result;
  alarm(timeout);

  if (bt_benchmark) {
    for (int i=0; i<11; i++) {
      struct timespec begin, end;
      clock_gettime(CLOCK_MONOTONIC, &begin);
      if (fn_arg)
	result = fn(fn_arg);
      else
	result = ((int (*)(void))fn)();
      clock_gettime(CLOCK_MONOTONIC, &end);
      s64 dif = (end.tv_sec - begin.tv_sec) * 1000000000 + end.tv_nsec - begin.tv_nsec;
      if (i)
	bt_log("benchmark: %ld", dif);
    }
  } else {
    if (fn_arg)
      result = fn(fn_arg);
    else
      result = ((int (*)(void))fn)();
  }

  if (!bt_suite_result)
    result = 0;
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
extern int bt_result;
extern int bt_suite_result;
extern char bt_out_fmt_buf[1024];
extern int bt_benchmark;

extern uint bt_verbose;
#define BT_VERBOSE_NO			0