From: Lukasz Wojciechowski Date: Mon, 20 Oct 2014 09:14:18 +0000 (+0200) Subject: Wrap cynara_async_process() for test purposes X-Git-Tag: security-manager_5.5_testing~176 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c888bdee7b0ddba29e8a8526c46441930e93cd1;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git Wrap cynara_async_process() for test purposes Wrap checks connections status, then waits on proper select statement. After select returns, cynara_async_process() is called and expected result is checked. Change-Id: Icc286662b5ba7e0f4f9b51d0dd58e7ab1d17336a --- diff --git a/tests/cynara-tests/common/cynara_test_client_async_client.cpp b/tests/cynara-tests/common/cynara_test_client_async_client.cpp index 3d0f0d8..e90f5eb 100644 --- a/tests/cynara-tests/common/cynara_test_client_async_client.cpp +++ b/tests/cynara-tests/common/cynara_test_client_async_client.cpp @@ -21,6 +21,7 @@ #include #include +#include namespace CynaraTestClientAsync { @@ -113,4 +114,44 @@ void Client::createRequest(const CheckData &checkData, cynara_check_id &id, << " privilege = " << checkData.m_privilege << "."); } +void Client::process(int expectedResult, + enum TimeoutExpectation timeoutExpectation, + time_t timeoutSeconds) { + if (m_statusMonitor.getStatus() == DISCONNECTED) + return; + + int fd = m_statusMonitor.getFd(); + fd_set fds; + timeval tv; + FD_ZERO(&fds); + FD_SET(fd, &fds); + tv.tv_sec = timeoutSeconds; + tv.tv_usec = 0; + + int ret; + if (m_statusMonitor.getStatus() == READ) + ret = TEMP_FAILURE_RETRY(select(fd + 1, &fds, NULL, NULL, &tv)); + else + ret = TEMP_FAILURE_RETRY(select(fd + 1, &fds, &fds, NULL, &tv)); + + if (ret == 0) { + RUNNER_ASSERT_ERRNO_MSG(timeoutExpectation != EXPECT_NO_TIMEOUT, + "Unexpected select timeout." + << " ret = " << ret); + return; + } + RUNNER_ASSERT_ERRNO_MSG(ret > 0, + "Select returned error:" + << " ret = " << ret); + RUNNER_ASSERT_ERRNO_MSG(timeoutExpectation != EXPECT_TIMEOUT, + "Select returned positive value, when timeout was expected." + << " ret = " << ret); + + ret = cynara_async_process(m_cynara); + RUNNER_ASSERT_MSG(ret == expectedResult, + "cynara_async_process returned unexpected value: " + << " returned value = " << ret << "," + << " expected value = " << expectedResult << "."); +} + }// namespace CynaraTestClientAsync diff --git a/tests/cynara-tests/common/cynara_test_client_async_client.h b/tests/cynara-tests/common/cynara_test_client_async_client.h index f5da908..afa549c 100644 --- a/tests/cynara-tests/common/cynara_test_client_async_client.h +++ b/tests/cynara-tests/common/cynara_test_client_async_client.h @@ -23,6 +23,7 @@ #include #include +#include namespace CynaraTestClientAsync { @@ -40,6 +41,12 @@ struct CheckData class Client { public: + enum TimeoutExpectation { + EXPECT_TIMEOUT, + EXPECT_NO_TIMEOUT, + IGNORE_TIMEOUT, + }; + Client(); ~Client() noexcept(false); @@ -47,6 +54,9 @@ public: void checkCache(const CheckData &checkData, int expectedResult); void createRequest(const CheckData &checkData, cynara_check_id &id, const RequestEntity &callbackData, int expectedResult = CYNARA_API_SUCCESS); + void process(int expectedResult = CYNARA_API_SUCCESS, + enum TimeoutExpectation timeoutExpectation = EXPECT_NO_TIMEOUT, + time_t timeoutSeconds = 3); private: struct cynara_async *m_cynara;