From 1579b3d926e5a1438c2541dae50295d9a736b4aa Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Tue, 9 Jan 2018 17:11:25 +0300 Subject: [PATCH] machinarium: add machinarium_stat() test --- tests/machinarium_test.c | 3 +++ tests/makefile | 1 + tests/test_stat.c | 50 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 tests/test_stat.c diff --git a/tests/machinarium_test.c b/tests/machinarium_test.c index a7c98c4b..42934b55 100644 --- a/tests/machinarium_test.c +++ b/tests/machinarium_test.c @@ -21,6 +21,8 @@ extern void test_join(void); extern void test_condition0(void); extern void test_condition1(void); +extern void test_stat(void); + extern void test_signal0(void); extern void test_signal1(void); extern void test_signal2(void); @@ -86,6 +88,7 @@ main(int argc, char *argv[]) machinarium_test(test_join); machinarium_test(test_condition0); machinarium_test(test_condition1); + machinarium_test(test_stat); machinarium_test(test_signal0); machinarium_test(test_signal1); machinarium_test(test_signal2); diff --git a/tests/makefile b/tests/makefile index cafeb9d3..b692f454 100644 --- a/tests/makefile +++ b/tests/makefile @@ -15,6 +15,7 @@ OBJECTS = machinarium_test.o \ test_join.o \ test_condition0.o \ test_condition1.o \ + test_stat.o \ test_signal0.o \ test_signal1.o \ test_signal2.o \ diff --git a/tests/test_stat.c b/tests/test_stat.c new file mode 100644 index 00000000..7a12959d --- /dev/null +++ b/tests/test_stat.c @@ -0,0 +1,50 @@ + +/* + * machinarium. + * + * Cooperative multitasking engine. +*/ + +#include +#include + +static void +coroutine(void *arg) +{ + machine_sleep(100); +} + +void +test_stat(void) +{ + machinarium_init(); + + int count_machine = 0; + int count_coroutine = 0; + int count_coroutine_cache = 0; + + machinarium_stat(&count_machine, &count_coroutine, + &count_coroutine_cache); + + test(count_machine == 3); /* thread pool */ + + int id; + id = machine_create("test", coroutine, NULL); + test(id != -1); + + machinarium_stat(&count_machine, &count_coroutine, + &count_coroutine_cache); + + test(count_machine == 4); + + int rc; + rc = machine_wait(id); + test(rc != -1); + + machinarium_stat(&count_machine, &count_coroutine, + &count_coroutine_cache); + + test(count_machine == 3); + + machinarium_free(); +}