|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
#include "webfuse/core/jsonrpc/proxy.h"
|
|
|
|
|
#include "webfuse/impl/jsonrpc/proxy.h"
|
|
|
|
|
#include "webfuse/status.h"
|
|
|
|
|
#include "webfuse/core/timer/manager.h"
|
|
|
|
|
#include "webfuse/impl/timer/manager.h"
|
|
|
|
|
|
|
|
|
|
#include "webfuse/tests/core/jsonrpc/mock_timer.hpp"
|
|
|
|
|
|
|
|
|
@ -101,29 +101,29 @@ namespace
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, init)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext context;
|
|
|
|
|
void * user_data = reinterpret_cast<void*>(&context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, user_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, user_data);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(context.is_called);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, invoke)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -145,8 +145,8 @@ TEST(wf_jsonrpc_proxy, invoke)
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(finished_context.is_called);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
|
ASSERT_FALSE(nullptr == finished_context.error);
|
|
|
|
@ -154,15 +154,15 @@ TEST(wf_jsonrpc_proxy, invoke)
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, invoke_calls_finish_if_send_fails)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context(false);
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -170,25 +170,25 @@ TEST(wf_jsonrpc_proxy, invoke_calls_finish_if_send_fails)
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
|
ASSERT_FALSE(nullptr == finished_context.error);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, invoke_fails_if_another_request_is_pending)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context2;
|
|
|
|
|
void * finished_data2 = reinterpret_cast<void*>(&finished_context2);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data2, "foo", "");
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data2, "foo", "");
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -198,42 +198,42 @@ TEST(wf_jsonrpc_proxy, invoke_fails_if_another_request_is_pending)
|
|
|
|
|
ASSERT_TRUE(finished_context2.is_called);
|
|
|
|
|
ASSERT_EQ(WF_BAD_BUSY, jsonrpc_get_status(finished_context2.error));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, invoke_fails_if_request_is_invalid)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "?", "error");
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "?", "error");
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(send_context.is_called);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
|
ASSERT_EQ(WF_BAD, jsonrpc_get_status(finished_context.error));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, on_result)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -245,7 +245,7 @@ TEST(wf_jsonrpc_proxy, on_result)
|
|
|
|
|
json_object_set_new(response, "result", json_string("okay"));
|
|
|
|
|
json_object_set(response, "id", id);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
wf_impl_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
json_decref(response);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
@ -253,21 +253,21 @@ TEST(wf_jsonrpc_proxy, on_result)
|
|
|
|
|
ASSERT_TRUE(json_is_string(finished_context.result));
|
|
|
|
|
ASSERT_STREQ("okay", json_string_value(finished_context.result));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, on_result_reject_response_with_unknown_id)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -279,75 +279,75 @@ TEST(wf_jsonrpc_proxy, on_result_reject_response_with_unknown_id)
|
|
|
|
|
json_object_set_new(response, "result", json_string("okay"));
|
|
|
|
|
json_object_set_new(response, "id", json_integer(1 + json_integer_value(id)));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
wf_impl_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
json_decref(response);
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(finished_context.is_called);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, timeout)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, 0, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, 0, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
|
|
|
|
|
|
std::this_thread::sleep_for(10ms);
|
|
|
|
|
wf_timer_manager_check(timer_manager);
|
|
|
|
|
wf_impl_timer_manager_check(timer_manager);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
|
ASSERT_EQ(WF_BAD_TIMEOUT, jsonrpc_get_status(finished_context.error));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, cleanup_pending_request)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, 10, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, 10, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
FinishedContext finished_context;
|
|
|
|
|
void * finished_data = reinterpret_cast<void*>(&finished_context);
|
|
|
|
|
wf_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_invoke(proxy, &jsonrpc_finished, finished_data, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(finished_context.is_called);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(finished_context.is_called);
|
|
|
|
|
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, notify)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_notify(proxy, "foo", "si", "bar", 42);
|
|
|
|
|
wf_impl_jsonrpc_proxy_notify(proxy, "foo", "si", "bar", 42);
|
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(send_context.is_called);
|
|
|
|
|
ASSERT_TRUE(json_is_object(send_context.response));
|
|
|
|
@ -367,24 +367,24 @@ TEST(wf_jsonrpc_proxy, notify)
|
|
|
|
|
json_t * id = json_object_get(send_context.response, "id");
|
|
|
|
|
ASSERT_EQ(nullptr, id);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, notify_dont_send_invalid_request)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_notify(proxy, "foo", "?");
|
|
|
|
|
wf_impl_jsonrpc_proxy_notify(proxy, "foo", "?");
|
|
|
|
|
|
|
|
|
|
ASSERT_FALSE(send_context.is_called);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, swallow_timeout_if_no_request_pending)
|
|
|
|
@ -393,38 +393,38 @@ TEST(wf_jsonrpc_proxy, swallow_timeout_if_no_request_pending)
|
|
|
|
|
|
|
|
|
|
wf_timer_on_timer_fn * on_timer = nullptr;
|
|
|
|
|
void * timer_context = nullptr;
|
|
|
|
|
EXPECT_CALL(timer_api, wf_timer_create(_, _, _))
|
|
|
|
|
EXPECT_CALL(timer_api, wf_impl_timer_create(_, _, _))
|
|
|
|
|
.Times(1)
|
|
|
|
|
.WillOnce(DoAll(SaveArg<1>(&on_timer), SaveArg<2>(&timer_context), Return(nullptr)));
|
|
|
|
|
EXPECT_CALL(timer_api, wf_timer_dispose(_)).Times(1);
|
|
|
|
|
EXPECT_CALL(timer_api, wf_impl_timer_dispose(_)).Times(1);
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(nullptr, 1, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(nullptr, 1, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
on_timer(nullptr, timer_context);
|
|
|
|
|
ASSERT_FALSE(send_context.is_called);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(wf_jsonrpc_proxy, on_result_swallow_if_no_request_pending)
|
|
|
|
|
{
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_timer_manager_create();
|
|
|
|
|
struct wf_timer_manager * timer_manager = wf_impl_timer_manager_create();
|
|
|
|
|
|
|
|
|
|
SendContext send_context;
|
|
|
|
|
void * send_data = reinterpret_cast<void*>(&send_context);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
struct wf_jsonrpc_proxy * proxy = wf_impl_jsonrpc_proxy_create(timer_manager, WF_DEFAULT_TIMEOUT, &jsonrpc_send, send_data);
|
|
|
|
|
|
|
|
|
|
json_t * response = json_object();
|
|
|
|
|
json_object_set_new(response, "result", json_string("okay"));
|
|
|
|
|
json_object_set_new(response, "id", json_integer(42));
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
wf_impl_jsonrpc_proxy_onresult(proxy, response);
|
|
|
|
|
json_decref(response);
|
|
|
|
|
|
|
|
|
|
wf_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_timer_manager_dispose(timer_manager);
|
|
|
|
|
wf_impl_jsonrpc_proxy_dispose(proxy);
|
|
|
|
|
wf_impl_timer_manager_dispose(timer_manager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|