}
}
+int fake_request_device_cb(char* app_name, bool self_select, RequestServiceInfo service_info[], char *ip, int count, char * client_pname)
+{
+ if (!strcmp(app_name, APP_NAME) &&
+ count == 1 &&
+ !strcmp(service_info[0].ExecutionType, EXECUTE_TYPE) &&
+ !strcmp(service_info[0].ExeCmd, EXECUTE_COMMAND))
+ {
+ requestCbResult = 1;
+ return 1;
+ }
+ else
+ {
+ requestCbResult = -1;
+ return -1;
+ }
+}
+
+DeviceList* fake_get_device_list(char* service_name, char* exec_type)
+{
+ DeviceList *devices = (DeviceList*) malloc(sizeof(DeviceList));
+ devices->Endpoints = strdup("IP1;IP2;IP3");
+ devices->Message = strdup("SUCCESS");
+ return devices;
+}
+
int fake_update_key_pair(char* id, char* key, char* client_pname) {
if (id != NULL && key != NULL && client_pname != NULL) {
}
}
+DeviceCapability* fake_read_device_capability(char* ip)
+{
+ DeviceCapability *cap = (DeviceCapability*) malloc(sizeof(DeviceCapability));
+ cap->Message = strdup("SUCCESS");
+ cap->CapabilityJson = strdup("capability1");
+ return cap;
+}
+
+char* fake_write_device_capability(char* capability)
+{
+ return strdup("SUCCESS");
+}
+
GDBusConnection *fake_get_sync_return_NULL(GBusType bus_type, GCancellable *cancellable, GError **error)
{
*error = NULL;
g_variant_get(parameters, "(i)", &invocation_return_value);
}
+void fake_invocation_return_value_1(GDBusMethodInvocation *invocation,
+ GVariant *parameters)
+{
+ invocation_return_value = 0;
+}
+
void fake_error_free(GError *error)
{
{
dbus_funcs fake_funcs;
fake_funcs.request_service_f = NULL;
+ fake_funcs.request_service_on_device_f = NULL;
fake_funcs.update_key_pair_f = NULL;
ASSERT_EQ(orchestration_server_initialize(fake_funcs), ORCH_ERROR_INVALID_PARAMETER);
}
dbus_funcs fake_funcs;
fake_funcs.request_service_f = fake_request_cb;
+ fake_funcs.request_service_on_device_f = fake_request_device_cb;
fake_funcs.update_key_pair_f = fake_update_key_pair;
ASSERT_EQ(orchestration_server_initialize(fake_funcs), ORCH_ERROR_DBUS_FAILURE);
dbus_funcs fake_funcs;
fake_funcs.request_service_f = fake_request_cb;
+ fake_funcs.request_service_on_device_f = fake_request_device_cb;
fake_funcs.update_key_pair_f = fake_update_key_pair;
+ fake_funcs.get_device_list_f = fake_get_device_list;
+ fake_funcs.read_device_capability_f = fake_read_device_capability;
+ fake_funcs.write_device_capability_f = fake_write_device_capability;
ASSERT_EQ(orchestration_server_initialize(fake_funcs), ORCH_ERROR_NONE);
}
}
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WithRequestServiceOnDeviceMethod_WithInvalidParam_ExpectedReturnError)
+{
+ requestCbResult = false;
+ set_default_dbus_interface();
+ _gdbus.get_sync = fake_get_sync_success;
+ _gdbus.own_name_on_connection = fake_own_name_success;
+ _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+ _gdbus.connection_register_object = fake_connection_register_object_success;
+ _gdbus.invocation_return_value = fake_invocation_return_value;
+ _gdbus.error_free = fake_error_free;
+ _handle_method_call(NULL,
+ NULL,
+ NULL,
+ NULL,
+ "request_service_on_device",
+ NULL,
+ NULL,
+ NULL);
+
+ EXPECT_EQ(requestCbResult, false);
+
+ if (valid_GDBusConnection != NULL)
+ {
+ free(valid_GDBusConnection);
+ valid_GDBusConnection = NULL;
+ }
+ if (valid_GDBusNodeInfo != NULL)
+ {
+ free(valid_GDBusNodeInfo);
+ valid_GDBusNodeInfo = NULL;
+ }
+}
+
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WithRequestServiceOnDeviceMethod_WithValidParam_ExpectedReturnSuccess)
+{
+ requestCbResult = false;
+ set_default_dbus_interface();
+ _gdbus.get_sync = fake_get_sync_success;
+ _gdbus.own_name_on_connection = fake_own_name_success;
+ _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+ _gdbus.connection_register_object = fake_connection_register_object_success;
+ _gdbus.invocation_return_value = fake_invocation_return_value;
+ _gdbus.error_free = fake_error_free;
+ _gdbus.connection_call_sync = fake_g_dbus_connection_call_sync;
+
+ int idx;
+ int count = 1, client_pid = 1;
+ const char* ipaddr = "IP1";
+ GVariant *services;
+ GVariantBuilder *builder;
+ builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)"));
+ for (idx = 0; idx < count; idx++) {
+ g_variant_builder_add (
+ builder,
+ "(ss)",
+ EXECUTE_TYPE,
+ EXECUTE_COMMAND
+ );
+ }
+ services = g_variant_new ("(sia(ss)sii)", APP_NAME, 1, builder, ipaddr, count, client_pid);
+
+ _handle_method_call(NULL,
+ "edge_orchestration_sample",
+ NULL,
+ NULL,
+ "request_service_on_device",
+ services,
+ NULL,
+ NULL);
+
+ EXPECT_EQ(requestCbResult, true);
+ g_variant_builder_unref (builder);
+
+ if (valid_GDBusConnection != NULL)
+ {
+ free(valid_GDBusConnection);
+ valid_GDBusConnection = NULL;
+ }
+ if (valid_GDBusNodeInfo != NULL)
+ {
+ free(valid_GDBusNodeInfo);
+ valid_GDBusNodeInfo = NULL;
+ }
+}
+
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_ReadDeviceCapability_ExpectedReturnSuccess)
+{
+ set_default_dbus_interface();
+ _gdbus.get_sync = fake_get_sync_success;
+ _gdbus.own_name_on_connection = fake_own_name_success;
+ _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+ _gdbus.connection_register_object = fake_connection_register_object_success;
+ _gdbus.invocation_return_value = fake_invocation_return_value_1;
+ _gdbus.error_free = fake_error_free;
+ _gdbus.connection_call_sync = fake_g_dbus_connection_call_sync;
+
+ int client_pid = 1;
+ GVariant *services;
+ services = g_variant_new("(si)", "IP1", client_pid);
+ _handle_method_call(NULL,
+ "edge_orchestration_sample",
+ NULL,
+ NULL,
+ "read_capability",
+ services,
+ NULL,
+ NULL);
+
+ EXPECT_EQ(invocation_return_value, ORCH_ERROR_NONE);
+
+ if (valid_GDBusConnection != NULL)
+ {
+ free(valid_GDBusConnection);
+ valid_GDBusConnection = NULL;
+ }
+ if (valid_GDBusNodeInfo != NULL)
+ {
+ free(valid_GDBusNodeInfo);
+ valid_GDBusNodeInfo = NULL;
+ }
+}
+
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WriteDeviceCapability_ExpectedReturnSuccess)
+{
+ set_default_dbus_interface();
+ _gdbus.get_sync = fake_get_sync_success;
+ _gdbus.own_name_on_connection = fake_own_name_success;
+ _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+ _gdbus.connection_register_object = fake_connection_register_object_success;
+ _gdbus.invocation_return_value = fake_invocation_return_value;
+ _gdbus.error_free = fake_error_free;
+ _gdbus.connection_call_sync = fake_g_dbus_connection_call_sync;
+
+ int client_pid = 1;
+ GVariant *services;
+ services = g_variant_new("(si)", "CAPABILITY1", client_pid);
+ _handle_method_call(NULL,
+ "edge_orchestration_sample",
+ NULL,
+ NULL,
+ "write_capability",
+ services,
+ NULL,
+ NULL);
+
+ EXPECT_EQ(invocation_return_value, ORCH_ERROR_NONE);
+
+ if (valid_GDBusConnection != NULL)
+ {
+ free(valid_GDBusConnection);
+ valid_GDBusConnection = NULL;
+ }
+ if (valid_GDBusNodeInfo != NULL)
+ {
+ free(valid_GDBusNodeInfo);
+ valid_GDBusNodeInfo = NULL;
+ }
+}
+
+TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_GetDeviceList_ExpectedReturnSuccess)
+{
+ set_default_dbus_interface();
+ _gdbus.get_sync = fake_get_sync_success;
+ _gdbus.own_name_on_connection = fake_own_name_success;
+ _gdbus.node_info_new_for_xml = fake_node_info_new_for_xml_success;
+ _gdbus.connection_register_object = fake_connection_register_object_success;
+ _gdbus.invocation_return_value = fake_invocation_return_value_1;
+ _gdbus.error_free = fake_error_free;
+ _gdbus.connection_call_sync = fake_g_dbus_connection_call_sync;
+
+ int client_pid = 1;
+ GVariant *services;
+ services = g_variant_new ("(ssi)", "SERVICE_NAME", "SERVICE_TYPE", client_pid);
+
+ _handle_method_call(NULL,
+ "edge_orchestration_sample",
+ NULL,
+ NULL,
+ "get_device_list",
+ services,
+ NULL,
+ NULL);
+
+
+ EXPECT_EQ(invocation_return_value, ORCH_ERROR_NONE);
+
+ if (valid_GDBusConnection != NULL)
+ {
+ free(valid_GDBusConnection);
+ valid_GDBusConnection = NULL;
+ }
+ if (valid_GDBusNodeInfo != NULL)
+ {
+ free(valid_GDBusNodeInfo);
+ valid_GDBusNodeInfo = NULL;
+ }
+}
+
TEST_F(OrchestrationServerTests, WhenCalledHandleMethodCall_WithUpdateKeyPair_WithInvalidParam_ExpectedReturnError)
{
set_default_dbus_interface();
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
+
}