• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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