1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "task_signal.h" 17 18 #include <cerrno> 19 #include <condition_variable> 20 #include <gtest/gtest.h> 21 #include <string> 22 23 #include "filemgmt_libhilog.h" 24 #include "task_signal_listener.h" 25 26 namespace OHOS { 27 namespace DistributedFS { 28 using namespace std; 29 using namespace OHOS::DistributedFS::ModuleTaskSignal; 30 using namespace FileManagement; 31 32 class TaskSignalTest : public testing::Test { 33 public: SetUpTestCase(void)34 static void SetUpTestCase(void){}; TearDownTestCase()35 static void TearDownTestCase(){}; SetUp()36 void SetUp(){}; TearDown()37 void TearDown(){}; 38 39 static std::condition_variable taskListenerCv_; 40 static std::mutex taskListenerCallbackLock_; 41 static std::string canceledFilePath_; 42 }; 43 44 std::condition_variable TaskSignalTest::taskListenerCv_; 45 std::mutex TaskSignalTest::taskListenerCallbackLock_; 46 std::string TaskSignalTest::canceledFilePath_; 47 48 class TaskSignalListenerTestImpl : public TaskSignalListener { 49 public: 50 ~TaskSignalListenerTestImpl() = default; OnCancel()51 void OnCancel() 52 { 53 string path = "aaa"; 54 TaskSignalTest::canceledFilePath_ = path; 55 TaskSignalTest::taskListenerCv_.notify_one(); 56 HILOGI("OnCancel in. path = %{public}s", path.c_str()); 57 } 58 }; 59 60 /** 61 * @tc.name: Task_Signal_Cancel_0000 62 * @tc.desc: Test function of Cancel() interface for SUCCESS. 63 * @tc.size: MEDIUM 64 * @tc.type: FUNC 65 * @tc.level Level 1 66 * @tc.require: NAN 67 */ 68 HWTEST_F(TaskSignalTest, Task_Signal_Cancel_0000, testing::ext::TestSize.Level1) 69 { 70 GTEST_LOG_(INFO) << "TaskSignalTest-begin Task_Signal_Cancel_0000"; 71 auto signal = std::make_shared<TaskSignal>(); 72 auto ret = signal->Cancel(); 73 EXPECT_TRUE(ret == 0); 74 } 75 76 /** 77 * @tc.name: Task_Signal_IsCancel_0000 78 * @tc.desc: Test function of IsCanceled() interface 79 * @tc.size: MEDIUM 80 * @tc.type: FUNC 81 * @tc.level Level 1 82 * @tc.require: NAN 83 */ 84 HWTEST_F(TaskSignalTest, Task_Signal_IsCancel_0000, testing::ext::TestSize.Level1) 85 { 86 GTEST_LOG_(INFO) << "TaskSignalTest-begin Task_Signal_IsCancel_0000"; 87 auto signal = std::make_shared<TaskSignal>(); 88 auto isCanceled = signal->IsCanceled(); 89 EXPECT_TRUE(!isCanceled); 90 91 auto ret = signal->Cancel(); 92 EXPECT_TRUE(ret == 0); 93 isCanceled = signal->IsCanceled(); 94 EXPECT_TRUE(isCanceled); 95 } 96 97 /** 98 * @tc.name: Task_Signal_SetTaskSignalListener_0000 99 * @tc.desc: Test function of SetTaskSignalListener() interface for SUCCESS. 100 * @tc.size: MEDIUM 101 * @tc.type: FUNC 102 * @tc.level Level 1 103 * @tc.require: NAN 104 */ 105 HWTEST_F(TaskSignalTest, Task_Signal_SetTaskSignalListener_0000, testing::ext::TestSize.Level1) 106 { 107 GTEST_LOG_(INFO) << "TaskSignalTest-begin Task_Signal_SetTaskSignalListener_0000"; 108 std::unique_lock<std::mutex> lock(TaskSignalTest::taskListenerCallbackLock_); 109 auto signal = std::make_shared<TaskSignal>(); 110 auto listener = std::make_shared<TaskSignalListenerTestImpl>(); 111 signal->SetTaskSignalListener(listener.get()); 112 std::string filePath = "aaa"; 113 listener->OnCancel(); 114 signal->CheckCancelIfNeed(filePath); 115 EXPECT_EQ(TaskSignalTest::canceledFilePath_, filePath); 116 } 117 118 /** 119 * @tc.name: Task_Signal_MarkRemoteTask_0000 120 * @tc.desc: Test function of MarkRemoteTask() and SetFileInfoOfRemoteTask() interface for SUCCESS. 121 * @tc.size: MEDIUM 122 * @tc.type: FUNC 123 * @tc.level Level 1 124 * @tc.require: NAN 125 */ 126 HWTEST_F(TaskSignalTest, Task_Signal_MarkRemoteTask_0000, testing::ext::TestSize.Level1) 127 { 128 GTEST_LOG_(INFO) << "TaskSignalTest-begin Task_Signal_MarkRemoteTask_0000"; 129 auto signal = std::make_shared<TaskSignal>(); 130 signal->MarkRemoteTask(); 131 std::string sessionName = "DistributedDevice0"; 132 std::string filePath = "aaa"; 133 signal->SetFileInfoOfRemoteTask(sessionName, filePath); 134 auto ret = signal->Cancel(); 135 EXPECT_EQ(ret, 4); 136 } 137 } // namespace DistributedFS 138 } // namespace OHOS