From: Dongwoo Lee Date: Mon, 23 Jul 2018 09:36:58 +0000 (+0900) Subject: unittest: Add testcase to verify pass daemon X-Git-Tag: submit/tizen/20180724.000537~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3e630f95d84727db2dad5236e5b1ce19730764e4;p=platform%2Fcore%2Fsystem%2Fpass.git unittest: Add testcase to verify pass daemon This patch adds unittest based on gtest test suite. Change-Id: I72a346720b32eb5941b1af9e4afb46533356bd24 Signed-off-by: Dongwoo Lee Signed-off-by: Chanwoo Choi --- diff --git a/unittest/pass_gtest.cpp b/unittest/pass_gtest.cpp new file mode 100644 index 0000000..7cd0317 --- /dev/null +++ b/unittest/pass_gtest.cpp @@ -0,0 +1,241 @@ +/* + * Copyright (C) 2018 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include +#include + +#define PASS_DBUS_NAME "org.tizen.system.pass" +#define PASS_DBUS_PATH "/Org/Tizen/System/Pass/" +#define PASS_DBUS_INTF "org.tizen.system.pass." + +class PassTest : public testing::Test { +public: + static void SetUpTestCase() { + int ret = 0; + ASSERT_EQ(ret, 0); + } + static void TearDownTestCase() { + int ret = 0; + ASSERT_EQ(ret, 0); + } + void TearDown() override { + } +}; + +static gint32 pass_test_method_call(const gchar *path, const gchar *intf, + const gchar *method, GVariant *body) +{ + const gchar *type; + GVariant *ret; + GError *err = NULL; + GDBusMessage *msg, *reply; + GDBusConnection *conn; + gint32 r; + + conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err); + if (err) + return -1; + + msg = g_dbus_message_new_method_call(PASS_DBUS_NAME, path, + intf, method); + if (!msg) + return -1; + + if (body) + g_dbus_message_set_body(msg, body); + + reply = g_dbus_connection_send_message_with_reply_sync(conn, msg, + G_DBUS_SEND_MESSAGE_FLAGS_NONE, + G_MAXINT, NULL, NULL, &err); + if (err) { + g_object_unref(msg); + g_clear_error(&err); + return -1; + } + + ret = g_variant_get_child_value(g_dbus_message_get_body(reply), 0); + type = g_variant_get_type_string(ret); + if (type[0] == 'i') + r = g_variant_get_int32(ret); + else + r = -1; + + g_variant_unref(ret); + + g_dbus_connection_flush(conn, NULL, NULL, NULL); + g_object_unref(msg); + g_object_unref(reply); + g_clear_error(&err); + + return r; +} + +TEST_F(PassTest, AppLaunch) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "AppLaunch", + g_variant_new("(i)", 3000)); + ASSERT_EQ(ret, 0) << "AppLaunch Failed"; + + +} + +TEST_F(PassTest, MultipleAppLaunch) +{ + gint32 ret; + int i; + + for (i = 0; i < 3; i++) { + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "AppLaunch", + g_variant_new("(i)", 3000)); + ASSERT_EQ(ret, 0) << "MultipleAppLaunch Failed"; + } +} + +TEST_F(PassTest, AppLaunch_and_UltraPowerSaving) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "AppLaunch", + g_variant_new("(i)", 3000)); + ASSERT_EQ(ret, 0) << "AppLaunch Failed"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "UltraPowerSaving", + g_variant_new("(i)", 3000)); + ASSERT_EQ(ret, 0) << "UltraPowerSaving Failed"; +} + +TEST_F(PassTest, HandleErrorCase) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "stop", + NULL); + ASSERT_EQ(ret, 0) << "PmQosStop Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "AppLaunch", + g_variant_new("(i)", 3000)); + + ASSERT_EQ(ret, -1) << "AppLaunch Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "start", + NULL); + ASSERT_EQ(ret, 0) << "PmQosStart Faield"; + +} + +TEST_F(PassTest, PmQosRestart) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "stop", + NULL); + ASSERT_EQ(ret, 0) << "PmQosStop Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "start", + NULL); + ASSERT_EQ(ret, 0) << "PmQosStart Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Pmqos", + PASS_DBUS_INTF"pmqos", + "AppLaunch", + g_variant_new("(i)", 3000)); + + ASSERT_EQ(ret, 0) << "PmQosStop Faield"; +} + +TEST_F(PassTest, ThermalMonitorRestart) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Monitor/Thermal", + PASS_DBUS_INTF"monitor.thermal", + "stop", + NULL); + ASSERT_EQ(ret, 0) << "ThermalMonitorStop Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Monitor/Thermal", + PASS_DBUS_INTF"monitor.thermal", + "start", + NULL); + + ASSERT_EQ(ret, 0) << "ThermalMonitorStart Faield"; +} + +TEST_F(PassTest, PassCoreRestart) +{ + gint32 ret; + + ret = pass_test_method_call(PASS_DBUS_PATH"Core", + PASS_DBUS_INTF"core", + "stop", + NULL); + ASSERT_EQ(ret, 0) << "PassCoreStop Faield"; + + ret = pass_test_method_call(PASS_DBUS_PATH"Core", + PASS_DBUS_INTF"core", + "start", + NULL); + + ASSERT_EQ(ret, 0) << "PassCoreStart Faield"; +} + +TEST_F(PassTest, PassServiceReStart) +{ + gint32 ret; + + ret = system("systemctl stop pass.service"); + ASSERT_EQ(ret, 0) << "PassServieStop Faield"; + + ret = system("systemctl start pass.service"); + ASSERT_EQ(ret, 0) << "PassServiceStart Faield"; +} + +int main(int argc, char *argv[]) +{ + int ret; + + try { + testing::InitGoogleTest(&argc, argv); + ret = RUN_ALL_TESTS(); + } catch (...) { + ret = EXIT_FAILURE; + } + + return ret; +}