180 lines
3.5 KiB
C
180 lines
3.5 KiB
C
#include <stdlib.h>
|
|
#include <check.h>
|
|
#include <stdio.h>
|
|
|
|
#include "monitor.h"
|
|
|
|
static const char *valids[] = {
|
|
"tcp://localhost:8181",
|
|
"tcp://127.0.0.1:81",
|
|
"udp://localhost:8000",
|
|
"udp://192.168.13.37:1234",
|
|
//"tcp://::1:8000",
|
|
"unix:///tmp/test/test.sock",
|
|
"unix://foo.sock",
|
|
NULL};
|
|
|
|
static const char *valids6[] = {
|
|
"tcp://localhost:8181",
|
|
"udp://localhost:8000",
|
|
//"tcp://::1:8000",
|
|
"unix:///tmp/test/test.sock",
|
|
"unix://foo.sock",
|
|
NULL};
|
|
|
|
static const char *invalids[] = {
|
|
"localhost:8000",
|
|
"ttt://127.0.0.1:81",
|
|
"tcp://","udp://", "unix://",
|
|
"tcp://localhost",
|
|
};
|
|
|
|
START_TEST(test_check_sock_valid)
|
|
{
|
|
int ret;
|
|
const char **urls;
|
|
char err_msg[256];
|
|
|
|
for(urls=valids; *urls != NULL; urls++)
|
|
{
|
|
ret = pyfcgi_monitor_check_sock(*urls);
|
|
snprintf(err_msg, 256,
|
|
"returns %d != 0 but '%s' given",
|
|
ret, *urls);
|
|
ck_assert_msg(ret == 0, err_msg);
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test_check_sock_invalid)
|
|
{
|
|
int ret;
|
|
const char **urls;
|
|
char err_msg[256];
|
|
|
|
for(urls=invalids; *urls != NULL; urls++)
|
|
{
|
|
ret = pyfcgi_monitor_check_sock(*urls);
|
|
snprintf(err_msg, 256,
|
|
"returns %d != -1 but '%s' given",
|
|
ret, *urls);
|
|
ck_assert_msg(ret == -1, err_msg);
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test_parse_sock_valid_ipv4)
|
|
{
|
|
pyfcgi_monitor_addr_t addr;
|
|
int domain, type, protocol, args[3], ret, i;
|
|
const char **urls;
|
|
char err_msg[256];
|
|
|
|
const int expt_ret[] = {
|
|
AF_INET, SOCK_STREAM, 0,
|
|
AF_INET, SOCK_STREAM, 0,
|
|
AF_INET, SOCK_DGRAM, 0,
|
|
AF_INET, SOCK_DGRAM, 0,
|
|
AF_UNIX, SOCK_STREAM, 0,
|
|
AF_UNIX, SOCK_STREAM, 0,};
|
|
const int *expts = expt_ret;
|
|
|
|
PyFCGI_conf.ipv4 = 1;
|
|
i=0;
|
|
|
|
for(urls=valids; *urls != NULL; urls++)
|
|
{
|
|
ret = pyfcgi_monitor_parse_sock(*urls, args, &addr);
|
|
snprintf(err_msg, 256,
|
|
"returns %d != 0 but '%s' given",
|
|
ret, *urls);
|
|
ck_assert_msg(ret == 0, err_msg);
|
|
|
|
domain = args[0];
|
|
type = args[1];
|
|
protocol = args[2];
|
|
|
|
ck_assert_int_eq(expts[0], domain);
|
|
ck_assert_int_eq(expts[1], type);
|
|
ck_assert_int_eq(expts[2], protocol);
|
|
|
|
/**@todo check returned address */
|
|
expts+=3;
|
|
i+=1;
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test_parse_sock_valid_ipv6)
|
|
{
|
|
pyfcgi_monitor_addr_t addr;
|
|
int domain, type, protocol, args[3], ret, i;
|
|
const char **urls;
|
|
char err_msg[256];
|
|
|
|
const int expt_ret[] = {
|
|
AF_INET6, SOCK_STREAM, 0,
|
|
AF_INET6, SOCK_DGRAM, 0,
|
|
AF_UNIX, SOCK_STREAM, 0,
|
|
AF_UNIX, SOCK_STREAM, 0,};
|
|
const int *expts = expt_ret;
|
|
|
|
PyFCGI_conf.ipv6 = 1;
|
|
i=0;
|
|
|
|
for(urls=valids6; *urls != NULL; urls++)
|
|
{
|
|
ret = pyfcgi_monitor_parse_sock(*urls, args, &addr);
|
|
snprintf(err_msg, 256,
|
|
"returns %d != 0 but '%s' given",
|
|
ret, *urls);
|
|
ck_assert_msg(ret == 0, err_msg);
|
|
|
|
domain = args[0];
|
|
type = args[1];
|
|
protocol = args[2];
|
|
|
|
ck_assert_int_eq(expts[0], domain);
|
|
ck_assert_int_eq(expts[1], type);
|
|
ck_assert_int_eq(expts[2], protocol);
|
|
|
|
/**@todo check returned address */
|
|
expts+=3;
|
|
i+=1;
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
|
|
Suite * logger_suite(void)
|
|
{
|
|
Suite *s;
|
|
TCase *tc_sockurl;
|
|
|
|
s = suite_create("Monitoring server");
|
|
tc_sockurl = tcase_create("Socket URL handling functions");
|
|
tcase_add_test(tc_sockurl, test_check_sock_valid);
|
|
tcase_add_test(tc_sockurl, test_check_sock_invalid);
|
|
tcase_add_test(tc_sockurl, test_parse_sock_valid_ipv4);
|
|
tcase_add_test(tc_sockurl, test_parse_sock_valid_ipv6);
|
|
|
|
suite_add_tcase(s, tc_sockurl);
|
|
return s;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int nfailed;
|
|
Suite *s;
|
|
SRunner *sr;
|
|
|
|
s = logger_suite();
|
|
sr = srunner_create(s);
|
|
|
|
srunner_run_all(sr, CK_VERBOSE);
|
|
nfailed = srunner_ntests_failed(sr);
|
|
srunner_free(sr);
|
|
|
|
return (!nfailed)?EXIT_SUCCESS:EXIT_FAILURE;
|
|
}
|
|
|