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 #define LOG_TAG "ObjectDmsHandlerTest" 17 18 #include "object_dms_handler.h" 19 20 #include <gtest/gtest.h> 21 22 #include "device_manager_adapter.h" 23 #include "dms_listener_stub.h" 24 25 using namespace testing::ext; 26 using namespace OHOS::DistributedObject; 27 namespace OHOS::Test { 28 constexpr const char *PKG_NAME = "ohos.distributeddata.service"; 29 class ObjectDmsHandlerTest : public testing::Test { 30 public: SetUp()31 void SetUp() {} TearDown()32 void TearDown() {} 33 }; 34 35 /** 36 * @tc.name: IsContinueTest_001 37 * @tc.desc: IsContinue test. 38 * @tc.type: FUNC 39 */ 40 HWTEST_F(ObjectDmsHandlerTest, IsContinue_001, TestSize.Level0) 41 { 42 ObjectDmsHandler::GetInstance().RegisterDmsEvent(); 43 DistributedHardware::DmDeviceInfo localDeviceInfo; 44 DistributedHardware::DeviceManager::GetInstance().GetLocalDeviceInfo(PKG_NAME, localDeviceInfo); 45 std::string localNetworkId = localDeviceInfo.networkId; 46 DistributedSchedule::EventNotify notify; 47 notify.dSchedEventType_ = DistributedSchedule::DSchedEventType::DMS_CONTINUE; 48 notify.srcNetworkId_ = localNetworkId; 49 notify.dstNetworkId_ = "networkId2"; 50 notify.srcBundleName_ = "bundleName1"; 51 notify.destBundleName_ = "bundleName2"; 52 DmsEventListener listener; 53 listener.DSchedEventNotify(notify); 54 auto res = ObjectDmsHandler::GetInstance().IsContinue("bundleName1"); 55 EXPECT_TRUE(res); 56 res = ObjectDmsHandler::GetInstance().IsContinue("bundleName2"); 57 EXPECT_FALSE(res); 58 ObjectDmsHandler::GetInstance().dmsEvents_.clear(); 59 } 60 61 /** 62 * @tc.name: IsContinueTest_002 63 * @tc.desc: IsContinue test. 64 * @tc.type: FUNC 65 */ 66 HWTEST_F(ObjectDmsHandlerTest, IsContinue_002, TestSize.Level0) 67 { 68 ObjectDmsHandler::GetInstance().RegisterDmsEvent(); 69 DistributedHardware::DmDeviceInfo localDeviceInfo; 70 DistributedHardware::DeviceManager::GetInstance().GetLocalDeviceInfo(PKG_NAME, localDeviceInfo); 71 std::string localNetworkId = localDeviceInfo.networkId; 72 DistributedSchedule::EventNotify notify; 73 notify.dSchedEventType_ = DistributedSchedule::DSchedEventType::DMS_CONTINUE; 74 notify.srcNetworkId_ = "networkId1"; 75 notify.dstNetworkId_ = localNetworkId; 76 notify.srcBundleName_ = "bundleName1"; 77 notify.destBundleName_ = "bundleName2"; 78 DmsEventListener listener; 79 listener.DSchedEventNotify(notify); 80 auto res = ObjectDmsHandler::GetInstance().IsContinue("bundleName1"); 81 EXPECT_FALSE(res); 82 res = ObjectDmsHandler::GetInstance().IsContinue("bundleName2"); 83 EXPECT_TRUE(res); 84 ObjectDmsHandler::GetInstance().dmsEvents_.clear(); 85 } 86 87 /** 88 * @tc.name: ReceiveDmsEvent_001 89 * @tc.desc: IsContinue test. 90 * @tc.type: FUNC 91 */ 92 HWTEST_F(ObjectDmsHandlerTest, ReceiveDmsEvent_001, TestSize.Level0) 93 { 94 ObjectDmsHandler::GetInstance().RegisterDmsEvent(); 95 DmsEventListener listener; 96 for (int i = 0; i <= 20; i++) { 97 DistributedSchedule::EventNotify notify; 98 notify.dSchedEventType_ = DistributedSchedule::DSchedEventType::DMS_CONTINUE; 99 notify.srcNetworkId_ = "srcNetworkId" + std::to_string(i); 100 notify.dstNetworkId_ = "dstNetworkId" + std::to_string(i); 101 notify.srcBundleName_ = "srcBundleName" + std::to_string(i); 102 notify.destBundleName_ = "destBundleName" + std::to_string(i); 103 ObjectDmsHandler::GetInstance().ReceiveDmsEvent(notify); 104 } 105 EXPECT_EQ(ObjectDmsHandler::GetInstance().dmsEvents_.size(), 20); 106 EXPECT_EQ(ObjectDmsHandler::GetInstance().dmsEvents_.front().first.srcNetworkId_, "srcNetworkId1"); 107 EXPECT_EQ(ObjectDmsHandler::GetInstance().dmsEvents_.back().first.srcNetworkId_, "srcNetworkId20"); 108 ObjectDmsHandler::GetInstance().dmsEvents_.clear(); 109 } 110 111 /** 112 * @tc.name: GetDstBundleName_001 113 * @tc.desc: IsContinue test. 114 * @tc.type: FUNC 115 */ 116 HWTEST_F(ObjectDmsHandlerTest, GetDstBundleName_001, TestSize.Level0) 117 { 118 DistributedHardware::DmDeviceInfo localDeviceInfo; 119 DistributedHardware::DeviceManager::GetInstance().GetLocalDeviceInfo(PKG_NAME, localDeviceInfo); 120 std::string localNetworkId = localDeviceInfo.networkId; 121 122 std::string srcNetworkId = localNetworkId; 123 std::string srcBundleName = "bundleName1"; 124 std::string dstNetworkId = "networkId2"; 125 std::string destBundleName = "bundleName2"; 126 127 auto res = ObjectDmsHandler::GetInstance().GetDstBundleName(srcBundleName, dstNetworkId); 128 EXPECT_EQ(res, srcBundleName); 129 130 DistributedSchedule::EventNotify notify; 131 notify.dSchedEventType_ = DistributedSchedule::DSchedEventType::DMS_CONTINUE; 132 notify.srcNetworkId_ = srcNetworkId; 133 notify.dstNetworkId_ = dstNetworkId; 134 notify.srcBundleName_ = srcBundleName; 135 notify.destBundleName_ = destBundleName; 136 ObjectDmsHandler::GetInstance().ReceiveDmsEvent(notify); 137 138 res = ObjectDmsHandler::GetInstance().GetDstBundleName(srcBundleName, dstNetworkId); 139 EXPECT_EQ(res, destBundleName); 140 141 ObjectDmsHandler::GetInstance().dmsEvents_.clear(); 142 143 auto timestamp = std::chrono::steady_clock::now() - std::chrono::seconds(20); 144 ObjectDmsHandler::GetInstance().dmsEvents_.push_back({notify, timestamp}); 145 146 res = ObjectDmsHandler::GetInstance().GetDstBundleName(srcBundleName, dstNetworkId); 147 EXPECT_EQ(res, srcBundleName); 148 149 ObjectDmsHandler::GetInstance().dmsEvents_.clear(); 150 } 151 } // namespace OHOS::Test 152