私はプログラムを実行して実験的にテストする方法を知っていますが、理想的には作成しながら作成したすべての関数をテストしたいと思います。多くの場合、関数全体を書くまでは関数をテストできず、問題が何であるかを把握するのは困難です。
このような機能のテストケースを作成できるように、ソケットのオプション、フラグ、設定などをテストする方法はPosixにありますか?
これらの機能をテストする最良の方法は何ですか?
/**
* Creates a listening socket, sets it up with setsockopt, bind, and listen.
* @param port the port of the listening socket.
* @return the file descriptor of the listening socket.
*/
int SetUpListeningSocket(int port)
{
//Variables:
struct sockaddr_in server;
int s;
// setup socket address structure
memset(&server, 0, sizeof (server));
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = INADDR_ANY;
// create socket
s = socket(PF_INET, SOCK_STREAM, 0);
if (!s)
{
perror("socket");
exit(-1);
}
// set socket to immediately reuse port when the application closes
int opt = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt)) < 0)
{
perror("setsockopt");
exit(-1);
}
// call bind to associate the socket with our local address and
// port
if (bind(s, (const struct sockaddr *) &server, sizeof (server)) < 0)
{
perror("bind");
exit(-1);
}
// convert the socket to listen for incoming connections
if (listen(s, SOMAXCONN) < 0)
{
perror("listen");
exit(-1);
}
return s;
}