From c96122a687932c61b9b47d38738d1bf6af2da7d4 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Mon, 15 May 2017 17:10:58 +0300 Subject: [PATCH] machinarium: add io create and connect tests --- test-suite/machinarium_test.c | 5 +++ test-suite/makefile | 5 ++- test-suite/test_connect.c | 67 +++++++++++++++++++++++++++++++++++ test-suite/test_io_new.c | 25 +++++++++++++ 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 test-suite/test_connect.c create mode 100644 test-suite/test_io_new.c diff --git a/test-suite/machinarium_test.c b/test-suite/machinarium_test.c index 2ab79027..eaeca96b 100644 --- a/test-suite/machinarium_test.c +++ b/test-suite/machinarium_test.c @@ -20,6 +20,9 @@ extern void test_wait(void); extern void test_condition0(void); extern void test_condition1(void); +extern void test_io_new(void); +extern void test_connect(void); + int main(int argc, char *argv[]) { @@ -32,5 +35,7 @@ main(int argc, char *argv[]) machinarium_test(test_wait); machinarium_test(test_condition0); machinarium_test(test_condition1); + machinarium_test(test_io_new); + machinarium_test(test_connect); return 0; } diff --git a/test-suite/makefile b/test-suite/makefile index 086bbd9f..330a0580 100644 --- a/test-suite/makefile +++ b/test-suite/makefile @@ -13,7 +13,10 @@ OBJECTS = machinarium_test.o \ test_sleep_cancel1.o \ test_wait.o \ test_condition0.o \ - test_condition1.o + test_condition1.o \ + test_io_new.o \ + test_connect.o + all: clean $(OBJECTS) machinarium_test machinarium_test: $(CC) $(OBJECTS) $(LFLAGS) -o machinarium_test diff --git a/test-suite/test_connect.c b/test-suite/test_connect.c new file mode 100644 index 00000000..56c3be1d --- /dev/null +++ b/test-suite/test_connect.c @@ -0,0 +1,67 @@ + +/* + * machinarium. + * + * Cooperative multitasking engine. +*/ + +#include +#include + +#include + +static void +test_connect_fiber(void *arg) +{ + machine_t machine = arg; + + machine_io_t client = machine_create_io(machine); + test(client != NULL); + + struct sockaddr_in sa; + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = inet_addr("213.180.204.3"); + sa.sin_port = htons(80); + int rc; + rc = machine_connect(client, (struct sockaddr *)&sa, INT_MAX); + if (rc == -1) { + printf("connection failed: %s\n", machine_error(client)); + } else { + machine_close(client); + } + + machine_free_io(client); +} + +static void +test_waiter(void *arg) +{ + machine_t machine = arg; + + int id = machine_create_fiber(machine, test_connect_fiber, machine); + test(id != -1); + + machine_sleep(machine, 0); + + int rc; + rc = machine_wait(machine, id); + test(rc == 0); + + machine_stop(machine); +} + +void +test_connect(void) +{ + machine_t machine = machine_create(); + test(machine != NULL); + + int rc; + rc = machine_create_fiber(machine, test_waiter, machine); + test(rc != -1); + + machine_start(machine); + + rc = machine_free(machine); + test(rc != -1); +} diff --git a/test-suite/test_io_new.c b/test-suite/test_io_new.c new file mode 100644 index 00000000..aba205fc --- /dev/null +++ b/test-suite/test_io_new.c @@ -0,0 +1,25 @@ + +/* + * machinarium. + * + * Cooperative multitasking engine. +*/ + +#include +#include + +void +test_io_new(void) +{ + machine_t machine = machine_create(); + test(machine != NULL); + + machine_io_t io = machine_create_io(machine); + test(io != NULL); + + machine_free_io(io); + + int rc; + rc = machine_free(machine); + test(rc != -1); +}