C++로 소켓 파일 서버를 작성 중인데 makefile에 올바른 단위 테스트를 넣는 방법을 모르겠습니다. 내 질문은 다음과 같습니다.
서버가 시작된 후 해당 포트 번호가 표준 출력에 인쇄됩니다. 그런 다음 무한정 듣습니다. 클라이언트 프로세스(내 테스트 스위트)는 서버의 출력을 읽은 다음 자체 병렬 프로세스에서 실행되어야 합니다.
1. 두 개의 프로그램을 병렬로 실행하는 스크립트를 어떻게 작성합니까? 2. 한 프로그램에서 다른 프로그램으로 출력을 올바르게 가져올 수 있으며 3. 나중에 볼 수 있도록 출력을 좋은 형식으로 저장할 수 있습니다.
답변1
1. 두 개의 프로그램을 병렬로 실행하는 스크립트를 어떻게 작성합니까? 2. 한 프로그램에서 다른 프로그램으로 출력을 올바르게 가져올 수 있으며 3. 나중에 볼 수 있도록 출력을 좋은 형식으로 저장할 수 있습니다.
개인적으로 저는 C++로 테스트 도구를 작성하고 싶지만 어느 쪽이든 이러한 종류의 다중 프로세스 클라이언트-서버 테스트를 수행하려면 fork()
.
Bash에서는 다음을 &
통해 달성됩니다.
pid_t pid = fork();
if (pid == -1) // error handling
else if (!pid) {
// Start server, plus some code for evaluating the exchange.
} else {
// Wait a second or two, then start client.
// Plus some code to feed server and evaluate exchange.
}
쉘에서는 다음과 같이 보일 수 있습니다:
(
output=$(start_server)
# evaluate output
) &
sleep 2
start_client < input.txt
짐승의 성격에 따라 쉘 접근 방식은 C++ 접근 방식만큼 어색하거나 불가능할 수 있습니다. 또한 동일한 언어를 사용한다는 것은 전체 툴킷과 kaboodle이 아닌 클래스 등을 인스턴스화하여 테스트할 수 있음을 의미합니다. 이렇게 하면 문제를 더 쉽게 분리할 수 있고 실제 문제를 포함할 수 있습니다.단위 테스트.