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 <memory> 17 #include <unistd.h> 18 19 #include "gtest/gtest.h" 20 #include "network/softbus/softbus_session_pool.h" 21 #include "utils_log.h" 22 23 namespace OHOS { 24 namespace Storage { 25 namespace DistributedFile { 26 namespace Test { 27 using namespace testing::ext; 28 using namespace std; 29 30 constexpr int SESSION_ID_ONE = 1; 31 constexpr int SESSION_ID_TWO = 2; 32 constexpr int UID_ONE = 1; 33 constexpr int UID_TWO = 2; 34 constexpr int32_t SESSION_COUNT = 10; 35 const string SESSION_NAME_PREFIX = "DistributedFileService"; 36 37 class SoftbusSessionPoolTest : public testing::Test { 38 public: SetUpTestCase(void)39 static void SetUpTestCase(void) {}; TearDownTestCase(void)40 static void TearDownTestCase(void) {}; SetUp()41 void SetUp() {}; TearDown()42 void TearDown() {}; 43 }; 44 /** 45 * @tc.name: SoftbusSessionPoolTest_SessionInfo_0100 46 * @tc.desc: test SoftBusSessionPool function. 47 * @tc.type: FUNC 48 * @tc.require: I9JKYU 49 */ 50 HWTEST_F(SoftbusSessionPoolTest, SoftbusSessionPoolTest_SessionInfo_0100, TestSize.Level1) 51 { 52 GTEST_LOG_(INFO) << "SoftbusSessionPoolTest_SessionInfo_0100 start"; 53 string sessionName1 = "DistributedFileService0"; 54 string sessionName2 = "DistributedFileService1"; 55 SoftBusSessionPool::SessionInfo sessionInfo1{.sessionId = SESSION_ID_ONE, 56 .srcUri = "file://com.demo.a/test/1", 57 .dstPath = "/data/test/1", 58 .uid = UID_ONE}; 59 SoftBusSessionPool::SessionInfo sessionInfo2{.sessionId = SESSION_ID_TWO, 60 .srcUri = "file://com.demo.a/test/2", 61 .dstPath = "/data/test/2", 62 .uid = UID_TWO}; 63 string sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo1); 64 EXPECT_EQ(sessionName, sessionName1); 65 sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo2); 66 EXPECT_EQ(sessionName, sessionName2); 67 SoftBusSessionPool::SessionInfo sessionInfo; 68 bool flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName1, sessionInfo); 69 EXPECT_EQ(flag, true); 70 EXPECT_EQ(sessionInfo.sessionId, sessionInfo1.sessionId); 71 EXPECT_EQ(sessionInfo.dstPath, sessionInfo1.dstPath); 72 EXPECT_EQ(sessionInfo.srcUri, sessionInfo1.srcUri); 73 EXPECT_EQ(sessionInfo.uid, sessionInfo1.uid); 74 flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName2, sessionInfo); 75 EXPECT_EQ(flag, true); 76 EXPECT_EQ(sessionInfo.sessionId, sessionInfo2.sessionId); 77 EXPECT_EQ(sessionInfo.dstPath, sessionInfo2.dstPath); 78 EXPECT_EQ(sessionInfo.srcUri, sessionInfo2.srcUri); 79 EXPECT_EQ(sessionInfo.uid, sessionInfo2.uid); 80 SoftBusSessionPool::GetInstance().DeleteSessionInfo(sessionName1); 81 flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName1, sessionInfo); 82 EXPECT_EQ(flag, false); 83 SoftBusSessionPool::GetInstance().DeleteSessionInfo(sessionName2); 84 flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName2, sessionInfo); 85 EXPECT_EQ(flag, false); 86 GTEST_LOG_(INFO) << "SoftbusSessionPoolTest_SessionInfo_0100 end"; 87 } 88 89 /** 90 * @tc.name: SoftbusSessionPoolTest_GenerateSessionName_0100 91 * @tc.desc: test GenerateSessionName function. 92 * @tc.type: FUNC 93 * @tc.require: I9JKYU 94 */ 95 HWTEST_F(SoftbusSessionPoolTest, SoftbusSessionPoolTest_GenerateSessionName_0100, TestSize.Level1) 96 { 97 GTEST_LOG_(INFO) << "SoftbusSessionPoolTest_GenerateSessionName_0100 start"; 98 SoftBusSessionPool::SessionInfo sessionInfo; 99 string sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo); 100 EXPECT_EQ(sessionName, "DistributedFileService0"); 101 SoftBusSessionPool::SessionInfo sessionInfo1{.sessionId = SESSION_ID_ONE, 102 .srcUri = "file://com.demo.a/test/1", 103 .dstPath = "/data/test/1", 104 .uid = UID_ONE}; 105 for (int32_t i = 1; i < SESSION_COUNT - 1; i++) { 106 std::string testName = std::string(SESSION_NAME_PREFIX) + std::to_string(i); 107 SoftBusSessionPool::GetInstance().AddSessionInfo(testName, sessionInfo1); 108 } 109 110 sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo1); 111 EXPECT_EQ(sessionName, "DistributedFileService9"); 112 SoftBusSessionPool::GetInstance().AddSessionInfo(sessionName, sessionInfo1); 113 sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo1); 114 EXPECT_EQ(sessionName, ""); 115 116 for (int32_t i = 0; i < SESSION_COUNT; i++) { 117 std::string testName = std::string(SESSION_NAME_PREFIX) + std::to_string(i); 118 SoftBusSessionPool::GetInstance().DeleteSessionInfo(testName); 119 } 120 121 sessionName = SoftBusSessionPool::GetInstance().GenerateSessionName(sessionInfo1); 122 EXPECT_EQ(sessionName, "DistributedFileService0"); 123 GTEST_LOG_(INFO) << "SoftbusSessionPoolTest_GenerateSessionName_0100 end"; 124 } 125 } // namespace Test 126 } // namespace DistributedFile 127 } // namespace Storage 128 } // namespace OHOS 129