various bug fixes
This commit is contained in:
@@ -42,7 +42,7 @@ std::string str = "welcome to the machine";
|
||||
/****************************************************************************/
|
||||
|
||||
//
|
||||
int ipv4_tcp_client_test(char *path, char *nwid, struct sockaddr_in *addr, int port)
|
||||
int ipv4_tcp_client_test(struct sockaddr_in *addr, int port)
|
||||
{
|
||||
int sockfd, err;
|
||||
if((sockfd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
@@ -53,13 +53,16 @@ int ipv4_tcp_client_test(char *path, char *nwid, struct sockaddr_in *addr, int p
|
||||
printf("error connecting to remote host (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
printf("sleeping... before writing to fd = %d\n", sockfd);
|
||||
int wrote = zts_write(sockfd, str.c_str(), str.length());
|
||||
while(1)
|
||||
sleep(1);
|
||||
err = zts_close(sockfd);
|
||||
return (wrote == str.length() && !err) ? PASSED : FAILED; // if wrote correct number of bytes
|
||||
}
|
||||
|
||||
//
|
||||
int ipv6_tcp_client_test(char *path, char *nwid, struct sockaddr_in6 *addr, int port)
|
||||
int ipv6_tcp_client_test(struct sockaddr_in6 *addr, int port)
|
||||
{
|
||||
int sockfd, err;
|
||||
if((sockfd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
@@ -83,7 +86,7 @@ int ipv6_tcp_client_test(char *path, char *nwid, struct sockaddr_in6 *addr, int
|
||||
/****************************************************************************/
|
||||
|
||||
//
|
||||
int ipv4_tcp_server_test(char *path, char *nwid, struct sockaddr_in *addr, int port)
|
||||
int ipv4_tcp_server_test(struct sockaddr_in *addr, int port)
|
||||
{
|
||||
int sockfd, err;
|
||||
if((sockfd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
@@ -94,22 +97,27 @@ int ipv4_tcp_server_test(char *path, char *nwid, struct sockaddr_in *addr, int p
|
||||
printf("error binding to interface (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
if((err = zts_listen(sockfd, 1)) < 0) {
|
||||
if((err = zts_listen(sockfd, 100)) < 0) {
|
||||
printf("error placing socket in LISTENING state (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
// TODO: handle new address
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr)) < 0)) {
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr))) < 0) {
|
||||
printf("error accepting connection (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
int wrote = zts_write(sockfd, str.c_str(), str.length());
|
||||
err = zts_close(sockfd);
|
||||
return (wrote == str.length() && !err) ? PASSED : FAILED; // if wrote correct number of bytes
|
||||
sleep(3);
|
||||
printf("accept fd = %d\n", err);
|
||||
char buf[32];
|
||||
int read = zts_read(err, buf, sizeof buf);
|
||||
printf("buf = %s\n", buf);
|
||||
err = zts_close(err);
|
||||
//return (wrote == str.length() && !err) ? PASSED : FAILED; // if wrote correct number of bytes
|
||||
return err;
|
||||
}
|
||||
|
||||
//
|
||||
int ipv6_tcp_server_test(char *path, char *nwid, struct sockaddr_in6 *addr, int port)
|
||||
int ipv6_tcp_server_test(struct sockaddr_in6 *addr, int port)
|
||||
{
|
||||
int sockfd, err;
|
||||
if((sockfd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
@@ -125,7 +133,7 @@ int ipv6_tcp_server_test(char *path, char *nwid, struct sockaddr_in6 *addr, int
|
||||
exit(0);
|
||||
}
|
||||
// TODO: handle new address
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr)) < 0)) {
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr))) < 0) {
|
||||
printf("error accepting connection (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
@@ -143,7 +151,7 @@ int ipv6_tcp_server_test(char *path, char *nwid, struct sockaddr_in6 *addr, int
|
||||
/****************************************************************************/
|
||||
|
||||
// Maintain transfer for n_seconds OR n_times
|
||||
int ipv4_tcp_client_sustained_test(char *path, char *nwid, struct sockaddr_in *addr, int port, int n_seconds, int n_times)
|
||||
int ipv4_tcp_client_sustained_test(struct sockaddr_in *addr, int port, int n_seconds, int n_times)
|
||||
{
|
||||
int sockfd, err;
|
||||
int msg_len = str.length();
|
||||
@@ -178,7 +186,7 @@ int ipv4_tcp_client_sustained_test(char *path, char *nwid, struct sockaddr_in *a
|
||||
}
|
||||
|
||||
// Maintain transfer for n_seconds OR n_times
|
||||
int ipv6_tcp_client_sustained_test(char *path, char *nwid, struct sockaddr_in6 *addr, int port, int n_seconds, int n_times)
|
||||
int ipv6_tcp_client_sustained_test(struct sockaddr_in6 *addr, int port, int n_seconds, int n_times)
|
||||
{
|
||||
int sockfd, err;
|
||||
int msg_len = str.length();
|
||||
@@ -221,7 +229,7 @@ int ipv6_tcp_client_sustained_test(char *path, char *nwid, struct sockaddr_in6 *
|
||||
/****************************************************************************/
|
||||
|
||||
// Maintain transfer for n_seconds OR n_times
|
||||
int ipv4_tcp_server_sustained_test(char *path, char *nwid, struct sockaddr_in *addr, int port, int n_seconds, int n_times)
|
||||
int ipv4_tcp_server_sustained_test(struct sockaddr_in *addr, int port, int n_seconds, int n_times)
|
||||
{
|
||||
int sockfd, err;
|
||||
int msg_len = str.length();
|
||||
@@ -239,7 +247,7 @@ int ipv4_tcp_server_sustained_test(char *path, char *nwid, struct sockaddr_in *a
|
||||
exit(0);
|
||||
}
|
||||
// TODO: handle new address
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr)) < 0)) {
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr))) < 0) {
|
||||
printf("error accepting connection (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
@@ -265,7 +273,7 @@ int ipv4_tcp_server_sustained_test(char *path, char *nwid, struct sockaddr_in *a
|
||||
}
|
||||
|
||||
// Maintain transfer for n_seconds OR n_times
|
||||
int ipv6_tcp_server_sustained_test(char *path, char *nwid, struct sockaddr_in6 *addr, int port, int n_seconds, int n_times)
|
||||
int ipv6_tcp_server_sustained_test(struct sockaddr_in6 *addr, int port, int n_seconds, int n_times)
|
||||
{
|
||||
int sockfd, err;
|
||||
int msg_len = str.length();
|
||||
@@ -283,7 +291,7 @@ int ipv6_tcp_server_sustained_test(char *path, char *nwid, struct sockaddr_in6 *
|
||||
exit(0);
|
||||
}
|
||||
// TODO: handle new address
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr)) < 0)) {
|
||||
if((err = zts_accept(sockfd, (struct sockaddr *)&addr, (socklen_t *)sizeof(addr))) < 0) {
|
||||
printf("error accepting connection (%d)\n", err);
|
||||
exit(0);
|
||||
}
|
||||
@@ -329,18 +337,18 @@ int main(int argc , char *argv[])
|
||||
std::string mode;
|
||||
struct sockaddr_in6 addr6;
|
||||
struct sockaddr_in addr;
|
||||
char *path = (char*)"./zt";
|
||||
|
||||
int n_seconds = 10;
|
||||
int n_times = 10000;
|
||||
|
||||
std::string nwid = argv[1]; // "ebcd7a7e120f4492"
|
||||
std::string type = argv[2]; // simple, sustained, comprehensive
|
||||
std::string path = argv[1]; // where ZeroTier conf files and keys are stored
|
||||
std::string nwid = argv[2]; // "ebcd7a7e120f4492"
|
||||
std::string type = argv[3]; // simple, sustained, comprehensive
|
||||
|
||||
// If we're performing a non-random test, join the network we want to test on
|
||||
// and wait until the service initializes the SocketTap and provides an address
|
||||
if(type == "simple" || type == "sustained" || type == "comprehensive") {
|
||||
zts_start(path);
|
||||
zts_start(path.c_str());
|
||||
while(!zts_service_running())
|
||||
sleep(1);
|
||||
zts_join_network(nwid.c_str());
|
||||
@@ -357,38 +365,40 @@ int main(int argc , char *argv[])
|
||||
// For instance (ipv4 client, ipv6 server, etc)
|
||||
if(type == "simple")
|
||||
{
|
||||
protocol = argv[3]; // 4, 6
|
||||
mode = argv[4]; // client, server
|
||||
protocol = argv[4]; // 4, 6
|
||||
mode = argv[5]; // client, server
|
||||
|
||||
// SIMPLE CLIENT
|
||||
if(mode == "client")
|
||||
{
|
||||
port = atoi(argv[6]);
|
||||
printf("connecting to %s on port %s\n", argv[5], argv[6]);
|
||||
port = atoi(argv[7]);
|
||||
printf("connecting to %s on port %s\n", argv[6], argv[7]);
|
||||
|
||||
// IPv4
|
||||
if(protocol == "4") {
|
||||
addr.sin_addr.s_addr = inet_addr(argv[5]);
|
||||
addr.sin_addr.s_addr = inet_addr(argv[6]);
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(port);
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv4_tcp_client_test(path, (char*)nwid.c_str(), &addr, port) == PASSED)
|
||||
if(ipv4_tcp_client_test(&addr, port) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
while(1)
|
||||
sleep(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// IPv6
|
||||
if(protocol == "6") {
|
||||
server = gethostbyname2(argv[1],AF_INET6);
|
||||
server = gethostbyname2(argv[6],AF_INET6);
|
||||
memset((char *) &addr6, 0, sizeof(addr6));
|
||||
addr6.sin6_flowinfo = 0;
|
||||
addr6.sin6_family = AF_INET6;
|
||||
memmove((char *) &addr6.sin6_addr.s6_addr, (char *) server->h_addr, server->h_length);
|
||||
addr6.sin6_port = htons(port);
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv6_tcp_client_test(path, (char*)nwid.c_str(), &addr6, port) == PASSED)
|
||||
if(ipv6_tcp_client_test(&addr6, port) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -399,17 +409,17 @@ int main(int argc , char *argv[])
|
||||
// SIMPLE SERVER
|
||||
if(mode == "server")
|
||||
{
|
||||
port = atoi(argv[5]);
|
||||
printf("serving on port %s\n", argv[6]);
|
||||
port = atoi(argv[7]);
|
||||
printf("serving on port %s\n", argv[7]);
|
||||
|
||||
// IPv4
|
||||
if(protocol == "4") {
|
||||
addr.sin_port = htons(port);
|
||||
addr.sin_addr.s_addr = inet_addr("10.9.9.40");
|
||||
addr.sin_addr.s_addr = inet_addr(argv[6]);
|
||||
// addr.sin_addr.s_addr = htons(INADDR_ANY);
|
||||
addr.sin_family = AF_INET;
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv4_tcp_server_test(path, (char*)nwid.c_str(), &addr, port) == PASSED)
|
||||
if(ipv4_tcp_server_test(&addr, port) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -418,7 +428,7 @@ int main(int argc , char *argv[])
|
||||
|
||||
// IPv6
|
||||
if(protocol == "6") {
|
||||
server = gethostbyname2(argv[1],AF_INET6);
|
||||
server = gethostbyname2(argv[6],AF_INET6);
|
||||
memset((char *) &addr6, 0, sizeof(addr6));
|
||||
addr6.sin6_flowinfo = 0;
|
||||
addr6.sin6_family = AF_INET6;
|
||||
@@ -428,7 +438,7 @@ int main(int argc , char *argv[])
|
||||
//memmove((char *) &addr6.sin6_addr.s6_addr, (char *) server->h_addr, server->h_length);
|
||||
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv6_tcp_server_test(path, (char*)nwid.c_str(), &addr6, port) == PASSED)
|
||||
if(ipv6_tcp_server_test(&addr6, port) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -445,22 +455,22 @@ int main(int argc , char *argv[])
|
||||
// Performs a stress test for benchmarking performance
|
||||
if(type == "sustained")
|
||||
{
|
||||
protocol = argv[3]; // 4, 6
|
||||
mode = argv[4]; // client, server
|
||||
protocol = argv[4]; // 4, 6
|
||||
mode = argv[5]; // client, server
|
||||
|
||||
// SUSTAINED CLIENT
|
||||
if(mode == "client")
|
||||
{
|
||||
port = atoi(argv[6]);
|
||||
printf("connecting to %s on port %s\n", argv[5], argv[6]);
|
||||
port = atoi(argv[7]);
|
||||
printf("connecting to %s on port %s\n", argv[6], argv[7]);
|
||||
|
||||
// IPv4
|
||||
if(protocol == "4") {
|
||||
addr.sin_port = htons(port);
|
||||
addr.sin_addr.s_addr = inet_addr(argv[5]);
|
||||
addr.sin_addr.s_addr = inet_addr(argv[6]);
|
||||
addr.sin_family = AF_INET;
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv4_tcp_client_sustained_test(path, (char*)nwid.c_str(), &addr, port, n_seconds, n_times) == PASSED)
|
||||
if(ipv4_tcp_client_sustained_test(&addr, port, n_seconds, n_times) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -469,14 +479,14 @@ int main(int argc , char *argv[])
|
||||
|
||||
// IPv6
|
||||
if(protocol == "6") {
|
||||
server = gethostbyname2(argv[1],AF_INET6);
|
||||
server = gethostbyname2(argv[6],AF_INET6);
|
||||
memset((char *) &addr6, 0, sizeof(addr6));
|
||||
addr6.sin6_flowinfo = 0;
|
||||
addr6.sin6_family = AF_INET6;
|
||||
memmove((char *) &addr6.sin6_addr.s6_addr, (char *) server->h_addr, server->h_length);
|
||||
addr6.sin6_port = htons(port);
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv6_tcp_client_sustained_test(path, (char*)nwid.c_str(), &addr6, port, n_seconds, n_times) == PASSED)
|
||||
if(ipv6_tcp_client_sustained_test(&addr6, port, n_seconds, n_times) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -487,17 +497,17 @@ int main(int argc , char *argv[])
|
||||
// SUSTAINED SERVER
|
||||
if(mode == "server")
|
||||
{
|
||||
port = atoi(argv[5]);
|
||||
printf("serving on port %s\n", argv[6]);
|
||||
port = atoi(argv[7]);
|
||||
printf("serving on port %s\n", argv[7]);
|
||||
|
||||
// IPv4
|
||||
if(protocol == "4") {
|
||||
addr.sin_port = htons(port);
|
||||
addr.sin_addr.s_addr = inet_addr("10.9.9.0");
|
||||
addr.sin_addr.s_addr = inet_addr(argv[6]);
|
||||
// addr.sin_addr.s_addr = htons(INADDR_ANY);
|
||||
addr.sin_family = AF_INET;
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv4_tcp_server_sustained_test(path, (char*)nwid.c_str(), &addr, port, n_seconds, n_times) == PASSED)
|
||||
if(ipv4_tcp_server_sustained_test(&addr, port, n_seconds, n_times) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
@@ -506,7 +516,7 @@ int main(int argc , char *argv[])
|
||||
|
||||
// IPv6
|
||||
if(protocol == "6") {
|
||||
server = gethostbyname2(argv[1],AF_INET6);
|
||||
server = gethostbyname2(argv[6],AF_INET6);
|
||||
memset((char *) &addr6, 0, sizeof(addr6));
|
||||
addr6.sin6_flowinfo = 0;
|
||||
addr6.sin6_family = AF_INET6;
|
||||
@@ -516,7 +526,7 @@ int main(int argc , char *argv[])
|
||||
//memmove((char *) &addr6.sin6_addr.s6_addr, (char *) server->h_addr, server->h_length);
|
||||
|
||||
printf(" running (%s) test as ipv=%s\n", mode.c_str(), protocol.c_str());
|
||||
if(ipv6_tcp_server_sustained_test(path, (char*)nwid.c_str(), &addr6, port, n_seconds, n_times) == PASSED)
|
||||
if(ipv6_tcp_server_sustained_test(&addr6, port, n_seconds, n_times) == PASSED)
|
||||
printf("PASSED\n");
|
||||
else
|
||||
printf("FAILED\n");
|
||||
|
||||
Reference in New Issue
Block a user