1 /*
2 * Copyright 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "DemuxTests.h"
18 #include "DescramblerTests.h"
19 #include "FrontendTests.h"
20 #include "LnbTests.h"
21
22 using android::hardware::tv::tuner::V1_0::DataFormat;
23 using android::hardware::tv::tuner::V1_0::IDescrambler;
24
success()25 static AssertionResult success() {
26 return ::testing::AssertionSuccess();
27 }
28
29 namespace {
30
initConfiguration()31 void initConfiguration() {
32 initFrontendConfig();
33 initFrontendScanConfig();
34 initLnbConfig();
35 initFilterConfig();
36 initTimeFilterConfig();
37 initDvrConfig();
38 initDescramblerConfig();
39 }
40
filterDataOutputTestBase(FilterTests tests)41 AssertionResult filterDataOutputTestBase(FilterTests tests) {
42 // Data Verify Module
43 std::map<uint32_t, sp<FilterCallback>>::iterator it;
44 std::map<uint32_t, sp<FilterCallback>> filterCallbacks = tests.getFilterCallbacks();
45 for (it = filterCallbacks.begin(); it != filterCallbacks.end(); it++) {
46 it->second->testFilterDataOutput();
47 }
48 return success();
49 }
50
51 class TunerFrontendHidlTest : public testing::TestWithParam<std::string> {
52 public:
SetUp()53 virtual void SetUp() override {
54 mService = ITuner::getService(GetParam());
55 ASSERT_NE(mService, nullptr);
56 initConfiguration();
57
58 mFrontendTests.setService(mService);
59 }
60
61 protected:
description(const std::string & description)62 static void description(const std::string& description) {
63 RecordProperty("description", description);
64 }
65
66 sp<ITuner> mService;
67 FrontendTests mFrontendTests;
68 };
69
70 class TunerLnbHidlTest : public testing::TestWithParam<std::string> {
71 public:
SetUp()72 virtual void SetUp() override {
73 mService = ITuner::getService(GetParam());
74 ASSERT_NE(mService, nullptr);
75 initConfiguration();
76
77 mLnbTests.setService(mService);
78 }
79
80 protected:
description(const std::string & description)81 static void description(const std::string& description) {
82 RecordProperty("description", description);
83 }
84
85 sp<ITuner> mService;
86 LnbTests mLnbTests;
87 };
88
89 class TunerDemuxHidlTest : public testing::TestWithParam<std::string> {
90 public:
SetUp()91 virtual void SetUp() override {
92 mService = ITuner::getService(GetParam());
93 ASSERT_NE(mService, nullptr);
94 initConfiguration();
95
96 mFrontendTests.setService(mService);
97 mDemuxTests.setService(mService);
98 mFilterTests.setService(mService);
99 }
100
101 protected:
description(const std::string & description)102 static void description(const std::string& description) {
103 RecordProperty("description", description);
104 }
105
106 sp<ITuner> mService;
107 FrontendTests mFrontendTests;
108 DemuxTests mDemuxTests;
109 FilterTests mFilterTests;
110 };
111
112 class TunerFilterHidlTest : public testing::TestWithParam<std::string> {
113 public:
SetUp()114 virtual void SetUp() override {
115 mService = ITuner::getService(GetParam());
116 ASSERT_NE(mService, nullptr);
117 initConfiguration();
118
119 mFrontendTests.setService(mService);
120 mDemuxTests.setService(mService);
121 mFilterTests.setService(mService);
122 }
123
124 protected:
description(const std::string & description)125 static void description(const std::string& description) {
126 RecordProperty("description", description);
127 }
128
129 void configSingleFilterInDemuxTest(FilterConfig filterConf, FrontendConfig frontendConf);
130 void testTimeFilter(TimeFilterConfig filterConf);
131
132 sp<ITuner> mService;
133 FrontendTests mFrontendTests;
134 DemuxTests mDemuxTests;
135 FilterTests mFilterTests;
136 };
137
138 class TunerBroadcastHidlTest : public testing::TestWithParam<std::string> {
139 public:
SetUp()140 virtual void SetUp() override {
141 mService = ITuner::getService(GetParam());
142 ASSERT_NE(mService, nullptr);
143 initConfiguration();
144
145 mFrontendTests.setService(mService);
146 mDemuxTests.setService(mService);
147 mFilterTests.setService(mService);
148 mLnbTests.setService(mService);
149 mDvrTests.setService(mService);
150 }
151
152 protected:
description(const std::string & description)153 static void description(const std::string& description) {
154 RecordProperty("description", description);
155 }
156
157 sp<ITuner> mService;
158 FrontendTests mFrontendTests;
159 DemuxTests mDemuxTests;
160 FilterTests mFilterTests;
161 LnbTests mLnbTests;
162 DvrTests mDvrTests;
163
164 AssertionResult filterDataOutputTest(vector<string> goldenOutputFiles);
165
166 void broadcastSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf);
167 void broadcastSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf,
168 LnbConfig lnbConf);
169
170 private:
171 uint32_t* mLnbId = nullptr;
172 };
173
174 class TunerPlaybackHidlTest : public testing::TestWithParam<std::string> {
175 public:
SetUp()176 virtual void SetUp() override {
177 mService = ITuner::getService(GetParam());
178 ASSERT_NE(mService, nullptr);
179 initConfiguration();
180
181 mFrontendTests.setService(mService);
182 mDemuxTests.setService(mService);
183 mFilterTests.setService(mService);
184 mDvrTests.setService(mService);
185 }
186
187 protected:
description(const std::string & description)188 static void description(const std::string& description) {
189 RecordProperty("description", description);
190 }
191
192 sp<ITuner> mService;
193 FrontendTests mFrontendTests;
194 DemuxTests mDemuxTests;
195 FilterTests mFilterTests;
196 DvrTests mDvrTests;
197
198 AssertionResult filterDataOutputTest(vector<string> goldenOutputFiles);
199
200 void playbackSingleFilterTest(FilterConfig filterConf, DvrConfig dvrConf);
201 };
202
203 class TunerRecordHidlTest : public testing::TestWithParam<std::string> {
204 public:
SetUp()205 virtual void SetUp() override {
206 mService = ITuner::getService(GetParam());
207 ASSERT_NE(mService, nullptr);
208 initConfiguration();
209
210 mFrontendTests.setService(mService);
211 mDemuxTests.setService(mService);
212 mFilterTests.setService(mService);
213 mDvrTests.setService(mService);
214 mLnbTests.setService(mService);
215 }
216
217 protected:
description(const std::string & description)218 static void description(const std::string& description) {
219 RecordProperty("description", description);
220 }
221
222 void attachSingleFilterToRecordDvrTest(FilterConfig filterConf, FrontendConfig frontendConf,
223 DvrConfig dvrConf);
224 void recordSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf,
225 DvrConfig dvrConf);
226 void recordSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf,
227 DvrConfig dvrConf, LnbConfig lnbConf);
228
229 sp<ITuner> mService;
230 FrontendTests mFrontendTests;
231 DemuxTests mDemuxTests;
232 FilterTests mFilterTests;
233 DvrTests mDvrTests;
234 LnbTests mLnbTests;
235
236 private:
237 uint32_t* mLnbId = nullptr;
238 };
239
240 class TunerDescramblerHidlTest : public testing::TestWithParam<std::string> {
241 public:
SetUp()242 virtual void SetUp() override {
243 mService = ITuner::getService(GetParam());
244 mCasService = IMediaCasService::getService();
245 ASSERT_NE(mService, nullptr);
246 ASSERT_NE(mCasService, nullptr);
247 initConfiguration();
248
249 mFrontendTests.setService(mService);
250 mDemuxTests.setService(mService);
251 mDvrTests.setService(mService);
252 mDescramblerTests.setService(mService);
253 mDescramblerTests.setCasService(mCasService);
254 }
255
256 protected:
description(const std::string & description)257 static void description(const std::string& description) {
258 RecordProperty("description", description);
259 }
260
261 void scrambledBroadcastTest(set<struct FilterConfig> mediaFilterConfs,
262 FrontendConfig frontendConf, DescramblerConfig descConfig);
263 AssertionResult filterDataOutputTest(vector<string> /*goldenOutputFiles*/);
264
265 sp<ITuner> mService;
266 sp<IMediaCasService> mCasService;
267 FrontendTests mFrontendTests;
268 DemuxTests mDemuxTests;
269 FilterTests mFilterTests;
270 DescramblerTests mDescramblerTests;
271 DvrTests mDvrTests;
272 };
273 } // namespace
274