#include <cynara-client-async.h>
#include <exception>
+#include <unistd.h>
namespace CynaraTestClientAsync {
<< " 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
#include <cynara-client-async.h>
#include <string>
+#include <sys/types.h>
namespace CynaraTestClientAsync {
class Client
{
public:
+ enum TimeoutExpectation {
+ EXPECT_TIMEOUT,
+ EXPECT_NO_TIMEOUT,
+ IGNORE_TIMEOUT,
+ };
+
Client();
~Client() noexcept(false);
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;