#include <cynara_test_commons.h>
#include <cynara_test_client_async_client.h>
+#include <dbus_access.h>
#include <dpl/test/test_runner.h>
#include <cynara-client-async.h>
client.checkCache(data[1], CYNARA_API_CACHE_MISS);
}
+void tca08_disconnect1_func()
+{
+ std::string testNo("08");
+ int subtest = 1;
+ DBusAccess dbusAccess(CynaraTestConsts::SERVICE.c_str());
+ cynara_check_id id;
+ RequestEntity callbackData = {RequestFunction(),
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_ANSWER};
+ Client client;
+
+ client.createRequest({testNo, subtest}, id, callbackData);
+ client.assertStatus(READWRITE);
+
+ dbusAccess.restartService();
+
+ client.process();
+ client.assertStatus(READ);
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+}
+
+void tca08_disconnect2_func()
+{
+ std::string testNo("08");
+ int subtest = 2;
+ DBusAccess dbusAccess(CynaraTestConsts::SERVICE.c_str());
+ cynara_check_id id;
+ RequestEntity callbackData = {RequestFunction(),
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_ANSWER};
+ Client client;
+
+ client.createRequest({testNo, subtest}, id, callbackData);
+ client.assertStatus(READWRITE);
+
+ dbusAccess.restartService();
+
+ client.process();
+ client.assertStatus(READ);
+
+ dbusAccess.restartService();
+
+ client.process();
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+}
+
+void tca08_disconnect3_func()
+{
+ std::string testNo("08");
+ int subtest = 2;
+ cynara_check_id id;
+ RequestEntity callbackData = {[&](){
+ DBusAccess dbusAccess(CynaraTestConsts::SERVICE.c_str());
+ dbusAccess.restartService();
+ },
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_ANSWER};
+ Client client;
+
+ client.createRequest({testNo, subtest}, id, callbackData);
+ client.assertStatus(READWRITE);
+
+ client.process();
+ client.assertStatus(READ);
+
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+}
+
+void tca09_disconnect_and_cancel1_func()
+{
+ std::string testNo("09");
+ int subtest = 1;
+ DBusAccess dbusAccess(CynaraTestConsts::SERVICE.c_str());
+ cynara_check_id id;
+ RequestEntity callbackData = {RequestFunction(),
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_CANCEL};
+
+ Client client;
+
+ client.createRequest({testNo, subtest}, id, callbackData);
+ client.assertStatus(READWRITE);
+
+ //send request
+ client.process();
+ client.assertStatus(READ);
+
+ dbusAccess.restartService();
+
+ client.cancel(id);
+ client.assertStatus(READWRITE);
+
+ //send cancel
+ client.process();
+ client.assertStatus(READ);
+
+ //get answer
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+ client.assertStatus(READ);
+}
+
+void tca09_disconnect_and_cancel2_func()
+{
+ std::string testNo("09");
+ int subtest = 2;
+ DBusAccess dbusAccess(CynaraTestConsts::SERVICE.c_str());
+ cynara_check_id id;
+ RequestEntity callbackData = {RequestFunction(),
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_CANCEL};
+
+ Client client;
+
+ client.createRequest({testNo, subtest}, id, callbackData);
+ client.assertStatus(READWRITE);
+
+ //send request
+ client.process();
+ client.assertStatus(READ);
+
+ client.cancel(id);
+ client.assertStatus(READWRITE);
+
+ dbusAccess.restartService();
+
+ //handle reconnect
+ client.process();
+ client.assertStatus(READ);
+
+ //get answer
+ client.process(CYNARA_API_SUCCESS, Client::EXPECT_TIMEOUT);
+ client.assertStatus(READ);
+}
+
RUNNER_TEST_GROUP_INIT(cynara_async_tests)
RUN_CYNARA_TEST(tca01_initialize)
RUN_CYNARA_TEST(tca05_request_and_cancel3)
RUN_CYNARA_TEST(tca06_cancel_fail)
RUN_CYNARA_TEST(tca07_request_with_data_insertion)
+RUN_CYNARA_TEST(tca08_disconnect1)
+RUN_CYNARA_TEST(tca08_disconnect2)
+RUN_CYNARA_TEST(tca08_disconnect3)
+RUN_CYNARA_TEST(tca09_disconnect_and_cancel1)
+RUN_CYNARA_TEST(tca09_disconnect_and_cancel2)