在全局夹具中使用系统提升UTF

时间:2012-07-05 10:47:52

标签: c++ unit-testing boost fixture

我正在尝试检查Boost UTF全局夹具中正在运行的服务器进程。 我这样做是在我的夹具构造函数中调用系统,就像这样...

class MyTestFixture
{
public: 
    MyTestFixture(); 
    ~MyTestFixture() ;

};


MyTestFixture::MyTestFixture()
{

    int rc = system("pidof myserver > /dev/null");
    if ( rc != 0 )
    {
        cout << "myserver not running so cannot continue" << endl;
        fflush (stdout) ;
        sleep(10);
        exit(4) ;
    }

    cout << "fixture setup ok!" << endl ;
}

BOOST_GLOBAL_FIXTURE( MyTestFixture );


BOOST_AUTO_TEST_CASE( pgmiia_main_test1 )
{
// some test code...
}

当“myserver”正在运行时,一切都很好,但是当它不是我崩溃时。 并且它不会进入if部分并退出。 奇怪的是,如果我在mydb中运行它而myserver没有运行,它会像我期望的那样进入我的退出分支。

我对Boost UTF有点新意。我正在通过动态链接这样做。 有什么想法吗?

乔恩

1 个答案:

答案 0 :(得分:1)

据我所知,pidof -s 'proc_name'如果proc_name未运行则返回0,否则返回PID。由于system应返回被调用进程的retval,因此您实际上是在测试进程是否正在运行:rc != 0,而rc == 0测试进程是否未运行。不确定问题是否与Boost细节有关。