• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <iostream>
18 #include "gtest/gtest.h"
19 #include "media_dfx.cpp"
20 #include "common/media_core.h"
21 #include "meta/meta.h"
22 
23 using namespace testing::ext;
24 using namespace OHOS::Media;
25 
26 namespace {
27     constexpr uint32_t TEST_UID_ID_1 = 1;
28     constexpr int32_t ERROR_CODE = 5;
29 }
30 
31 namespace OHOS {
32 namespace Media {
33 class MediaDfxTest : public testing::Test {
34 public:
SetUpTestCase(void)35     static void SetUpTestCase(void) {};
TearDownTestCase(void)36     static void TearDownTestCase(void) {};
SetUp(void)37     void SetUp(void)
38     {
39         mediaEvent_ = std::make_shared<MediaEvent>();
40     };
TearDown(void)41     void TearDown(void)
42     {
43         mediaEvent_ = nullptr;
44     };
45 
46     std::shared_ptr<MediaEvent> mediaEvent_ = nullptr;
47 };
48 
49 HWTEST_F(MediaDfxTest, CREATE_MEDIA_INFO, TestSize.Level1)
50 {
51     uint64_t instanceId = 1;
52     int32_t ret = CreateMediaInfo(CallType::AVPLAYER, TEST_UID_ID_1, instanceId);
53     ASSERT_EQ(ret, MSERR_OK);
54 
55     std::shared_ptr<Meta> meta = std::make_shared<Meta>();
56     meta->SetData(Tag::SCREEN_CAPTURE_ERR_MSG, "SCREEN_CAPTURE_ERR_MSG");
57     meta->SetData(Tag::SCREEN_CAPTURE_ERR_CODE, ERROR_CODE);
58     ret = AppendMediaInfo(meta, instanceId);
59     ASSERT_EQ(ret, MSERR_OK);
60 
61     ret = ReportMediaInfo(instanceId);
62     ASSERT_EQ(ret, MSERR_OK);
63 }
64 
65 HWTEST_F(MediaDfxTest, CREATE_MEDIA_INFO_1, TestSize.Level1)
66 {
67     uint64_t instanceId = 1;
68     int32_t ret = CreateMediaInfo(CallType::AVPLAYER, TEST_UID_ID_1, instanceId);
69     ASSERT_EQ(ret, MSERR_OK);
70 
71     std::shared_ptr<Meta> meta = std::make_shared<Meta>();
72     meta->SetData(Tag::SCREEN_CAPTURE_ERR_MSG, "SCREEN_CAPTURE_ERR_MSG");
73     meta->SetData(Tag::SCREEN_CAPTURE_ERR_CODE, ERROR_CODE);
74     ret = AppendMediaInfo(meta, instanceId);
75     ASSERT_EQ(ret, MSERR_OK);
76 
77     std::shared_ptr<Meta> meta1 = std::make_shared<Meta>();
78     ret = AppendMediaInfo(meta1, instanceId);
79     ASSERT_NE(ret, MSERR_OK);
80     ASSERT_EQ(ret, MSERR_INVALID_OPERATION);
81 
82     ret = ReportMediaInfo(instanceId);
83     ASSERT_EQ(ret, MSERR_OK);
84 }
85 
86 HWTEST_F(MediaDfxTest, CREATE_MEDIA_INFO_2, TestSize.Level1)
87 {
88     uint64_t instanceId = 1;
89     int32_t ret = CreateMediaInfo(CallType::AVPLAYER, TEST_UID_ID_1, instanceId);
90     ASSERT_EQ(ret, MSERR_OK);
91 
92     std::shared_ptr<Meta> meta = std::make_shared<Meta>();
93     meta->SetData(Tag::SCREEN_CAPTURE_ERR_MSG, "SCREEN_CAPTURE_ERR_MSG");
94     meta->SetData(Tag::SCREEN_CAPTURE_ERR_CODE, ERROR_CODE);
95     ret = AppendMediaInfo(meta, instanceId);
96     ASSERT_EQ(ret, MSERR_OK);
97 
98     ret = ReportMediaInfo(instanceId);
99     ASSERT_EQ(ret, MSERR_OK);
100     ret = ReportMediaInfo(instanceId);
101     ASSERT_NE(ret, MSERR_OK);
102     ASSERT_EQ(ret, MSERR_INVALID_OPERATION);
103 }
104 
105 HWTEST_F(MediaDfxTest, StatisticsEventReport_ShouldReturnError_WhenMapIsEmpty, TestSize.Level0)
106 {
107     reportMediaInfoMap_.clear();
108     int32_t result = StatisticsEventReport();
109     ASSERT_EQ(result, OHOS::Media::MSERR_INVALID_OPERATION);
110 }
111 
112 // Test when reportMediaInfoMap_ is not empty, StatisticsEventReport should return MSERR_OK
113 HWTEST_F(MediaDfxTest, StatisticsEventReport_ShouldReturnSuccess_WhenMapIsNotEmpty_001, TestSize.Level0)
114 {
115     reportMediaInfoMap_[OHOS::Media::CallType::AVPLAYER] = {};
116     int32_t result = StatisticsEventReport();
117     ASSERT_EQ(result, OHOS::Media::MSERR_OK);
118     reportMediaInfoMap_.clear();
119 }
120 
121 // Test when reportMediaInfoMap_ is not empty, StatisticsEventReport should return MSERR_OK
122 HWTEST_F(MediaDfxTest, StatisticsEventReport_ShouldReturnSuccess_WhenMapIsNotEmpty_002, TestSize.Level0)
123 {
124     int32_t uid = 123;
125     reportMediaInfoMap_[OHOS::Media::CallType::AVPLAYER][uid] = {};
126     int32_t result = StatisticsEventReport();
127     ASSERT_EQ(result, OHOS::Media::MSERR_OK);
128     reportMediaInfoMap_.clear();
129 }
130 
131 #ifndef CROSS_PLATFORM
132 // Scenario1: Test case for int32_t type
133 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseInt32_WhenInt32Type, TestSize.Level0) {
134     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
135     listPair.first = 1;
136     listPair.second = std::make_shared<Meta>();
137     listPair.second->SetData(Tag::APP_UID, 123);
138     json metaInfoJson;
139 
140     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
141 
142     EXPECT_EQ(metaInfoJson[Tag::APP_UID], "123");
143 }
144 
145 // Scenario2: Test case for uint32_t type
146 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseUint32_WhenUint32Type, TestSize.Level0) {
147     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
148     listPair.first = 1;
149     listPair.second = std::make_shared<Meta>();
150     listPair.second->SetData(Tag::DRM_DECRYPT_AVG_SIZE, 456u);
151     json metaInfoJson;
152 
153     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
154 
155     EXPECT_EQ(metaInfoJson[Tag::DRM_DECRYPT_AVG_SIZE], "456");
156 }
157 
158 // Scenario3: Test case for uint64_t type
159 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseUint64_WhenUint64Type, TestSize.Level0) {
160     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
161     listPair.first = 1;
162     listPair.second = std::make_shared<Meta>();
163     listPair.second->SetData(Tag::AV_PLAYER_DOWNLOAD_TOTAL_BITS, 789u);
164     json metaInfoJson;
165 
166     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
167     Any valueType = OHOS::Media::GetDefaultAnyValue(Tag::AV_PLAYER_DOWNLOAD_TOTAL_BITS);
168     EXPECT_EQ(Any::IsSameTypeWith<uint64_t>(valueType), true);
169 }
170 
171 // Scenario4: Test case for string type
172 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseString_WhenStringType, TestSize.Level0) {
173     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
174     listPair.first = 1;
175     listPair.second = std::make_shared<Meta>();
176     listPair.second->SetData(Tag::MIME_TYPE, "test");
177     json metaInfoJson;
178 
179     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
180 
181     EXPECT_EQ(metaInfoJson[Tag::MIME_TYPE], "test");
182 }
183 
184 // Scenario5: Test case for int8_t type
185 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseInt8_WhenInt8Type, TestSize.Level0) {
186     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
187     listPair.first = 1;
188     listPair.second = std::make_shared<Meta>();
189     int8_t value = 100;
190     listPair.second->SetData(Tag::AV_PLAYER_HDR_TYPE, value);
191     json metaInfoJson;
192 
193     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
194     Any valueType = OHOS::Media::GetDefaultAnyValue(Tag::AV_PLAYER_HDR_TYPE);
195     EXPECT_EQ(Any::IsSameTypeWith<int8_t>(valueType), true);
196 }
197 
198 // Scenario6: Test case for bool type
199 HWTEST_F(MediaDfxTest, ParseOneEvent_ShouldParseBool_WhenBoolType, TestSize.Level0) {
200 
201     // test StatisicsHiSysEventWrite
202     std::vector<std::string> infoArr = {"test for tdd", "test for tdd"};
203     mediaEvent_->StatisicsHiSysEventWrite(CallType::AVPLAYER, OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, infoArr);
204     mediaEvent_->StatisicsHiSysEventWrite(CallType::AVRECORDER, OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, infoArr);
205     mediaEvent_->StatisicsHiSysEventWrite(CallType::SCREEN_CAPTRUER,
206         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, infoArr);
207     mediaEvent_->StatisicsHiSysEventWrite(CallType::AVTRANSCODER,
208         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, infoArr);
209     mediaEvent_->StatisicsHiSysEventWrite(CallType::METADATA_RETRIEVER,
210         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, infoArr);
211 
212     std::pair<uint64_t, std::shared_ptr<Meta>> listPair;
213     listPair.first = 1;
214     listPair.second = std::make_shared<Meta>();
215     listPair.second->SetData(Tag::MEDIA_HAS_VIDEO, true);
216     json metaInfoJson;
217 
218     mediaEvent_->ParseOneEvent(listPair, metaInfoJson);
219 
220     EXPECT_EQ(metaInfoJson[Tag::MEDIA_HAS_VIDEO], "true");
221 }
222 #endif
223 }
224 }