我有一个测试驱动程序,它启动一个单独的测试服务器进程。测试服务器进程侦听本地端口,在准备就绪后,测试驱动程序运行一个访问测试服务器的测试。
目前,测试驱动程序反复尝试连接到本地端口(循环一些,睡一些,再试一次)。它不是最佳解决方案,显然不可靠。
是否有可能等待某个事件说“有人在本地端口上侦听”?尝试连接到早期会导致“端口关闭”错误。
我想在Windows,Linux和Mac OS X上实施该解决方案。如果您对这些系统中的任何一个都有一些提示,那么欢迎(在每种情况下它可能都是特定于系统的)。
答案 0 :(得分:1)
那么,如果你启动服务器进程,你可以拦截服务器的stdout吗?
当套接字就绪时,服务器输出“服务器已启动”。驱动程序应该等到服务器将此字符串发送到stdout,然后尝试连接到服务器端口。
答案 1 :(得分:1)
在Windows上我使用命名事件来做这种事情。
测试工具可以创建事件并将事件的名称传递给它启动的服务器;然后在继续测试之前等待事件发出信号。然后服务器连接到事件,初始化自己,一旦准备接受连接,它就会发出事件信号。