tests: unittest: Move pass-unittests into pass-hal-and-parser and rename it 02/283602/2
authorChanwoo Choi <cw00.choi@samsung.com>
Mon, 12 Sep 2022 20:36:12 +0000 (05:36 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Tue, 13 Dec 2022 02:44:04 +0000 (11:44 +0900)
The existing pass-unittests have been tested pass-hal module.
When I tried to add pass-hal mocking class for testing pass-rescon module,
the multiple definition build error happen. So that I split out the unittest
like this.

Change-Id: If0927b34197caebec579a52359df76faa1c0308d
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
59 files changed:
CMakeLists.txt
packaging/pass.spec
tests/pass-hal-mock.cpp [new file with mode: 0644]
tests/pass-hal-mock.hpp [new file with mode: 0644]
tests/pass-unittests.cc [new file with mode: 0644]
tests/unittest/CMakeLists.txt [deleted file]
tests/unittest/hal-api-power-mock.cpp [deleted file]
tests/unittest/hal-api-power-mock.hpp [deleted file]
tests/unittest/pass-hal-and-parser/CMakeLists.txt [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/hal-api-power-mock.cpp [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/hal-api-power-mock.hpp [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/pass-hal-and-parser-unittests.cc [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass-battery.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass-bus0.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass-cpu0.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass-memory.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass-cpu0.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu1.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass1.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/invalid/pass.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-battery.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus0.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus1.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu0.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu4.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-gpu.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass-memory.json [new file with mode: 0644]
tests/unittest/pass-hal-and-parser/scripts/valid/pass.json [new file with mode: 0644]
tests/unittest/pass-unittests.cc [deleted file]
tests/unittest/scripts/invalid-battery/pass-battery.json [deleted file]
tests/unittest/scripts/invalid-battery/pass.json [deleted file]
tests/unittest/scripts/invalid-header/pass-bus0.json [deleted file]
tests/unittest/scripts/invalid-header/pass.json [deleted file]
tests/unittest/scripts/invalid-level/pass-cpu0.json [deleted file]
tests/unittest/scripts/invalid-level/pass.json [deleted file]
tests/unittest/scripts/invalid-memory/pass-memory.json [deleted file]
tests/unittest/scripts/invalid-memory/pass.json [deleted file]
tests/unittest/scripts/invalid-pmqos/pass-cpu0.json [deleted file]
tests/unittest/scripts/invalid-pmqos/pass.json [deleted file]
tests/unittest/scripts/invalid-thermal/pass-cpu.json [deleted file]
tests/unittest/scripts/invalid-thermal/pass-cpu1.json [deleted file]
tests/unittest/scripts/invalid-thermal/pass.json [deleted file]
tests/unittest/scripts/invalid-thermal/pass1.json [deleted file]
tests/unittest/scripts/invalid/pass.json [deleted file]
tests/unittest/scripts/valid/pass-battery.json [deleted file]
tests/unittest/scripts/valid/pass-bus0.json [deleted file]
tests/unittest/scripts/valid/pass-bus1.json [deleted file]
tests/unittest/scripts/valid/pass-cpu0.json [deleted file]
tests/unittest/scripts/valid/pass-cpu4.json [deleted file]
tests/unittest/scripts/valid/pass-gpu.json [deleted file]
tests/unittest/scripts/valid/pass-memory.json [deleted file]
tests/unittest/scripts/valid/pass.json [deleted file]

index 98a25f8e07575043e3215e31f63aaf393886ac50..866d16132c29189ad6c9ba129a88995aab85c116 100644 (file)
@@ -148,7 +148,7 @@ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/systemd/ DESTINATION lib/systemd/s
 
 ADD_SUBDIRECTORY(tests/integration-test)
 ADD_SUBDIRECTORY(tests/haltest)
-ADD_SUBDIRECTORY(tests/unittest)
+ADD_SUBDIRECTORY(tests/unittest/pass-hal-and-parser)
 
 ADD_SUBDIRECTORY(lib)
 
index eef5666637e1633af3b103b7cc484c87fde268e5..328ecf024cc04198be1da39c5cde67ef656d622e 100644 (file)
@@ -89,7 +89,7 @@ cp %{SOURCE2} .
 make %{?jobs:-j%jobs}
 
 %check
-(cd tests/unittest && LD_LIBRARY_PATH=../../ ctest -V)
+(cd tests/unittest/pass-hal-and-parser && LD_LIBRARY_PATH=../../ ctest -V)
 
 %install
 rm -rf %{buildroot}
diff --git a/tests/pass-hal-mock.cpp b/tests/pass-hal-mock.cpp
new file mode 100644 (file)
index 0000000..41db462
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+#include <stdlib.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include "pass.h"
+#include "pass-hal.h"
+}
+
+#include "pass-hal-mock.hpp"
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+PassHalMock *gPassHalMock;
+
+int pass_hal_save_initdata(struct pass_resource *res)
+{
+       if (!gPassHalMock)
+               return -ENOTSUP;
+
+       return gPassHalMock->pass_hal_save_initdata(res);
+
+}
+
+int pass_hal_restore_initdata(struct pass_resource *res)
+{
+       if (!gPassHalMock)
+               return -ENOTSUP;
+
+       return gPassHalMock->pass_hal_restore_initdata(res);
+}
diff --git a/tests/pass-hal-mock.hpp b/tests/pass-hal-mock.hpp
new file mode 100644 (file)
index 0000000..51270b6
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+#include <stdlib.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include "pass.h"
+#include "pass-hal.h"
+}
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+class PassHalMockInterface {
+public:
+       virtual ~PassHalMockInterface() {};
+
+       virtual int pass_hal_save_initdata(struct pass_resource *res) = 0;
+       virtual int pass_hal_restore_initdata(struct pass_resource *res) = 0;
+};
+
+class PassHalMock:PassHalMockInterface {
+public:
+       MOCK_METHOD1(pass_hal_save_initdata, int (struct pass_resource *res));
+       MOCK_METHOD1(pass_hal_restore_initdata, int (struct pass_resource *res));
+};
+
+extern PassHalMock *gPassHalMock;
diff --git a/tests/pass-unittests.cc b/tests/pass-unittests.cc
new file mode 100644 (file)
index 0000000..0f982c7
--- /dev/null
@@ -0,0 +1,829 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include <util/common.h>
+
+#include "pass.h"
+#include "pass-hal.h"
+#include "pass-parser.h"
+#include "pass-rescon.h"
+}
+
+#include "hal-api-power-mock.hpp"
+#include "pass-hal-mock.hpp"
+
+#define                FREQ_100MZ              100000
+#define                CHARGING_CURRNT_1A      1000000
+#define                DEFAULT_MINUS_INT       -1
+#define                DEFAULT_UP_THRESHOLD    90
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+class PassHalTest : public testing::Test {
+public:
+       void SetUp() override {
+               gHalApiPowerMock = new HalApiPowerMock();
+       }
+
+       void TearDown() override {
+               if (!gHalApiPowerMock)
+                       return;
+
+               delete gHalApiPowerMock;
+               gHalApiPowerMock = NULL;
+       }
+};
+
+TEST_F(PassHalTest, pass_hal_get_resource) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock,
+               hal_power_get_backend(_)).WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_resource(&res);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_hal_get_resource(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_put_resource) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock,
+               hal_power_put_backend()).WillRepeatedly(Return(0));
+
+       ret = pass_hal_put_resource(&res);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_hal_put_resource(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_curr_governor) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_governor(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_curr_governor(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_curr_governor(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_curr_governor(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_curr_governor) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_curr_governor(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_curr_governor(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_curr_governor(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_curr_governor(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_curr_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_curr_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_curr_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_min_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_min_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_min_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_min_freq(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_min_freq(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_min_freq(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_min_freq(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_max_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_max_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_max_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_max_freq(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_max_freq(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_max_freq(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_max_freq(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_available_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_min_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_available_min_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_available_min_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_available_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_max_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_available_max_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_available_max_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_up_threshold) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_up_threshold(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_up_threshold(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_up_threshold(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_up_threshold) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_up_threshold(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_up_threshold(&res, DEFAULT_UP_THRESHOLD);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_up_threshold(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_up_threshold(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_state(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_state(&res, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_state(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_online_state(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_state(_, _, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_state(&res, 0, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, 10);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(&res, DEFAULT_MINUS_INT, 1);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(NULL, DEFAULT_MINUS_INT, 1);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_min_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_min_num (_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_min_num(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_min_num(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_min_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_min_num (_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_min_num(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_min_num(NULL, 2);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_min_num(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_max_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_max_num (_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_max_num(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_max_num(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_max_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_max_num (_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_max_num(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_max_num(NULL, 2);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_max_num(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_temp) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_temp(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_temp(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_temp(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_tmu_policy) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_policy(_, _,_))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_tmu_policy(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_tmu_policy(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_tmu_policy(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_cooling_device_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_cooling_device_state(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_cooling_device_state(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_cooling_device_state(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_cooling_device_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_set_cooling_device_state(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_cooling_device_state(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_cooling_device_state(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_cooling_device_state(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_battery_charging_status) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_status(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_battery_charging_status(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_battery_charging_status(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_battery_charging_status) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_status(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_battery_charging_status(&res, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_status(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_status(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_status(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_battery_charging_current) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_current(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_battery_charging_current(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_battery_charging_current(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_battery_charging_current) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_current(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_battery_charging_current(&res, CHARGING_CURRNT_1A);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_current(&res, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_current(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_current(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_fault_around_bytes) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_get_fault_around_bytes(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_fault_around_bytes(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_fault_around_bytes(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_fault_around_bytes) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_set_fault_around_bytes(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_fault_around_bytes(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_fault_around_bytes(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_fault_around_bytes(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_pmqos_data) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_misc_set_pmqos_data(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_pmqos_data(&res, (void *)buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_pmqos_data(NULL, (void *)buf);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_pmqos_data(NULL, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+/* Unittest of pass-parser module */
+class PassParserTest : public testing::Test {
+public:
+       virtual void SetUp() {}
+       virtual void TearDown() {}
+};
+
+TEST(PassParserTest, pass_parser_get_resource_config_valid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/valid/pass.json";
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       ASSERT_EQ(ret, 0);
+
+       pass_parser_put_resource_config(&pass);
+}
+
+TEST(PassParserTest, pass_parser_get_resource_config_invalid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/invalid/pass.json";
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       EXPECT_NE(ret, 0);
+}
+
+TEST(PassParserTest, pass_parser_get_each_resource_config_valid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/valid/pass.json";
+       int i;
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       ASSERT_EQ(ret, 0);
+
+       for (i = 0; i < (int)pass.num_resources; i++) {
+               struct pass_resource *res = &pass.res[i];
+               ret = pass_parser_get_each_resource_config(res,
+                                       res->config_data.path_conf_file);
+               EXPECT_EQ(ret, 0);
+               if (ret < 0)
+                       break;
+       }
+
+       for (i--; i >= 0; i--)
+               pass_parser_put_each_resource_config(&pass.res[i]);
+       pass_parser_put_resource_config(&pass);
+}
+
+class ResourceConfigInvalid {
+public:
+       const char *path_json;
+
+       ResourceConfigInvalid(
+               const char *path_json_) :
+                       path_json(path_json_) {}
+};
+
+class PassParserInvalidTest : public ::testing::TestWithParam<ResourceConfigInvalid> {};
+
+INSTANTIATE_TEST_CASE_P (PassParserTest, PassParserInvalidTest,
+       ::testing::Values (
+       ResourceConfigInvalid ("./scripts/invalid-level/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-pmqos/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-thermal/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-thermal/pass1.json"),
+       ResourceConfigInvalid ("./scripts/invalid-header/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-battery/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-memory/pass.json")
+));
+
+TEST_P(PassParserInvalidTest, pass_parser_get_each_resource_config_invalid) {
+       auto param = GetParam();
+       struct pass pass;
+       unsigned int i;
+
+       int ret = pass_parser_get_resource_config(&pass, param.path_json);
+       EXPECT_EQ(ret, 0);
+
+       for (i = 0; i < pass.num_resources; i++) {
+               struct pass_resource *res = &pass.res[i];
+               ret = pass_parser_get_each_resource_config(res,
+                                       res->config_data.path_conf_file);
+               EXPECT_NE(ret, 0);
+       }
+
+       for (i = 0; i < pass.num_resources; i++)
+               pass_parser_put_each_resource_config(&pass.res[i]);
+       pass_parser_put_resource_config(&pass);
+}
+
+/* Unittest of pass-rescon module */
+class PassResconInitExitTest : public testing::Test {
+public:
+       void SetUp() override {
+               gPassHalMock = new PassHalMock();
+
+               EXPECT_CALL(*gPassHalMock,
+                       pass_hal_save_initdata(_)).WillRepeatedly(Return(0));
+               EXPECT_CALL(*gPassHalMock,
+                       pass_hal_restore_initdata(_)).WillRepeatedly(Return(0));
+       }
+
+       void TearDown() override {
+
+               if (!gPassHalMock)
+                       return;
+
+               delete gPassHalMock;
+               gPassHalMock = NULL;
+       }
+};
+
+TEST(PassResconInitExitTest, pass_rescon_prepare_and_init_and_exit) {
+       struct pass_resource res;
+       res.config_data.res_type = PASS_RESOURCE_CPU_ID;
+       res.rescon = NULL;
+
+       int ret = pass_rescon_prepare(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_init(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_exit(&res);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_prepare(NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_init(NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_exit(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+#define INIT_LEVEL_VALUE               100     
+struct pass_resource g_resource;
+
+class PassResconTest : public testing::Test {
+public:
+       void SetUp() override {
+               gPassHalMock = new PassHalMock();
+
+               EXPECT_CALL(*gPassHalMock,
+                       pass_hal_save_initdata(_)).WillRepeatedly(Return(0));
+
+               pass_rescon_prepare(&g_resource);
+               pass_rescon_init(&g_resource);
+       }
+
+       void TearDown() override {
+               EXPECT_CALL(*gPassHalMock,
+                       pass_hal_restore_initdata(_)).WillRepeatedly(Return(0));
+
+               pass_rescon_exit(&g_resource);
+
+               if (!gPassHalMock)
+                       return;
+
+               delete gPassHalMock;
+               gPassHalMock = NULL;
+       }
+};
+
+TEST_F(PassResconTest, pass_rescon_set_init_level) {
+       int ret = pass_rescon_set_init_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_init_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_init_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_init_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_init_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_set_curr_level) {
+       int ret = pass_rescon_set_curr_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_curr_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_curr_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_curr_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_curr_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_set_prev_level) {
+       int ret = pass_rescon_set_prev_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_prev_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_prev_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_prev_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_prev_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_set_min_level) {
+       int ret = pass_rescon_set_min_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_min_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_min_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_min_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_min_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_set_max_level) {
+       int ret = pass_rescon_set_max_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_max_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_max_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_max_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_max_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_set_init_scenario_level) {
+       int ret = pass_rescon_set_init_scenario_level(&g_resource, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_rescon_set_init_scenario_level(&g_resource, INIT_LEVEL_VALUE);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_set_init_scenario_level(NULL, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_init_scenario_level(&g_resource, -1);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_set_init_scenario_level(&g_resource, INT_MAX);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_get_init_level)  {
+       int level = 0;
+       int ret = pass_rescon_get_init_level(&g_resource, &level);
+       EXPECT_EQ(ret, INIT_LEVEL_VALUE);
+
+       ret = pass_rescon_get_init_level(NULL, &level);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_get_init_level(&g_resource, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_get_curr_level)  {
+       int level = 0;
+       int ret = pass_rescon_get_curr_level(&g_resource, &level);
+       EXPECT_EQ(ret, INIT_LEVEL_VALUE);
+
+       ret = pass_rescon_get_curr_level(NULL, &level);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_get_curr_level(&g_resource, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_get_prev_level)  {
+       int level = 0;
+       int ret = pass_rescon_get_prev_level(&g_resource, &level);
+       EXPECT_EQ(ret, INIT_LEVEL_VALUE);
+
+       ret = pass_rescon_get_prev_level(NULL, &level);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_get_prev_level(&g_resource, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_get_min_level)  {
+       int level = 0;
+       int ret = pass_rescon_get_min_level(&g_resource, &level);
+       EXPECT_EQ(ret, INIT_LEVEL_VALUE);
+
+       ret = pass_rescon_get_min_level(NULL, &level);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_get_min_level(&g_resource, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_get_max_level)  {
+       int level = 0;
+       int ret = pass_rescon_get_max_level(&g_resource, &level);
+       EXPECT_EQ(ret, INIT_LEVEL_VALUE);
+
+       ret = pass_rescon_get_max_level(NULL, &level);
+       EXPECT_NE(ret, 0);
+       ret = pass_rescon_get_max_level(&g_resource, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassResconTest, pass_rescon_sync)  {
+       int ret = pass_rescon_sync(&g_resource);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_rescon_sync(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+/*
+int pass_rescon_sync(struct pass_resource *res);
+
+int pass_rescon_set_level_sync(struct pass_resource *res, int new_level);
+int pass_rescon_set_level(struct pass_resource *res, int new_level);
+
+int pass_rescon_set_scenario_level_sync(struct pass_resource *res,
+                                       int scenario_level);
+int pass_rescon_set_scenario_level(struct pass_resource *res,
+                                       int scenario_level);
+
+int pass_rescon_unset_scenario_level_sync(struct pass_resource *res,
+                                       int scenario_level);
+int pass_rescon_unset_scenario_level(struct pass_resource *res,
+                                       int scenario_level);
+
+*/
+
+int main(int argc, char *argv[])
+{
+       try {
+               testing::InitGoogleTest(&argc, argv);
+               return RUN_ALL_TESTS();
+       } catch (...) {
+               return EXIT_FAILURE;
+       }
+}
diff --git a/tests/unittest/CMakeLists.txt b/tests/unittest/CMakeLists.txt
deleted file mode 100644 (file)
index 1592154..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-ENABLE_TESTING()
-SET(PASS_UNITTEST "pass-unittests")
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Werror")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror")
-
-SET(PASS_SRCS
-       ${CMAKE_SOURCE_DIR}/src/util/common.c
-       ${CMAKE_SOURCE_DIR}/src/pass/pass-hal.c
-       ${CMAKE_SOURCE_DIR}/src/pass/pass-rescon.c
-       ${CMAKE_SOURCE_DIR}/src/pass/pass-parser.c
-)
-
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ PASS_UNITTEST_SRCS)
-ADD_EXECUTABLE(${PASS_UNITTEST} ${PASS_UNITTEST_SRCS} ${PASS_SRCS})
-
-TARGET_INCLUDE_DIRECTORIES(${PASS_UNITTEST} PUBLIC
-       "${CMAKE_CURRENT_SOURCE_DIR}/../../include"
-       "${CMAKE_SOURCE_DIR}"
-       "${CMAKE_SOURCE_DIR}/src"
-       "${CMAKE_SOURCE_DIR}/src/pass"
-       "${CMAKE_SOURCE_DIR}/include"
-)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pass_unittest_pkgs REQUIRED
-       glib-2.0
-       gio-2.0
-       gmock
-       dlog
-       json-c
-       hal-api-power
-)
-
-FOREACH(flag ${pass_unittest_pkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-TARGET_LINK_LIBRARIES(${PASS_UNITTEST} ${pass_unittest_pkgs_LDFLAGS})
-SET_TARGET_PROPERTIES(${PASS_UNITTEST} PROPERTIES COMPILE_FLAGS "-fPIE -fvisibility=default")
-SET_TARGET_PROPERTIES(${PASS_UNITTEST} PROPERTIES LINK_FLAGS "-pie")
-
-ADD_TEST(
-       NAME ${PASS_UNITTEST}
-       COMMAND ${PASS_UNITTEST}
-)
diff --git a/tests/unittest/hal-api-power-mock.cpp b/tests/unittest/hal-api-power-mock.cpp
deleted file mode 100644 (file)
index b9a550f..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) 2022 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 <unistd.h>
-#include <stdlib.h>
-
-#include <gio/gio.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-extern "C" {
-#include "pass.h"
-#include "pass-hal.h"
-#include "pass-parser.h"
-}
-
-#include "hal-api-power-mock.hpp"
-
-using namespace std;
-using ::testing::Return;
-using ::testing::_;
-
-HalApiPowerMock *gHalApiPowerMock;
-
-/**
- * Get and put power hal backend
- */
-int hal_power_get_backend(unsigned int res_type)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_get_backend(res_type);
-}
-int hal_power_put_backend(void)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_put_backend();
-}
-
-/**
- * DVFS (Dynamic Voltage Frequency Scaling) Operation for CPU/BUS/GPU H/W
- */
-/* Get and set the current governor. */
-int hal_power_dvfs_get_curr_governor(unsigned int res_type, char *res_name, char *governor)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_curr_governor(
-                                       res_type, res_name, governor);
-}
-int hal_power_dvfs_set_curr_governor(unsigned int res_type, char *res_name, char *governor)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_set_curr_governor(
-                                       res_type, res_name, governor);
-}
-int hal_power_dvfs_get_avail_governor(unsigned int res_type, char *res_name, char **avail_governor)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_avail_governor(
-                                       res_type, res_name, avail_governor);
-}
-
-/* Get the current frequency. */
-int hal_power_dvfs_get_curr_freq(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_curr_freq(
-                                       res_type, res_name);
-}
-
-/* Get and set the minimum frequency. */
-int hal_power_dvfs_get_min_freq(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_min_freq(
-                                       res_type, res_name);
-}
-int hal_power_dvfs_set_min_freq(unsigned int res_type, char *res_name, int freq)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_set_min_freq(
-                                       res_type, res_name, freq);
-}
-
-/* Get and set the maximum frequency. */
-int hal_power_dvfs_get_max_freq(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_max_freq(
-                                       res_type, res_name);
-}
-int hal_power_dvfs_set_max_freq(unsigned int res_type, char *res_name, int freq)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_set_max_freq(
-                                       res_type, res_name, freq);
-}
-
-/* Get the minimum/maximum frequency which can be set to resource. */
-int hal_power_dvfs_get_available_min_freq(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-       return gHalApiPowerMock->hal_power_dvfs_get_available_min_freq(
-                                       res_type, res_name);
-}
-int hal_power_dvfs_get_available_max_freq(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_available_max_freq(
-                                       res_type, res_name);
-}
-
-/* Get and set the up_threshold to support boosting. */
-int hal_power_dvfs_get_up_threshold(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_up_threshold(
-                                       res_type, res_name);
-}
-int hal_power_dvfs_set_up_threshold(unsigned int res_type, char *res_name, int up_threshold)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_set_up_threshold(
-                                       res_type, res_name, up_threshold);
-}
-
-/* Get the load_table of each resource to estimate the system load. */
-int hal_power_dvfs_get_load_table(unsigned int res_type, char *name, void *pass_cpu_load_table)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_dvfs_get_load_table(
-                                       res_type, name, pass_cpu_load_table);
-}
-
-/**
- * CPU Hotplug Operation for CPU H/W
- */
-/* Get and set the online status of resource. */
-int hal_power_hotplug_get_online_state(unsigned int res_type, char *res_name, int cpu)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_get_online_state(
-                                       res_type, res_name, cpu);
-}
-int hal_power_hotplug_set_online_state(unsigned int res_type, char *res_name, int cpu, int on)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_set_online_state(
-                                       res_type, res_name, cpu, on);
-}
-
-/* Get and set the minimum number of online CPUs */
-int hal_power_hotplug_get_online_min_num (unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_get_online_min_num (
-                                       res_type, res_name);
-}
-int hal_power_hotplug_set_online_min_num (unsigned int res_type, char *res_name, int min_num)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_set_online_min_num (
-                                       res_type, res_name, min_num);
-}
-
-/* Get and set the maximum number of online CPUs */
-int hal_power_hotplug_get_online_max_num (unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_get_online_max_num (
-                                       res_type, res_name);
-}
-int hal_power_hotplug_set_online_max_num (unsigned int res_type, char *res_name, int max_num)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_hotplug_set_online_max_num (
-                                       res_type, res_name, max_num);
-}
-
-/**
- * Thermal Operation for CPU/BUS/GPU H/W
- */
-/* Get the current temperature of resource. */
-int hal_power_thermal_get_temp(unsigned int res_type, char *res_thermal_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_thermal_get_temp(
-                                       res_type, res_thermal_name);
-}
-
-/* Get the policy of thermal management unit. */
-int hal_power_thermal_get_policy(unsigned int res_type, char *res_thermal_name, char *policy)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_thermal_get_policy(
-                                       res_type, res_thermal_name, policy);
-}
-
-/* Get and set the state of thermal cooling-device */
-int hal_power_thermal_get_cooling_device_state(unsigned int device_type, char *cooling_device_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_thermal_get_cooling_device_state(
-                                       device_type, cooling_device_name);
-}
-int hal_power_thermal_set_cooling_device_state(unsigned int device_type, char *cooling_device_name, int state)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_thermal_set_cooling_device_state(
-                                       device_type, cooling_device_name, state);
-}
-
-/* Get maximum state of thermal cooling-device */
-int hal_power_thermal_get_cooling_device_max_state(unsigned int device_type, char *cooling_device_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_thermal_get_cooling_device_max_state(
-                                       device_type, cooling_device_name);
-}
-
-/* Get and set the battery charging state */
-int hal_power_battery_get_charging_status(unsigned int device_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_battery_get_charging_status(
-                                       device_type, res_name);
-}
-int hal_power_battery_set_charging_status(unsigned int device_type, char *res_name, int state)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_battery_set_charging_status(
-                                       device_type, res_name, state);
-}
-
-/* Get and set the battery charging current (unit: uA) */
-int hal_power_battery_get_charging_current(unsigned int device_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_battery_get_charging_current(
-                                       device_type, res_name);
-}
-int hal_power_battery_set_charging_current(unsigned int device_type, char *res_name, int charing_current_uA)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_battery_set_charging_current(
-                                       device_type, res_name, charing_current_uA);
-}
-
-/**
- * Memory Operation for Memory H/W
- */
-/* Get and set the /sys/kernel/debug/fault_around_bytes */
-int hal_power_memory_get_fault_around_bytes(unsigned int res_type, char *res_name)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_memory_get_fault_around_bytes(
-                                       res_type, res_name);
-}
-int hal_power_memory_set_fault_around_bytes(unsigned int res_type, char *res_name, int fault_around_bytes)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_memory_set_fault_around_bytes(
-                                       res_type, res_name, fault_around_bytes);
-}
-
-/**
- * Miscellaneous Operation for CPU/BUS/GPU H/W
- */
-int hal_power_misc_set_pmqos_data(unsigned int res_type, char *res_name, void *data)
-{
-       if (!gHalApiPowerMock)
-               return -ENOTSUP;
-
-       return gHalApiPowerMock->hal_power_misc_set_pmqos_data(
-                                       res_type, res_name, data);
-}
diff --git a/tests/unittest/hal-api-power-mock.hpp b/tests/unittest/hal-api-power-mock.hpp
deleted file mode 100644 (file)
index e03c2ba..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2022 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 <unistd.h>
-#include <stdlib.h>
-
-#include <gio/gio.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-extern "C" {
-#include "pass.h"
-#include "pass-hal.h"
-#include "pass-parser.h"
-}
-
-using namespace std;
-using ::testing::Return;
-using ::testing::_;
-
-class HalApiPowerMockInterface {
-public:
-       virtual ~HalApiPowerMockInterface() {};
-
-       /**
-        * Get and put power hal backend
-        */
-       virtual int hal_power_get_backend(unsigned int res_type) = 0;
-       virtual int hal_power_put_backend(void) = 0;
-
-       /**
-        * DVFS (Dynamic Voltage Frequency Scaling) Operation for CPU/BUS/GPU H/W
-        */
-       /* Get and set the current governor. */
-       virtual int hal_power_dvfs_get_curr_governor(unsigned int res_type, char *res_name, char *governor) = 0;
-       virtual int hal_power_dvfs_set_curr_governor(unsigned int res_type, char *res_name, char *governor) = 0;
-       virtual int hal_power_dvfs_get_avail_governor(unsigned int res_type, char *res_name, char **avail_governor) = 0;
-
-       /* Get the current frequency. */
-       virtual int hal_power_dvfs_get_curr_freq(unsigned int res_type, char *res_name) = 0;
-
-       /* Get and set the minimum frequency. */
-       virtual int hal_power_dvfs_get_min_freq(unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_dvfs_set_min_freq(unsigned int res_type, char *res_name, int freq) = 0;
-
-       /* Get and set the maximum frequency. */
-       virtual int hal_power_dvfs_get_max_freq(unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_dvfs_set_max_freq(unsigned int res_type, char *res_name, int freq) = 0;
-
-       /* Get the minimum/maximum frequency which can be set to resource. */
-       virtual int hal_power_dvfs_get_available_min_freq(unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_dvfs_get_available_max_freq(unsigned int res_type, char *res_name) = 0;
-
-       /* Get and set the up_threshold to support boosting. */
-       virtual int hal_power_dvfs_get_up_threshold(unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_dvfs_set_up_threshold(unsigned int res_type, char *res_name, int up_threshold) = 0;
-
-       /* Get the load_table of each resource to estimate the system load. */
-       virtual int hal_power_dvfs_get_load_table(unsigned int res_type, char *name, void *pass_cpu_load_table) = 0;
-
-       /**
-        * CPU Hotplug Operation for CPU H/W
-        */
-       /* Get and set the online status of resource. */
-       virtual int hal_power_hotplug_get_online_state(unsigned int res_type, char *res_name, int cpu) = 0;
-       virtual int hal_power_hotplug_set_online_state(unsigned int res_type, char *res_name, int cpu, int on) = 0;
-
-       /* Get and set the minimum number of online CPUs */
-       virtual int hal_power_hotplug_get_online_min_num (unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_hotplug_set_online_min_num (unsigned int res_type, char *res_name, int min_num) = 0;
-
-       /* Get and set the maximum number of online CPUs */
-       virtual int hal_power_hotplug_get_online_max_num (unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_hotplug_set_online_max_num (unsigned int res_type, char *res_name, int max_num) = 0;
-
-       /**
-        * Thermal Operation for CPU/BUS/GPU H/W
-        */
-       /* Get the current temperature of resource. */
-       virtual int hal_power_thermal_get_temp(unsigned int res_type, char *res_thermal_name) = 0;
-
-       /* Get the policy of thermal management unit. */
-       virtual int hal_power_thermal_get_policy(unsigned int res_type, char *res_thermal_name, char *policy) = 0;
-
-       /* Get and set the state of thermal cooling-device */
-       virtual int hal_power_thermal_set_cooling_device_state(unsigned int device_type, char *cooling_device_name, int state) = 0;
-       virtual int hal_power_thermal_get_cooling_device_state(unsigned int device_type, char *cooling_device_name) = 0;
-
-       /* Get maximum state of thermal cooling-device */
-       virtual int hal_power_thermal_get_cooling_device_max_state(unsigned int device_type, char *cooling_device_name) = 0;
-
-       /* Get and set the battery charging state */
-       virtual int hal_power_battery_set_charging_status(unsigned int device_type, char *res_name, int state) = 0;
-       virtual int hal_power_battery_get_charging_status(unsigned int device_type, char *res_name) = 0;
-
-       /* Get and set the battery charging current (unit: uA) */
-       virtual int hal_power_battery_set_charging_current(unsigned int device_type, char *res_name, int charing_current_uA) = 0;
-       virtual int hal_power_battery_get_charging_current(unsigned int device_type, char *res_name) = 0;
-
-       /**
-        * Memory Operation for Memory H/W
-        */
-       /* Get and set the /sys/kernel/debug/fault_around_bytes */
-       virtual int hal_power_memory_get_fault_around_bytes(unsigned int res_type, char *res_name) = 0;
-       virtual int hal_power_memory_set_fault_around_bytes(unsigned int res_type, char *res_name, int fault_around_bytes) = 0;
-
-       /**
-        * Miscellaneous Operation for CPU/BUS/GPU H/W
-        */
-       virtual int hal_power_misc_set_pmqos_data(unsigned int res_type, char *res_name, void *data) = 0;
-};
-
-class HalApiPowerMock:HalApiPowerMockInterface {
-public:
-       MOCK_METHOD1(hal_power_get_backend, int (unsigned int res_type));
-       MOCK_METHOD0(hal_power_put_backend, int (void));
-
-       MOCK_METHOD3(hal_power_dvfs_get_curr_governor, int (unsigned int res_type, char *res_name, char *governor));
-       MOCK_METHOD3(hal_power_dvfs_set_curr_governor, int (unsigned int res_type, char *res_name, char *governor));
-       MOCK_METHOD3(hal_power_dvfs_get_avail_governor, int (unsigned int res_type, char *res_name, char **avail_governor));
-
-       MOCK_METHOD2(hal_power_dvfs_get_curr_freq, int (unsigned int res_type, char *res_name));
-
-       MOCK_METHOD2(hal_power_dvfs_get_min_freq, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_dvfs_set_min_freq, int (unsigned int res_type, char *res_name, int freq));
-
-       MOCK_METHOD2(hal_power_dvfs_get_max_freq, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_dvfs_set_max_freq, int (unsigned int res_type, char *res_name, int freq));
-
-       MOCK_METHOD2(hal_power_dvfs_get_available_min_freq, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD2(hal_power_dvfs_get_available_max_freq, int (unsigned int res_type, char *res_name));
-
-       MOCK_METHOD2(hal_power_dvfs_get_up_threshold, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_dvfs_set_up_threshold, int (unsigned int res_type, char *res_name, int up_threshold));
-
-       MOCK_METHOD3(hal_power_dvfs_get_load_table, int (unsigned int res_type, char *name, void *pass_cpu_load_table));
-
-       MOCK_METHOD3(hal_power_hotplug_get_online_state, int (unsigned int res_type, char *res_name, int cpu));
-       MOCK_METHOD4(hal_power_hotplug_set_online_state, int (unsigned int res_type, char *res_name, int cpu, int on));
-
-       MOCK_METHOD2(hal_power_hotplug_get_online_min_num, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_hotplug_set_online_min_num, int (unsigned int res_type, char *res_name, int min_num));
-
-       MOCK_METHOD2(hal_power_hotplug_get_online_max_num, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_hotplug_set_online_max_num, int (unsigned int res_type, char *res_name, int max_num));
-
-       MOCK_METHOD2(hal_power_thermal_get_temp, int (unsigned int res_type, char *res_thermal_name));
-
-       MOCK_METHOD3(hal_power_thermal_get_policy, int (unsigned int res_type, char *res_thermal_name, char *policy));
-
-       MOCK_METHOD3(hal_power_thermal_set_cooling_device_state, int (unsigned int device_type, char *cooling_device_name, int state));
-       MOCK_METHOD2(hal_power_thermal_get_cooling_device_state, int (unsigned int device_type, char *cooling_device_name));
-
-       MOCK_METHOD2(hal_power_thermal_get_cooling_device_max_state, int (unsigned int device_type, char *cooling_device_name));
-
-       MOCK_METHOD3(hal_power_battery_set_charging_status, int (unsigned int device_type, char *res_name, int state));
-       MOCK_METHOD2(hal_power_battery_get_charging_status, int (unsigned int device_type, char *res_name));
-
-       MOCK_METHOD3(hal_power_battery_set_charging_current, int (unsigned int device_type, char *res_name, int charing_current_uA));
-       MOCK_METHOD2(hal_power_battery_get_charging_current, int (unsigned int device_type, char *res_name));
-
-       MOCK_METHOD2(hal_power_memory_get_fault_around_bytes, int (unsigned int res_type, char *res_name));
-       MOCK_METHOD3(hal_power_memory_set_fault_around_bytes, int (unsigned int res_type, char *res_name, int fault_around_bytes));
-
-       MOCK_METHOD3(hal_power_misc_set_pmqos_data, int (unsigned int res_type, char *res_name, void *data));
-
-};
-
-extern HalApiPowerMock *gHalApiPowerMock;
diff --git a/tests/unittest/pass-hal-and-parser/CMakeLists.txt b/tests/unittest/pass-hal-and-parser/CMakeLists.txt
new file mode 100644 (file)
index 0000000..02a6388
--- /dev/null
@@ -0,0 +1,46 @@
+ENABLE_TESTING()
+SET(PASS_UNITTEST "pass-hal-and-parser-unittests")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Werror")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror")
+
+SET(PASS_SRCS
+       ${CMAKE_SOURCE_DIR}/src/util/common.c
+       ${CMAKE_SOURCE_DIR}/src/pass/pass-hal.c
+       ${CMAKE_SOURCE_DIR}/src/pass/pass-rescon.c
+       ${CMAKE_SOURCE_DIR}/src/pass/pass-parser.c
+)
+
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ PASS_UNITTEST_SRCS)
+ADD_EXECUTABLE(${PASS_UNITTEST} ${PASS_UNITTEST_SRCS} ${PASS_SRCS})
+
+TARGET_INCLUDE_DIRECTORIES(${PASS_UNITTEST} PUBLIC
+       "${CMAKE_CURRENT_SOURCE_DIR}/../../include"
+       "${CMAKE_SOURCE_DIR}"
+       "${CMAKE_SOURCE_DIR}/src"
+       "${CMAKE_SOURCE_DIR}/src/pass"
+       "${CMAKE_SOURCE_DIR}/include"
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pass_unittest_pkgs REQUIRED
+       glib-2.0
+       gio-2.0
+       gmock
+       dlog
+       json-c
+       hal-api-power
+)
+
+FOREACH(flag ${pass_unittest_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+TARGET_LINK_LIBRARIES(${PASS_UNITTEST} ${pass_unittest_pkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(${PASS_UNITTEST} PROPERTIES COMPILE_FLAGS "-fPIE -fvisibility=default")
+SET_TARGET_PROPERTIES(${PASS_UNITTEST} PROPERTIES LINK_FLAGS "-pie")
+
+ADD_TEST(
+       NAME ${PASS_UNITTEST}
+       COMMAND ${PASS_UNITTEST}
+)
diff --git a/tests/unittest/pass-hal-and-parser/hal-api-power-mock.cpp b/tests/unittest/pass-hal-and-parser/hal-api-power-mock.cpp
new file mode 100644 (file)
index 0000000..b9a550f
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+#include <stdlib.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include "pass.h"
+#include "pass-hal.h"
+#include "pass-parser.h"
+}
+
+#include "hal-api-power-mock.hpp"
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+HalApiPowerMock *gHalApiPowerMock;
+
+/**
+ * Get and put power hal backend
+ */
+int hal_power_get_backend(unsigned int res_type)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_get_backend(res_type);
+}
+int hal_power_put_backend(void)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_put_backend();
+}
+
+/**
+ * DVFS (Dynamic Voltage Frequency Scaling) Operation for CPU/BUS/GPU H/W
+ */
+/* Get and set the current governor. */
+int hal_power_dvfs_get_curr_governor(unsigned int res_type, char *res_name, char *governor)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_curr_governor(
+                                       res_type, res_name, governor);
+}
+int hal_power_dvfs_set_curr_governor(unsigned int res_type, char *res_name, char *governor)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_set_curr_governor(
+                                       res_type, res_name, governor);
+}
+int hal_power_dvfs_get_avail_governor(unsigned int res_type, char *res_name, char **avail_governor)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_avail_governor(
+                                       res_type, res_name, avail_governor);
+}
+
+/* Get the current frequency. */
+int hal_power_dvfs_get_curr_freq(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_curr_freq(
+                                       res_type, res_name);
+}
+
+/* Get and set the minimum frequency. */
+int hal_power_dvfs_get_min_freq(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_min_freq(
+                                       res_type, res_name);
+}
+int hal_power_dvfs_set_min_freq(unsigned int res_type, char *res_name, int freq)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_set_min_freq(
+                                       res_type, res_name, freq);
+}
+
+/* Get and set the maximum frequency. */
+int hal_power_dvfs_get_max_freq(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_max_freq(
+                                       res_type, res_name);
+}
+int hal_power_dvfs_set_max_freq(unsigned int res_type, char *res_name, int freq)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_set_max_freq(
+                                       res_type, res_name, freq);
+}
+
+/* Get the minimum/maximum frequency which can be set to resource. */
+int hal_power_dvfs_get_available_min_freq(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+       return gHalApiPowerMock->hal_power_dvfs_get_available_min_freq(
+                                       res_type, res_name);
+}
+int hal_power_dvfs_get_available_max_freq(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_available_max_freq(
+                                       res_type, res_name);
+}
+
+/* Get and set the up_threshold to support boosting. */
+int hal_power_dvfs_get_up_threshold(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_up_threshold(
+                                       res_type, res_name);
+}
+int hal_power_dvfs_set_up_threshold(unsigned int res_type, char *res_name, int up_threshold)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_set_up_threshold(
+                                       res_type, res_name, up_threshold);
+}
+
+/* Get the load_table of each resource to estimate the system load. */
+int hal_power_dvfs_get_load_table(unsigned int res_type, char *name, void *pass_cpu_load_table)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_dvfs_get_load_table(
+                                       res_type, name, pass_cpu_load_table);
+}
+
+/**
+ * CPU Hotplug Operation for CPU H/W
+ */
+/* Get and set the online status of resource. */
+int hal_power_hotplug_get_online_state(unsigned int res_type, char *res_name, int cpu)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_get_online_state(
+                                       res_type, res_name, cpu);
+}
+int hal_power_hotplug_set_online_state(unsigned int res_type, char *res_name, int cpu, int on)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_set_online_state(
+                                       res_type, res_name, cpu, on);
+}
+
+/* Get and set the minimum number of online CPUs */
+int hal_power_hotplug_get_online_min_num (unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_get_online_min_num (
+                                       res_type, res_name);
+}
+int hal_power_hotplug_set_online_min_num (unsigned int res_type, char *res_name, int min_num)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_set_online_min_num (
+                                       res_type, res_name, min_num);
+}
+
+/* Get and set the maximum number of online CPUs */
+int hal_power_hotplug_get_online_max_num (unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_get_online_max_num (
+                                       res_type, res_name);
+}
+int hal_power_hotplug_set_online_max_num (unsigned int res_type, char *res_name, int max_num)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_hotplug_set_online_max_num (
+                                       res_type, res_name, max_num);
+}
+
+/**
+ * Thermal Operation for CPU/BUS/GPU H/W
+ */
+/* Get the current temperature of resource. */
+int hal_power_thermal_get_temp(unsigned int res_type, char *res_thermal_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_thermal_get_temp(
+                                       res_type, res_thermal_name);
+}
+
+/* Get the policy of thermal management unit. */
+int hal_power_thermal_get_policy(unsigned int res_type, char *res_thermal_name, char *policy)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_thermal_get_policy(
+                                       res_type, res_thermal_name, policy);
+}
+
+/* Get and set the state of thermal cooling-device */
+int hal_power_thermal_get_cooling_device_state(unsigned int device_type, char *cooling_device_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_thermal_get_cooling_device_state(
+                                       device_type, cooling_device_name);
+}
+int hal_power_thermal_set_cooling_device_state(unsigned int device_type, char *cooling_device_name, int state)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_thermal_set_cooling_device_state(
+                                       device_type, cooling_device_name, state);
+}
+
+/* Get maximum state of thermal cooling-device */
+int hal_power_thermal_get_cooling_device_max_state(unsigned int device_type, char *cooling_device_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_thermal_get_cooling_device_max_state(
+                                       device_type, cooling_device_name);
+}
+
+/* Get and set the battery charging state */
+int hal_power_battery_get_charging_status(unsigned int device_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_battery_get_charging_status(
+                                       device_type, res_name);
+}
+int hal_power_battery_set_charging_status(unsigned int device_type, char *res_name, int state)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_battery_set_charging_status(
+                                       device_type, res_name, state);
+}
+
+/* Get and set the battery charging current (unit: uA) */
+int hal_power_battery_get_charging_current(unsigned int device_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_battery_get_charging_current(
+                                       device_type, res_name);
+}
+int hal_power_battery_set_charging_current(unsigned int device_type, char *res_name, int charing_current_uA)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_battery_set_charging_current(
+                                       device_type, res_name, charing_current_uA);
+}
+
+/**
+ * Memory Operation for Memory H/W
+ */
+/* Get and set the /sys/kernel/debug/fault_around_bytes */
+int hal_power_memory_get_fault_around_bytes(unsigned int res_type, char *res_name)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_memory_get_fault_around_bytes(
+                                       res_type, res_name);
+}
+int hal_power_memory_set_fault_around_bytes(unsigned int res_type, char *res_name, int fault_around_bytes)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_memory_set_fault_around_bytes(
+                                       res_type, res_name, fault_around_bytes);
+}
+
+/**
+ * Miscellaneous Operation for CPU/BUS/GPU H/W
+ */
+int hal_power_misc_set_pmqos_data(unsigned int res_type, char *res_name, void *data)
+{
+       if (!gHalApiPowerMock)
+               return -ENOTSUP;
+
+       return gHalApiPowerMock->hal_power_misc_set_pmqos_data(
+                                       res_type, res_name, data);
+}
diff --git a/tests/unittest/pass-hal-and-parser/hal-api-power-mock.hpp b/tests/unittest/pass-hal-and-parser/hal-api-power-mock.hpp
new file mode 100644 (file)
index 0000000..e03c2ba
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+#include <stdlib.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include "pass.h"
+#include "pass-hal.h"
+#include "pass-parser.h"
+}
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+class HalApiPowerMockInterface {
+public:
+       virtual ~HalApiPowerMockInterface() {};
+
+       /**
+        * Get and put power hal backend
+        */
+       virtual int hal_power_get_backend(unsigned int res_type) = 0;
+       virtual int hal_power_put_backend(void) = 0;
+
+       /**
+        * DVFS (Dynamic Voltage Frequency Scaling) Operation for CPU/BUS/GPU H/W
+        */
+       /* Get and set the current governor. */
+       virtual int hal_power_dvfs_get_curr_governor(unsigned int res_type, char *res_name, char *governor) = 0;
+       virtual int hal_power_dvfs_set_curr_governor(unsigned int res_type, char *res_name, char *governor) = 0;
+       virtual int hal_power_dvfs_get_avail_governor(unsigned int res_type, char *res_name, char **avail_governor) = 0;
+
+       /* Get the current frequency. */
+       virtual int hal_power_dvfs_get_curr_freq(unsigned int res_type, char *res_name) = 0;
+
+       /* Get and set the minimum frequency. */
+       virtual int hal_power_dvfs_get_min_freq(unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_dvfs_set_min_freq(unsigned int res_type, char *res_name, int freq) = 0;
+
+       /* Get and set the maximum frequency. */
+       virtual int hal_power_dvfs_get_max_freq(unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_dvfs_set_max_freq(unsigned int res_type, char *res_name, int freq) = 0;
+
+       /* Get the minimum/maximum frequency which can be set to resource. */
+       virtual int hal_power_dvfs_get_available_min_freq(unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_dvfs_get_available_max_freq(unsigned int res_type, char *res_name) = 0;
+
+       /* Get and set the up_threshold to support boosting. */
+       virtual int hal_power_dvfs_get_up_threshold(unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_dvfs_set_up_threshold(unsigned int res_type, char *res_name, int up_threshold) = 0;
+
+       /* Get the load_table of each resource to estimate the system load. */
+       virtual int hal_power_dvfs_get_load_table(unsigned int res_type, char *name, void *pass_cpu_load_table) = 0;
+
+       /**
+        * CPU Hotplug Operation for CPU H/W
+        */
+       /* Get and set the online status of resource. */
+       virtual int hal_power_hotplug_get_online_state(unsigned int res_type, char *res_name, int cpu) = 0;
+       virtual int hal_power_hotplug_set_online_state(unsigned int res_type, char *res_name, int cpu, int on) = 0;
+
+       /* Get and set the minimum number of online CPUs */
+       virtual int hal_power_hotplug_get_online_min_num (unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_hotplug_set_online_min_num (unsigned int res_type, char *res_name, int min_num) = 0;
+
+       /* Get and set the maximum number of online CPUs */
+       virtual int hal_power_hotplug_get_online_max_num (unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_hotplug_set_online_max_num (unsigned int res_type, char *res_name, int max_num) = 0;
+
+       /**
+        * Thermal Operation for CPU/BUS/GPU H/W
+        */
+       /* Get the current temperature of resource. */
+       virtual int hal_power_thermal_get_temp(unsigned int res_type, char *res_thermal_name) = 0;
+
+       /* Get the policy of thermal management unit. */
+       virtual int hal_power_thermal_get_policy(unsigned int res_type, char *res_thermal_name, char *policy) = 0;
+
+       /* Get and set the state of thermal cooling-device */
+       virtual int hal_power_thermal_set_cooling_device_state(unsigned int device_type, char *cooling_device_name, int state) = 0;
+       virtual int hal_power_thermal_get_cooling_device_state(unsigned int device_type, char *cooling_device_name) = 0;
+
+       /* Get maximum state of thermal cooling-device */
+       virtual int hal_power_thermal_get_cooling_device_max_state(unsigned int device_type, char *cooling_device_name) = 0;
+
+       /* Get and set the battery charging state */
+       virtual int hal_power_battery_set_charging_status(unsigned int device_type, char *res_name, int state) = 0;
+       virtual int hal_power_battery_get_charging_status(unsigned int device_type, char *res_name) = 0;
+
+       /* Get and set the battery charging current (unit: uA) */
+       virtual int hal_power_battery_set_charging_current(unsigned int device_type, char *res_name, int charing_current_uA) = 0;
+       virtual int hal_power_battery_get_charging_current(unsigned int device_type, char *res_name) = 0;
+
+       /**
+        * Memory Operation for Memory H/W
+        */
+       /* Get and set the /sys/kernel/debug/fault_around_bytes */
+       virtual int hal_power_memory_get_fault_around_bytes(unsigned int res_type, char *res_name) = 0;
+       virtual int hal_power_memory_set_fault_around_bytes(unsigned int res_type, char *res_name, int fault_around_bytes) = 0;
+
+       /**
+        * Miscellaneous Operation for CPU/BUS/GPU H/W
+        */
+       virtual int hal_power_misc_set_pmqos_data(unsigned int res_type, char *res_name, void *data) = 0;
+};
+
+class HalApiPowerMock:HalApiPowerMockInterface {
+public:
+       MOCK_METHOD1(hal_power_get_backend, int (unsigned int res_type));
+       MOCK_METHOD0(hal_power_put_backend, int (void));
+
+       MOCK_METHOD3(hal_power_dvfs_get_curr_governor, int (unsigned int res_type, char *res_name, char *governor));
+       MOCK_METHOD3(hal_power_dvfs_set_curr_governor, int (unsigned int res_type, char *res_name, char *governor));
+       MOCK_METHOD3(hal_power_dvfs_get_avail_governor, int (unsigned int res_type, char *res_name, char **avail_governor));
+
+       MOCK_METHOD2(hal_power_dvfs_get_curr_freq, int (unsigned int res_type, char *res_name));
+
+       MOCK_METHOD2(hal_power_dvfs_get_min_freq, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_dvfs_set_min_freq, int (unsigned int res_type, char *res_name, int freq));
+
+       MOCK_METHOD2(hal_power_dvfs_get_max_freq, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_dvfs_set_max_freq, int (unsigned int res_type, char *res_name, int freq));
+
+       MOCK_METHOD2(hal_power_dvfs_get_available_min_freq, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD2(hal_power_dvfs_get_available_max_freq, int (unsigned int res_type, char *res_name));
+
+       MOCK_METHOD2(hal_power_dvfs_get_up_threshold, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_dvfs_set_up_threshold, int (unsigned int res_type, char *res_name, int up_threshold));
+
+       MOCK_METHOD3(hal_power_dvfs_get_load_table, int (unsigned int res_type, char *name, void *pass_cpu_load_table));
+
+       MOCK_METHOD3(hal_power_hotplug_get_online_state, int (unsigned int res_type, char *res_name, int cpu));
+       MOCK_METHOD4(hal_power_hotplug_set_online_state, int (unsigned int res_type, char *res_name, int cpu, int on));
+
+       MOCK_METHOD2(hal_power_hotplug_get_online_min_num, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_hotplug_set_online_min_num, int (unsigned int res_type, char *res_name, int min_num));
+
+       MOCK_METHOD2(hal_power_hotplug_get_online_max_num, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_hotplug_set_online_max_num, int (unsigned int res_type, char *res_name, int max_num));
+
+       MOCK_METHOD2(hal_power_thermal_get_temp, int (unsigned int res_type, char *res_thermal_name));
+
+       MOCK_METHOD3(hal_power_thermal_get_policy, int (unsigned int res_type, char *res_thermal_name, char *policy));
+
+       MOCK_METHOD3(hal_power_thermal_set_cooling_device_state, int (unsigned int device_type, char *cooling_device_name, int state));
+       MOCK_METHOD2(hal_power_thermal_get_cooling_device_state, int (unsigned int device_type, char *cooling_device_name));
+
+       MOCK_METHOD2(hal_power_thermal_get_cooling_device_max_state, int (unsigned int device_type, char *cooling_device_name));
+
+       MOCK_METHOD3(hal_power_battery_set_charging_status, int (unsigned int device_type, char *res_name, int state));
+       MOCK_METHOD2(hal_power_battery_get_charging_status, int (unsigned int device_type, char *res_name));
+
+       MOCK_METHOD3(hal_power_battery_set_charging_current, int (unsigned int device_type, char *res_name, int charing_current_uA));
+       MOCK_METHOD2(hal_power_battery_get_charging_current, int (unsigned int device_type, char *res_name));
+
+       MOCK_METHOD2(hal_power_memory_get_fault_around_bytes, int (unsigned int res_type, char *res_name));
+       MOCK_METHOD3(hal_power_memory_set_fault_around_bytes, int (unsigned int res_type, char *res_name, int fault_around_bytes));
+
+       MOCK_METHOD3(hal_power_misc_set_pmqos_data, int (unsigned int res_type, char *res_name, void *data));
+
+};
+
+extern HalApiPowerMock *gHalApiPowerMock;
diff --git a/tests/unittest/pass-hal-and-parser/pass-hal-and-parser-unittests.cc b/tests/unittest/pass-hal-and-parser/pass-hal-and-parser-unittests.cc
new file mode 100644 (file)
index 0000000..cda27aa
--- /dev/null
@@ -0,0 +1,591 @@
+/*
+ * Copyright (C) 2022 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 <unistd.h>
+
+#include <gio/gio.h>
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+extern "C" {
+#include <util/common.h>
+
+#include "pass.h"
+#include "pass-hal.h"
+#include "pass-parser.h"
+}
+
+#include "hal-api-power-mock.hpp"
+
+#define                FREQ_100MZ              100000
+#define                CHARGING_CURRNT_1A      1000000
+#define                DEFAULT_MINUS_INT       -1
+#define                DEFAULT_UP_THRESHOLD    90
+
+using namespace std;
+using ::testing::Return;
+using ::testing::_;
+
+class PassHalTest : public testing::Test {
+public:
+       void SetUp() override {
+               gHalApiPowerMock = new HalApiPowerMock();
+       }
+
+       void TearDown() override {
+               if (!gHalApiPowerMock)
+                       return;
+
+               delete gHalApiPowerMock;
+               gHalApiPowerMock = NULL;
+       }
+};
+
+TEST_F(PassHalTest, pass_hal_get_resource) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock,
+               hal_power_get_backend(_)).WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_resource(&res);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_hal_get_resource(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_put_resource) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock,
+               hal_power_put_backend()).WillRepeatedly(Return(0));
+
+       ret = pass_hal_put_resource(&res);
+       EXPECT_EQ(ret, 0);
+
+       ret = pass_hal_put_resource(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_curr_governor) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_governor(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_curr_governor(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_curr_governor(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_curr_governor(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_curr_governor) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_curr_governor(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_curr_governor(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_curr_governor(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_curr_governor(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_curr_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_curr_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_curr_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_min_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_min_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_min_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_min_freq(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_min_freq(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_min_freq(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_min_freq(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_max_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_max_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_max_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_max_freq(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_max_freq(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_max_freq(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_max_freq(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_available_min_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_min_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_available_min_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_available_min_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_available_max_freq) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_max_freq(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_available_max_freq(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_available_max_freq(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_up_threshold) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_up_threshold(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_up_threshold(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_up_threshold(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_up_threshold) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_up_threshold(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_up_threshold(&res, DEFAULT_UP_THRESHOLD);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_up_threshold(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_up_threshold(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_state(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_state(&res, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_state(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_online_state(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_state(_, _, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_state(&res, 0, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, 10);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(&res, DEFAULT_MINUS_INT, 1);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(&res, 0, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_state(NULL, DEFAULT_MINUS_INT, 1);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_min_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_min_num (_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_min_num(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_min_num(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_min_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_min_num (_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_min_num(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_min_num(NULL, 2);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_min_num(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_online_max_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_max_num (_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_online_max_num(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_online_max_num(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_online_max_num) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_max_num (_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_online_max_num(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_online_max_num(NULL, 2);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_online_max_num(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_temp) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_temp(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_temp(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_temp(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_tmu_policy) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_policy(_, _,_))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_tmu_policy(&res, buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_tmu_policy(&res, NULL);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_get_tmu_policy(NULL, buf);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_cooling_device_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_cooling_device_state(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_cooling_device_state(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_cooling_device_state(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_cooling_device_state) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_set_cooling_device_state(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_cooling_device_state(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_cooling_device_state(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_cooling_device_state(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_battery_charging_status) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_status(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_battery_charging_status(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_battery_charging_status(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_battery_charging_status) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_status(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_battery_charging_status(&res, 0);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_status(&res, 1);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_status(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_status(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_battery_charging_current) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_current(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_battery_charging_current(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_battery_charging_current(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_battery_charging_current) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_current(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_battery_charging_current(&res, CHARGING_CURRNT_1A);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_battery_charging_current(&res, 0);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_current(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_battery_charging_current(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_get_fault_around_bytes) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_get_fault_around_bytes(_, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_get_fault_around_bytes(&res);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_get_fault_around_bytes(NULL);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_fault_around_bytes) {
+       struct pass_resource res;
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_set_fault_around_bytes(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_fault_around_bytes(&res, FREQ_100MZ);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_fault_around_bytes(&res, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_fault_around_bytes(NULL, DEFAULT_MINUS_INT);
+       EXPECT_NE(ret, 0);
+}
+
+TEST_F(PassHalTest, pass_hal_set_pmqos_data) {
+       struct pass_resource res;
+       char buf[BUFF_MAX];
+       int ret;
+
+       EXPECT_CALL(*gHalApiPowerMock, hal_power_misc_set_pmqos_data(_, _, _))
+               .WillRepeatedly(Return(0));
+
+       ret = pass_hal_set_pmqos_data(&res, (void *)buf);
+       EXPECT_EQ(ret, 0);
+       ret = pass_hal_set_pmqos_data(NULL, (void *)buf);
+       EXPECT_NE(ret, 0);
+       ret = pass_hal_set_pmqos_data(NULL, NULL);
+       EXPECT_NE(ret, 0);
+}
+
+/* Unittest of pass-parser module */
+class PassParserTest : public testing::Test {
+public:
+       virtual void SetUp() {}
+       virtual void TearDown() {}
+};
+
+TEST(PassParserTest, pass_parser_get_resource_config_valid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/valid/pass.json";
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       ASSERT_EQ(ret, 0);
+
+       pass_parser_put_resource_config(&pass);
+}
+
+TEST(PassParserTest, pass_parser_get_resource_config_invalid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/invalid/pass.json";
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       EXPECT_NE(ret, 0);
+}
+
+TEST(PassParserTest, pass_parser_get_each_resource_config_valid) {
+       struct pass pass;
+       const char path_json[] = "./scripts/valid/pass.json";
+       int i;
+
+       int ret = pass_parser_get_resource_config(&pass, path_json);
+       ASSERT_EQ(ret, 0);
+
+       for (i = 0; i < (int)pass.num_resources; i++) {
+               struct pass_resource *res = &pass.res[i];
+               ret = pass_parser_get_each_resource_config(res,
+                                       res->config_data.path_conf_file);
+               EXPECT_EQ(ret, 0);
+               if (ret < 0)
+                       break;
+       }
+
+       for (i--; i >= 0; i--)
+               pass_parser_put_each_resource_config(&pass.res[i]);
+       pass_parser_put_resource_config(&pass);
+}
+
+class ResourceConfigInvalid {
+public:
+       const char *path_json;
+
+       ResourceConfigInvalid(
+               const char *path_json_) :
+                       path_json(path_json_) {}
+};
+
+class PassParserInvalidTest : public ::testing::TestWithParam<ResourceConfigInvalid> {};
+
+INSTANTIATE_TEST_CASE_P (PassParserTest, PassParserInvalidTest,
+       ::testing::Values (
+       ResourceConfigInvalid ("./scripts/invalid-level/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-pmqos/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-thermal/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-thermal/pass1.json"),
+       ResourceConfigInvalid ("./scripts/invalid-header/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-battery/pass.json"),
+       ResourceConfigInvalid ("./scripts/invalid-memory/pass.json")
+));
+
+TEST_P(PassParserInvalidTest, pass_parser_get_each_resource_config_invalid) {
+       auto param = GetParam();
+       struct pass pass;
+       unsigned int i;
+
+       int ret = pass_parser_get_resource_config(&pass, param.path_json);
+       EXPECT_EQ(ret, 0);
+
+       for (i = 0; i < pass.num_resources; i++) {
+               struct pass_resource *res = &pass.res[i];
+               ret = pass_parser_get_each_resource_config(res,
+                                       res->config_data.path_conf_file);
+               EXPECT_NE(ret, 0);
+       }
+
+       for (i = 0; i < pass.num_resources; i++)
+               pass_parser_put_each_resource_config(&pass.res[i]);
+       pass_parser_put_resource_config(&pass);
+}
+
+int main(int argc, char *argv[])
+{
+       try {
+               testing::InitGoogleTest(&argc, argv);
+               return RUN_ALL_TESTS();
+       } catch (...) {
+               return EXIT_FAILURE;
+       }
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass-battery.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass-battery.json
new file mode 100644 (file)
index 0000000..01b822a
--- /dev/null
@@ -0,0 +1,51 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       //"battery,charging_status"     : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
+                       //"battery_charging_currnt_uA"  : 2048000
+               }, {
+                       "level"                         : 1,
+                       //"battery,charging_status"     : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
+                       //"battery,charging_currnt_uA"  : 1024000
+               }, {
+                       //"level"                               : 2,
+                       //"battery,charging_status"     : 3,    // POWER_SUPPLY_STATUS_NOT_CHARGING
+                       //"battery,charging_currnt_uA"  : 1024000
+               }
+       ],
+
+       "pmqos_support"                 : false,
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 45, "threshold": 42},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 45, "end": 50, "threshold": 47},
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 1
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 50, "end": 55, "threshold": 52},
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 55, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-battery/pass.json
new file mode 100644 (file)
index 0000000..4857561
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "battery",
+                       "device_name"           : "battery",
+                       "device_config_path"    : "./scripts/invalid-battery/pass-battery.json",
+                       "thermal_device_name"   : "thermal_zone5",
+                       "cooling_device_name"   : null
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass-bus0.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass-bus0.json
new file mode 100644 (file)
index 0000000..bcc94fd
--- /dev/null
@@ -0,0 +1,46 @@
+{
+       "support"                       : true,
+       //"init_level"                  : 0,
+       //"level_list"                  :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 413000000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 138000000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 275000000
+               }, {
+                       "level"                         : 3,
+                       "dvfs,minimum_frequency_khz"    : 413000000,
+                       "dvfs,maximum_frequency_khz"    : 413000000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 3
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "Doze",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 3
+               }
+       ],
+
+       "thermal_support"               : false,
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-header/pass.json
new file mode 100644 (file)
index 0000000..1591e61
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "bus",
+                       "device_name"           : "devfreq0",
+                       "device_config_path"    : "./scripts/invalid-bus/pass-bus0.json",
+                       "thermal_device_name"   : null
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass-cpu0.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass-cpu0.json
new file mode 100644 (file)
index 0000000..ae42205
--- /dev/null
@@ -0,0 +1,64 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       //"level"                               : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-level/pass.json
new file mode 100644 (file)
index 0000000..e26f60d
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu0",
+                       "device_config_path"    : "./scripts/invalid-level/pass-cpu0.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass-memory.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass-memory.json
new file mode 100644 (file)
index 0000000..1038fad
--- /dev/null
@@ -0,0 +1,33 @@
+{
+       "support"               : true,
+       "init_level"            : 0,
+       "level_list"            :
+       [
+               {
+                       "level"                         : 0,
+                       "memory,fault_around_bytes"     : 4096
+               }, {
+                       //"level"                               : 1,
+                       //"memory,fault_around_bytes"   : 65536
+               }
+       ],
+
+       "pmqos_support"         : true,
+       "pmqos_scenario_list"   :
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 0
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 0
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"       : false,
+
+       "cpuhp_support"         : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-memory/pass.json
new file mode 100644 (file)
index 0000000..df8ed06
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "memory",
+                       "device_name"           : "memory",
+                       "device_config_path"    : "./scripts/invalid-memory/pass-memory.json"
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass-cpu0.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass-cpu0.json
new file mode 100644 (file)
index 0000000..13fe285
--- /dev/null
@@ -0,0 +1,64 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       //"name"                : "UltraPowerSaving",
+                       //"target_level"        : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-pmqos/pass.json
new file mode 100644 (file)
index 0000000..e35f722
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu0",
+                       "device_config_path"    : "./scripts/invalid-pmqos/pass-cpu0.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu.json
new file mode 100644 (file)
index 0000000..51d546b
--- /dev/null
@@ -0,0 +1,64 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       //"name"                        : "Warning",
+                       //"temperature"         : { "start": 75, "end": 80, "threshold": 77 },
+                       //"timer_interval_ms"   : 3000,
+                       //"target_level"                : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu1.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass-cpu1.json
new file mode 100644 (file)
index 0000000..1e5521f
--- /dev/null
@@ -0,0 +1,67 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           :
+                               {
+                                       //"start": 80, "end": 85, "threshold": 82
+                               },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass.json
new file mode 100644 (file)
index 0000000..044b17b
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu0",
+                       "device_config_path"    : "./scripts/invalid-thermal/pass-cpu.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass1.json b/tests/unittest/pass-hal-and-parser/scripts/invalid-thermal/pass1.json
new file mode 100644 (file)
index 0000000..212862f
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu0",
+                       "device_config_path"    : "./scripts/invalid-thermal/pass-cpu1.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/invalid/pass.json b/tests/unittest/pass-hal-and-parser/scripts/invalid/pass.json
new file mode 100644 (file)
index 0000000..84df24a
--- /dev/null
@@ -0,0 +1,45 @@
+{
+       "device_list"   :
+       [
+               {
+                       //"device_type"         : "cpu",
+                       //"device_name"         : "cpu0",
+                       //"device_config_path"  : "./scripts/valid/pass-cpu0.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }, {
+                       //"device_type"         : "cpu",
+                       "device_name"           : "cpu4",
+                       "device_config_path"    : "./scripts/valid/pass-cpu4.json",
+                       "thermal_device_name"   : "thermal_zone1",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 4
+               }, {
+                       "device_type"           : "bus",
+                       "device_name"           : "devfreq0",
+                       //"device_config_path"  : "./scripts/valid/pass-bus.json",
+                       "thermal_device_name"   : null
+               }, {
+                       "device_type"           : "bus",
+                       //"device_name"         : "devfreq5",
+                       "device_config_path"    : "./scripts/valid/pass-bus1.json",
+                       "thermal_device_name"   : null
+               }, {
+                       "device_type"           : "gpu",
+                       "device_name"           : "devfreq10",
+                       //"device_config_path"  : "./scripts/vaild/pass-gpu.json",
+                       "thermal_device_name"   : "thermal_zone3"
+               }, {
+                       "device_type"           : "memory",
+                       "device_name"           : "memory",
+                       //"device_config_path"  : "./scripts/valid/pass-memory.json"
+               }, {
+                       "device_type"           : "battery",
+                       //"device_name"           : "battery",
+                       "device_config_path"    : "./scripts/valid/pass-battery.json",
+                       "thermal_device_name"   : "thermal_zone5",
+                       "cooling_device_name"   : null
+               }
+       ]
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-battery.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-battery.json
new file mode 100644 (file)
index 0000000..b698d6c
--- /dev/null
@@ -0,0 +1,51 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "battery,charging_status"       : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
+                       "battery_charging_currnt_uA"    : 2048000
+               }, {
+                       "level"                         : 1,
+                       "battery,charging_status"       : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
+                       "battery,charging_currnt_uA"    : 1024000
+               }, {
+                       "level"                         : 2,
+                       "battery,charging_status"       : 3,    // POWER_SUPPLY_STATUS_NOT_CHARGING
+                       "battery,charging_currnt_uA"    : 1024000
+               }
+       ],
+
+       "pmqos_support"                 :false,
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 45, "threshold": 42},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 45, "end": 50, "threshold": 47},
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 1
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 50, "end": 55, "threshold": 52},
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 55, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus0.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus0.json
new file mode 100644 (file)
index 0000000..1c13eff
--- /dev/null
@@ -0,0 +1,46 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 413000000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 138000000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 138000000,
+                       "dvfs,maximum_frequency_khz"    : 275000000
+               }, {
+                       "level"                         : 3,
+                       "dvfs,minimum_frequency_khz"    : 413000000,
+                       "dvfs,maximum_frequency_khz"    : 413000000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 3
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "Doze",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 3
+               }
+       ],
+
+       "thermal_support"               : false,
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus1.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-bus1.json
new file mode 100644 (file)
index 0000000..8be2420
--- /dev/null
@@ -0,0 +1,50 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 200000000,
+                       "dvfs,maximum_frequency_khz"    : 600000000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 200000000,
+                       "dvfs,maximum_frequency_khz"    : 200000000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 200000000,
+                       "dvfs,maximum_frequency_khz"    : 400000000
+               }, {
+                       "level"                         : 3,
+                       "dvfs,minimum_frequency_khz"    : 400000000,
+                       "dvfs,maximum_frequency_khz"    : 400000000
+               }, {
+                       "level"                         : 4,
+                       "dvfs,minimum_frequency_khz"    : 600000000,
+                       "dvfs,maximum_frequency_khz"    : 600000000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 3
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "Doze",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 4
+               }
+       ],
+
+       "thermal_support"               : false,
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu0.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu0.json
new file mode 100644 (file)
index 0000000..c921eb0
--- /dev/null
@@ -0,0 +1,64 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu4.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-cpu4.json
new file mode 100644 (file)
index 0000000..c921eb0
--- /dev/null
@@ -0,0 +1,64 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 1500000,
+                       "dvfs,maximum_frequency_khz"    : 1500000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000,
+                       "dvfs,maximum_frequency_khz"    : 600000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 85, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 2
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-gpu.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-gpu.json
new file mode 100644 (file)
index 0000000..044d8cc
--- /dev/null
@@ -0,0 +1,79 @@
+{
+       "support"                       : true,
+       "init_level"                    : 0,
+       "level_list"                    :
+       [
+               {
+                       "level"                         : 0,
+                       "dvfs,minimum_frequency_khz"    : 100000000,
+                       "dvfs,maximum_frequency_khz"    : 800000000
+               }, {
+                       "level"                         : 1,
+                       "dvfs,minimum_frequency_khz"    : 100000000,
+                       "dvfs,maximum_frequency_khz"    : 200000000
+               }, {
+                       "level"                         : 2,
+                       "dvfs,minimum_frequency_khz"    : 600000000,
+                       "dvfs,maximum_frequency_khz"    : 80000000
+               }, {
+                       "level"                         : 3,
+                       "dvfs,minimum_frequency_khz"    : 100000000,
+                       "dvfs,maximum_frequency_khz"    : 400000000
+               }, {
+                       "level"                         : 4,
+                       "dvfs,minimum_frequency_khz"    : 100000000,
+                       "dvfs,maximum_frequency_khz"    : 600000000
+               }, {
+                       "level"                         : 5,
+                       "dvfs,minimum_frequency_khz"    : 800000000,
+                       "dvfs,maximum_frequency_khz"    : 800000000
+               }
+       ],
+
+       "pmqos_support"                 : true,
+       "pmqos_scenario_list":
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 2
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 1
+               }, {
+                       "name"          : "Doze",
+                       "target_level"  : 3
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 2
+               }
+       ],
+
+       "thermal_support"               : true,
+       "thermal_timer_interval_ms"     : 5000,
+       "thermal_scenario_list":
+       [
+               {
+                       "name"                  : "Release",
+                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
+                       "timer_interval_ms"     : 5000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "Warning",
+                       "temperature"           : { "start": 75, "end": 85, "threshold": 77 },
+                       "timer_interval_ms"     : 3000,
+                       "target_level"          : 0
+               }, {
+                       "name"                  : "LimitAction",
+                       "temperature"           : { "start": 85, "end": 95, "threshold": 87 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 4
+               }, {
+                       "name"                  : "Shutdown",
+                       "temperature"           : { "start": 95, "end": 100 },
+                       "timer_interval_ms"     : 1000,
+                       "target_level"          : 3
+               }
+       ],
+
+       "cpuhp_support"                 : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass-memory.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass-memory.json
new file mode 100644 (file)
index 0000000..4099313
--- /dev/null
@@ -0,0 +1,33 @@
+{
+       "support"               : true,
+       "init_level"            : 0,
+       "level_list"            :
+       [
+               {
+                       "level"                         : 0,
+                       "memory,fault_around_bytes"     : 4096
+               }, {
+                       "level"                         : 1,
+                       "memory,fault_around_bytes"     : 65536
+               }
+       ],
+
+       "pmqos_support"         : true,
+       "pmqos_scenario_list"   :
+       [
+               {
+                       "name"          : "AppLaunch",
+                       "target_level"  : 0
+               }, {
+                       "name"          : "UltraPowerSaving",
+                       "target_level"  : 0
+               }, {
+                       "name"          : "Performance",
+                       "target_level"  : 1
+               }
+       ],
+
+       "thermal_support"       : false,
+
+       "cpuhp_support"         : false
+}
diff --git a/tests/unittest/pass-hal-and-parser/scripts/valid/pass.json b/tests/unittest/pass-hal-and-parser/scripts/valid/pass.json
new file mode 100644 (file)
index 0000000..d3eea11
--- /dev/null
@@ -0,0 +1,45 @@
+{
+       "device_list"   :
+       [
+               {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu0",
+                       "device_config_path"    : "./scripts/valid/pass-cpu0.json",
+                       "thermal_device_name"   : "thermal_zone0",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 0
+               }, {
+                       "device_type"           : "cpu",
+                       "device_name"           : "cpu4",
+                       "device_config_path"    : "./scripts/valid/pass-cpu4.json",
+                       "thermal_device_name"   : "thermal_zone1",
+                       "cpu,number_of_cpus"    : 4,
+                       "cpu,first_cpu"         : 4
+               }, {
+                       "device_type"           : "bus",
+                       "device_name"           : "devfreq0",
+                       "device_config_path"    : "./scripts/valid/pass-bus0.json",
+                       "thermal_device_name"   : null
+               }, {
+                       "device_type"           : "bus",
+                       "device_name"           : "devfreq5",
+                       "device_config_path"    : "./scripts/valid/pass-bus1.json",
+                       "thermal_device_name"   : null
+               }, {
+                       "device_type"           : "gpu",
+                       "device_name"           : "devfreq10",
+                       "device_config_path"    : "./scripts/valid/pass-gpu.json",
+                       "thermal_device_name"   : "thermal_zone3"
+               }, {
+                       "device_type"           : "memory",
+                       "device_name"           : "memory",
+                       "device_config_path"    : "./scripts/valid/pass-memory.json"
+               }, {
+                       "device_type"           : "battery",
+                       "device_name"           : "battery",
+                       "device_config_path"    : "./scripts/valid/pass-battery.json",
+                       "thermal_device_name"   : "thermal_zone5",
+                       "cooling_device_name"   : null
+               }
+       ]
+}
diff --git a/tests/unittest/pass-unittests.cc b/tests/unittest/pass-unittests.cc
deleted file mode 100644 (file)
index cda27aa..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * Copyright (C) 2022 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 <unistd.h>
-
-#include <gio/gio.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-extern "C" {
-#include <util/common.h>
-
-#include "pass.h"
-#include "pass-hal.h"
-#include "pass-parser.h"
-}
-
-#include "hal-api-power-mock.hpp"
-
-#define                FREQ_100MZ              100000
-#define                CHARGING_CURRNT_1A      1000000
-#define                DEFAULT_MINUS_INT       -1
-#define                DEFAULT_UP_THRESHOLD    90
-
-using namespace std;
-using ::testing::Return;
-using ::testing::_;
-
-class PassHalTest : public testing::Test {
-public:
-       void SetUp() override {
-               gHalApiPowerMock = new HalApiPowerMock();
-       }
-
-       void TearDown() override {
-               if (!gHalApiPowerMock)
-                       return;
-
-               delete gHalApiPowerMock;
-               gHalApiPowerMock = NULL;
-       }
-};
-
-TEST_F(PassHalTest, pass_hal_get_resource) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock,
-               hal_power_get_backend(_)).WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_resource(&res);
-       EXPECT_EQ(ret, 0);
-
-       ret = pass_hal_get_resource(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_put_resource) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock,
-               hal_power_put_backend()).WillRepeatedly(Return(0));
-
-       ret = pass_hal_put_resource(&res);
-       EXPECT_EQ(ret, 0);
-
-       ret = pass_hal_put_resource(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_curr_governor) {
-       struct pass_resource res;
-       char buf[BUFF_MAX];
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_governor(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_curr_governor(&res, buf);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_curr_governor(&res, NULL);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_get_curr_governor(NULL, buf);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_curr_governor) {
-       struct pass_resource res;
-       char buf[BUFF_MAX];
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_curr_governor(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_curr_governor(&res, buf);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_curr_governor(&res, NULL);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_curr_governor(NULL, buf);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_curr_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_curr_freq(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_curr_freq(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_curr_freq(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_min_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_min_freq(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_min_freq(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_min_freq(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_min_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_min_freq(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_min_freq(&res, FREQ_100MZ);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_min_freq(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_min_freq(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_max_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_max_freq(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_max_freq(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_max_freq(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_max_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_max_freq(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_max_freq(&res, FREQ_100MZ);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_max_freq(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_max_freq(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_available_min_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_min_freq(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_available_min_freq(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_available_min_freq(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_available_max_freq) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_available_max_freq(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_available_max_freq(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_available_max_freq(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_up_threshold) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_get_up_threshold(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_up_threshold(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_up_threshold(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_up_threshold) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_dvfs_set_up_threshold(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_up_threshold(&res, DEFAULT_UP_THRESHOLD);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_up_threshold(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_up_threshold(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_online_state) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_state(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_online_state(&res, 0);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_online_state(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_get_online_state(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_online_state) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_state(_, _, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_online_state(&res, 0, 1);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_online_state(&res, 0, 0);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_online_state(&res, 0, 10);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_online_state(&res, DEFAULT_MINUS_INT, 1);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_online_state(&res, 0, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_online_state(NULL, DEFAULT_MINUS_INT, 1);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_online_min_num) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_min_num (_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_online_min_num(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_online_min_num(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_online_min_num) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_min_num (_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_online_min_num(&res, 1);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_online_min_num(NULL, 2);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_online_min_num(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_online_max_num) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_get_online_max_num (_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_online_max_num(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_online_max_num(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_online_max_num) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_hotplug_set_online_max_num (_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_online_max_num(&res, 1);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_online_max_num(NULL, 2);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_online_max_num(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_temp) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_temp(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_temp(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_temp(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_tmu_policy) {
-       struct pass_resource res;
-       char buf[BUFF_MAX];
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_policy(_, _,_))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_tmu_policy(&res, buf);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_tmu_policy(&res, NULL);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_get_tmu_policy(NULL, buf);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_cooling_device_state) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_get_cooling_device_state(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_cooling_device_state(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_cooling_device_state(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_cooling_device_state) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_thermal_set_cooling_device_state(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_cooling_device_state(&res, 1);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_cooling_device_state(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_cooling_device_state(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_battery_charging_status) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_status(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_battery_charging_status(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_battery_charging_status(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_battery_charging_status) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_status(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_battery_charging_status(&res, 0);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_battery_charging_status(&res, 1);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_battery_charging_status(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_battery_charging_status(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_battery_charging_current) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_get_charging_current(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_battery_charging_current(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_battery_charging_current(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_battery_charging_current) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_battery_set_charging_current(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_battery_charging_current(&res, CHARGING_CURRNT_1A);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_battery_charging_current(&res, 0);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_battery_charging_current(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_battery_charging_current(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_get_fault_around_bytes) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_get_fault_around_bytes(_, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_get_fault_around_bytes(&res);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_get_fault_around_bytes(NULL);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_fault_around_bytes) {
-       struct pass_resource res;
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_memory_set_fault_around_bytes(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_fault_around_bytes(&res, FREQ_100MZ);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_fault_around_bytes(&res, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_fault_around_bytes(NULL, DEFAULT_MINUS_INT);
-       EXPECT_NE(ret, 0);
-}
-
-TEST_F(PassHalTest, pass_hal_set_pmqos_data) {
-       struct pass_resource res;
-       char buf[BUFF_MAX];
-       int ret;
-
-       EXPECT_CALL(*gHalApiPowerMock, hal_power_misc_set_pmqos_data(_, _, _))
-               .WillRepeatedly(Return(0));
-
-       ret = pass_hal_set_pmqos_data(&res, (void *)buf);
-       EXPECT_EQ(ret, 0);
-       ret = pass_hal_set_pmqos_data(NULL, (void *)buf);
-       EXPECT_NE(ret, 0);
-       ret = pass_hal_set_pmqos_data(NULL, NULL);
-       EXPECT_NE(ret, 0);
-}
-
-/* Unittest of pass-parser module */
-class PassParserTest : public testing::Test {
-public:
-       virtual void SetUp() {}
-       virtual void TearDown() {}
-};
-
-TEST(PassParserTest, pass_parser_get_resource_config_valid) {
-       struct pass pass;
-       const char path_json[] = "./scripts/valid/pass.json";
-
-       int ret = pass_parser_get_resource_config(&pass, path_json);
-       ASSERT_EQ(ret, 0);
-
-       pass_parser_put_resource_config(&pass);
-}
-
-TEST(PassParserTest, pass_parser_get_resource_config_invalid) {
-       struct pass pass;
-       const char path_json[] = "./scripts/invalid/pass.json";
-
-       int ret = pass_parser_get_resource_config(&pass, path_json);
-       EXPECT_NE(ret, 0);
-}
-
-TEST(PassParserTest, pass_parser_get_each_resource_config_valid) {
-       struct pass pass;
-       const char path_json[] = "./scripts/valid/pass.json";
-       int i;
-
-       int ret = pass_parser_get_resource_config(&pass, path_json);
-       ASSERT_EQ(ret, 0);
-
-       for (i = 0; i < (int)pass.num_resources; i++) {
-               struct pass_resource *res = &pass.res[i];
-               ret = pass_parser_get_each_resource_config(res,
-                                       res->config_data.path_conf_file);
-               EXPECT_EQ(ret, 0);
-               if (ret < 0)
-                       break;
-       }
-
-       for (i--; i >= 0; i--)
-               pass_parser_put_each_resource_config(&pass.res[i]);
-       pass_parser_put_resource_config(&pass);
-}
-
-class ResourceConfigInvalid {
-public:
-       const char *path_json;
-
-       ResourceConfigInvalid(
-               const char *path_json_) :
-                       path_json(path_json_) {}
-};
-
-class PassParserInvalidTest : public ::testing::TestWithParam<ResourceConfigInvalid> {};
-
-INSTANTIATE_TEST_CASE_P (PassParserTest, PassParserInvalidTest,
-       ::testing::Values (
-       ResourceConfigInvalid ("./scripts/invalid-level/pass.json"),
-       ResourceConfigInvalid ("./scripts/invalid-pmqos/pass.json"),
-       ResourceConfigInvalid ("./scripts/invalid-thermal/pass.json"),
-       ResourceConfigInvalid ("./scripts/invalid-thermal/pass1.json"),
-       ResourceConfigInvalid ("./scripts/invalid-header/pass.json"),
-       ResourceConfigInvalid ("./scripts/invalid-battery/pass.json"),
-       ResourceConfigInvalid ("./scripts/invalid-memory/pass.json")
-));
-
-TEST_P(PassParserInvalidTest, pass_parser_get_each_resource_config_invalid) {
-       auto param = GetParam();
-       struct pass pass;
-       unsigned int i;
-
-       int ret = pass_parser_get_resource_config(&pass, param.path_json);
-       EXPECT_EQ(ret, 0);
-
-       for (i = 0; i < pass.num_resources; i++) {
-               struct pass_resource *res = &pass.res[i];
-               ret = pass_parser_get_each_resource_config(res,
-                                       res->config_data.path_conf_file);
-               EXPECT_NE(ret, 0);
-       }
-
-       for (i = 0; i < pass.num_resources; i++)
-               pass_parser_put_each_resource_config(&pass.res[i]);
-       pass_parser_put_resource_config(&pass);
-}
-
-int main(int argc, char *argv[])
-{
-       try {
-               testing::InitGoogleTest(&argc, argv);
-               return RUN_ALL_TESTS();
-       } catch (...) {
-               return EXIT_FAILURE;
-       }
-}
diff --git a/tests/unittest/scripts/invalid-battery/pass-battery.json b/tests/unittest/scripts/invalid-battery/pass-battery.json
deleted file mode 100644 (file)
index 01b822a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       //"battery,charging_status"     : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
-                       //"battery_charging_currnt_uA"  : 2048000
-               }, {
-                       "level"                         : 1,
-                       //"battery,charging_status"     : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
-                       //"battery,charging_currnt_uA"  : 1024000
-               }, {
-                       //"level"                               : 2,
-                       //"battery,charging_status"     : 3,    // POWER_SUPPLY_STATUS_NOT_CHARGING
-                       //"battery,charging_currnt_uA"  : 1024000
-               }
-       ],
-
-       "pmqos_support"                 : false,
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 45, "threshold": 42},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 45, "end": 50, "threshold": 47},
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 1
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 50, "end": 55, "threshold": 52},
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 55, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-battery/pass.json b/tests/unittest/scripts/invalid-battery/pass.json
deleted file mode 100644 (file)
index 4857561..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "battery",
-                       "device_name"           : "battery",
-                       "device_config_path"    : "./scripts/invalid-battery/pass-battery.json",
-                       "thermal_device_name"   : "thermal_zone5",
-                       "cooling_device_name"   : null
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-header/pass-bus0.json b/tests/unittest/scripts/invalid-header/pass-bus0.json
deleted file mode 100644 (file)
index bcc94fd..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-       "support"                       : true,
-       //"init_level"                  : 0,
-       //"level_list"                  :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 413000000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 138000000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 275000000
-               }, {
-                       "level"                         : 3,
-                       "dvfs,minimum_frequency_khz"    : 413000000,
-                       "dvfs,maximum_frequency_khz"    : 413000000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 3
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "Doze",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 3
-               }
-       ],
-
-       "thermal_support"               : false,
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-header/pass.json b/tests/unittest/scripts/invalid-header/pass.json
deleted file mode 100644 (file)
index 1591e61..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "bus",
-                       "device_name"           : "devfreq0",
-                       "device_config_path"    : "./scripts/invalid-bus/pass-bus0.json",
-                       "thermal_device_name"   : null
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-level/pass-cpu0.json b/tests/unittest/scripts/invalid-level/pass-cpu0.json
deleted file mode 100644 (file)
index ae42205..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       //"level"                               : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-level/pass.json b/tests/unittest/scripts/invalid-level/pass.json
deleted file mode 100644 (file)
index e26f60d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu0",
-                       "device_config_path"    : "./scripts/invalid-level/pass-cpu0.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-memory/pass-memory.json b/tests/unittest/scripts/invalid-memory/pass-memory.json
deleted file mode 100644 (file)
index 1038fad..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-       "support"               : true,
-       "init_level"            : 0,
-       "level_list"            :
-       [
-               {
-                       "level"                         : 0,
-                       "memory,fault_around_bytes"     : 4096
-               }, {
-                       //"level"                               : 1,
-                       //"memory,fault_around_bytes"   : 65536
-               }
-       ],
-
-       "pmqos_support"         : true,
-       "pmqos_scenario_list"   :
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 0
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 0
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"       : false,
-
-       "cpuhp_support"         : false
-}
diff --git a/tests/unittest/scripts/invalid-memory/pass.json b/tests/unittest/scripts/invalid-memory/pass.json
deleted file mode 100644 (file)
index df8ed06..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "memory",
-                       "device_name"           : "memory",
-                       "device_config_path"    : "./scripts/invalid-memory/pass-memory.json"
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-pmqos/pass-cpu0.json b/tests/unittest/scripts/invalid-pmqos/pass-cpu0.json
deleted file mode 100644 (file)
index 13fe285..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       //"name"                : "UltraPowerSaving",
-                       //"target_level"        : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-pmqos/pass.json b/tests/unittest/scripts/invalid-pmqos/pass.json
deleted file mode 100644 (file)
index e35f722..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu0",
-                       "device_config_path"    : "./scripts/invalid-pmqos/pass-cpu0.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-thermal/pass-cpu.json b/tests/unittest/scripts/invalid-thermal/pass-cpu.json
deleted file mode 100644 (file)
index 51d546b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       //"name"                        : "Warning",
-                       //"temperature"         : { "start": 75, "end": 80, "threshold": 77 },
-                       //"timer_interval_ms"   : 3000,
-                       //"target_level"                : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-thermal/pass-cpu1.json b/tests/unittest/scripts/invalid-thermal/pass-cpu1.json
deleted file mode 100644 (file)
index 1e5521f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           :
-                               {
-                                       //"start": 80, "end": 85, "threshold": 82
-                               },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/invalid-thermal/pass.json b/tests/unittest/scripts/invalid-thermal/pass.json
deleted file mode 100644 (file)
index 044b17b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu0",
-                       "device_config_path"    : "./scripts/invalid-thermal/pass-cpu.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid-thermal/pass1.json b/tests/unittest/scripts/invalid-thermal/pass1.json
deleted file mode 100644 (file)
index 212862f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu0",
-                       "device_config_path"    : "./scripts/invalid-thermal/pass-cpu1.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/invalid/pass.json b/tests/unittest/scripts/invalid/pass.json
deleted file mode 100644 (file)
index 84df24a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       //"device_type"         : "cpu",
-                       //"device_name"         : "cpu0",
-                       //"device_config_path"  : "./scripts/valid/pass-cpu0.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }, {
-                       //"device_type"         : "cpu",
-                       "device_name"           : "cpu4",
-                       "device_config_path"    : "./scripts/valid/pass-cpu4.json",
-                       "thermal_device_name"   : "thermal_zone1",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 4
-               }, {
-                       "device_type"           : "bus",
-                       "device_name"           : "devfreq0",
-                       //"device_config_path"  : "./scripts/valid/pass-bus.json",
-                       "thermal_device_name"   : null
-               }, {
-                       "device_type"           : "bus",
-                       //"device_name"         : "devfreq5",
-                       "device_config_path"    : "./scripts/valid/pass-bus1.json",
-                       "thermal_device_name"   : null
-               }, {
-                       "device_type"           : "gpu",
-                       "device_name"           : "devfreq10",
-                       //"device_config_path"  : "./scripts/vaild/pass-gpu.json",
-                       "thermal_device_name"   : "thermal_zone3"
-               }, {
-                       "device_type"           : "memory",
-                       "device_name"           : "memory",
-                       //"device_config_path"  : "./scripts/valid/pass-memory.json"
-               }, {
-                       "device_type"           : "battery",
-                       //"device_name"           : "battery",
-                       "device_config_path"    : "./scripts/valid/pass-battery.json",
-                       "thermal_device_name"   : "thermal_zone5",
-                       "cooling_device_name"   : null
-               }
-       ]
-}
diff --git a/tests/unittest/scripts/valid/pass-battery.json b/tests/unittest/scripts/valid/pass-battery.json
deleted file mode 100644 (file)
index b698d6c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "battery,charging_status"       : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
-                       "battery_charging_currnt_uA"    : 2048000
-               }, {
-                       "level"                         : 1,
-                       "battery,charging_status"       : 0,    // POWER_SUPPLY_STATUS_UNKNOWN
-                       "battery,charging_currnt_uA"    : 1024000
-               }, {
-                       "level"                         : 2,
-                       "battery,charging_status"       : 3,    // POWER_SUPPLY_STATUS_NOT_CHARGING
-                       "battery,charging_currnt_uA"    : 1024000
-               }
-       ],
-
-       "pmqos_support"                 :false,
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 45, "threshold": 42},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 45, "end": 50, "threshold": 47},
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 1
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 50, "end": 55, "threshold": 52},
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 55, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-bus0.json b/tests/unittest/scripts/valid/pass-bus0.json
deleted file mode 100644 (file)
index 1c13eff..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 413000000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 138000000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 138000000,
-                       "dvfs,maximum_frequency_khz"    : 275000000
-               }, {
-                       "level"                         : 3,
-                       "dvfs,minimum_frequency_khz"    : 413000000,
-                       "dvfs,maximum_frequency_khz"    : 413000000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 3
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "Doze",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 3
-               }
-       ],
-
-       "thermal_support"               : false,
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-bus1.json b/tests/unittest/scripts/valid/pass-bus1.json
deleted file mode 100644 (file)
index 8be2420..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 200000000,
-                       "dvfs,maximum_frequency_khz"    : 600000000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 200000000,
-                       "dvfs,maximum_frequency_khz"    : 200000000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 200000000,
-                       "dvfs,maximum_frequency_khz"    : 400000000
-               }, {
-                       "level"                         : 3,
-                       "dvfs,minimum_frequency_khz"    : 400000000,
-                       "dvfs,maximum_frequency_khz"    : 400000000
-               }, {
-                       "level"                         : 4,
-                       "dvfs,minimum_frequency_khz"    : 600000000,
-                       "dvfs,maximum_frequency_khz"    : 600000000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 3
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "Doze",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 4
-               }
-       ],
-
-       "thermal_support"               : false,
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-cpu0.json b/tests/unittest/scripts/valid/pass-cpu0.json
deleted file mode 100644 (file)
index c921eb0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-cpu4.json b/tests/unittest/scripts/valid/pass-cpu4.json
deleted file mode 100644 (file)
index c921eb0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 1500000,
-                       "dvfs,maximum_frequency_khz"    : 1500000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000,
-                       "dvfs,maximum_frequency_khz"    : 600000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 80, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 80, "end": 85, "threshold": 82 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 85, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 2
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-gpu.json b/tests/unittest/scripts/valid/pass-gpu.json
deleted file mode 100644 (file)
index 044d8cc..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-       "support"                       : true,
-       "init_level"                    : 0,
-       "level_list"                    :
-       [
-               {
-                       "level"                         : 0,
-                       "dvfs,minimum_frequency_khz"    : 100000000,
-                       "dvfs,maximum_frequency_khz"    : 800000000
-               }, {
-                       "level"                         : 1,
-                       "dvfs,minimum_frequency_khz"    : 100000000,
-                       "dvfs,maximum_frequency_khz"    : 200000000
-               }, {
-                       "level"                         : 2,
-                       "dvfs,minimum_frequency_khz"    : 600000000,
-                       "dvfs,maximum_frequency_khz"    : 80000000
-               }, {
-                       "level"                         : 3,
-                       "dvfs,minimum_frequency_khz"    : 100000000,
-                       "dvfs,maximum_frequency_khz"    : 400000000
-               }, {
-                       "level"                         : 4,
-                       "dvfs,minimum_frequency_khz"    : 100000000,
-                       "dvfs,maximum_frequency_khz"    : 600000000
-               }, {
-                       "level"                         : 5,
-                       "dvfs,minimum_frequency_khz"    : 800000000,
-                       "dvfs,maximum_frequency_khz"    : 800000000
-               }
-       ],
-
-       "pmqos_support"                 : true,
-       "pmqos_scenario_list":
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 2
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 1
-               }, {
-                       "name"          : "Doze",
-                       "target_level"  : 3
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 2
-               }
-       ],
-
-       "thermal_support"               : true,
-       "thermal_timer_interval_ms"     : 5000,
-       "thermal_scenario_list":
-       [
-               {
-                       "name"                  : "Release",
-                       "temperature"           : { "start": 0, "end": 75, "threshold": 72},
-                       "timer_interval_ms"     : 5000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "Warning",
-                       "temperature"           : { "start": 75, "end": 85, "threshold": 77 },
-                       "timer_interval_ms"     : 3000,
-                       "target_level"          : 0
-               }, {
-                       "name"                  : "LimitAction",
-                       "temperature"           : { "start": 85, "end": 95, "threshold": 87 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 4
-               }, {
-                       "name"                  : "Shutdown",
-                       "temperature"           : { "start": 95, "end": 100 },
-                       "timer_interval_ms"     : 1000,
-                       "target_level"          : 3
-               }
-       ],
-
-       "cpuhp_support"                 : false
-}
diff --git a/tests/unittest/scripts/valid/pass-memory.json b/tests/unittest/scripts/valid/pass-memory.json
deleted file mode 100644 (file)
index 4099313..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-       "support"               : true,
-       "init_level"            : 0,
-       "level_list"            :
-       [
-               {
-                       "level"                         : 0,
-                       "memory,fault_around_bytes"     : 4096
-               }, {
-                       "level"                         : 1,
-                       "memory,fault_around_bytes"     : 65536
-               }
-       ],
-
-       "pmqos_support"         : true,
-       "pmqos_scenario_list"   :
-       [
-               {
-                       "name"          : "AppLaunch",
-                       "target_level"  : 0
-               }, {
-                       "name"          : "UltraPowerSaving",
-                       "target_level"  : 0
-               }, {
-                       "name"          : "Performance",
-                       "target_level"  : 1
-               }
-       ],
-
-       "thermal_support"       : false,
-
-       "cpuhp_support"         : false
-}
diff --git a/tests/unittest/scripts/valid/pass.json b/tests/unittest/scripts/valid/pass.json
deleted file mode 100644 (file)
index d3eea11..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-       "device_list"   :
-       [
-               {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu0",
-                       "device_config_path"    : "./scripts/valid/pass-cpu0.json",
-                       "thermal_device_name"   : "thermal_zone0",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 0
-               }, {
-                       "device_type"           : "cpu",
-                       "device_name"           : "cpu4",
-                       "device_config_path"    : "./scripts/valid/pass-cpu4.json",
-                       "thermal_device_name"   : "thermal_zone1",
-                       "cpu,number_of_cpus"    : 4,
-                       "cpu,first_cpu"         : 4
-               }, {
-                       "device_type"           : "bus",
-                       "device_name"           : "devfreq0",
-                       "device_config_path"    : "./scripts/valid/pass-bus0.json",
-                       "thermal_device_name"   : null
-               }, {
-                       "device_type"           : "bus",
-                       "device_name"           : "devfreq5",
-                       "device_config_path"    : "./scripts/valid/pass-bus1.json",
-                       "thermal_device_name"   : null
-               }, {
-                       "device_type"           : "gpu",
-                       "device_name"           : "devfreq10",
-                       "device_config_path"    : "./scripts/valid/pass-gpu.json",
-                       "thermal_device_name"   : "thermal_zone3"
-               }, {
-                       "device_type"           : "memory",
-                       "device_name"           : "memory",
-                       "device_config_path"    : "./scripts/valid/pass-memory.json"
-               }, {
-                       "device_type"           : "battery",
-                       "device_name"           : "battery",
-                       "device_config_path"    : "./scripts/valid/pass-battery.json",
-                       "thermal_device_name"   : "thermal_zone5",
-                       "cooling_device_name"   : null
-               }
-       ]
-}