unittest: Add testcase to verify pass daemon 15/184815/6
authorDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 23 Jul 2018 09:36:58 +0000 (18:36 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Mon, 23 Jul 2018 11:29:04 +0000 (20:29 +0900)
This patch adds unittest based on gtest test suite.

Change-Id: I72a346720b32eb5941b1af9e4afb46533356bd24
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
unittest/pass_gtest.cpp [new file with mode: 0644]

diff --git a/unittest/pass_gtest.cpp b/unittest/pass_gtest.cpp
new file mode 100644 (file)
index 0000000..7cd0317
--- /dev/null
@@ -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 <iostream>
+#include <stdlib.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+
+#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;
+}