• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1- [HDF Audio系统测试用例使用指南](#hdf-audio系统测试用例使用指南)
2  - [1. 简介](#1-简介)
3    - [1.1 目录结构](#11-目录结构)
4    - [1.2 特殊用例说明](#12-特殊用例说明)
5      - [1.2.1 硬件耦合相关测试用例](#121-硬件耦合相关测试用例)
6        - [1.2.1.1 UHDF层非通用(硬件耦合)测试用例](#1211-uhdf层非通用硬件耦合测试用例)
7        - [1.2.1.2 LIB层非通用(硬件耦合)测试用例](#1212-lib层非通用硬件耦合测试用例)
8      - [1.2.2 ALSA模式测试用例](#122-alsa模式测试用例)
9      - [1.2.3 录音阈值上报测试用例](#123-录音阈值上报测试用例)
10  - [2. 适用版本](#2-适用版本)
11  - [3. 适用平台(已适配的SOC)](#3-适用平台已适配的soc)
12  - [4. 使用方法](#4-使用方法)
13    - [4.1 用例编译](#41-用例编译)
14    - [4.2 测试套及资源文件推送](#42-测试套及资源文件推送)
15    - [4.3 测试用例执行(手动执行)](#43-测试用例执行手动执行)
16
17## HDF Audio系统测试用例使用指南
18### 1. 简介
19
20本使用指南主要说明音频驱动模型对外接口测试用例,并根据测试内容划分不同目录。包含以下内容:
21
22- ADM对外接口测试用例
23- UHDF层接口测试用例
24- LIB层接口测试用例
25- 功能测试用例
26
27#### 1.1 目录结构
28
29
30测试用例路径:drivers/peripheral/audio/test/systemtest
31
32目录结构如下:
33
34```bash
35|-- common          #测试用例公共函数
36|   |-- adm_common                 #ADM层测试用例公共函数
37|   |-- hdi_common                 #UHDF层测试用例公共函数
38|   |-- hdi_service_common         #IDL UHDF层测试用例公共函数
39|   |-- lib_common                 #LIB层测试用例公共函数
40|-- audio_adapter   #声卡测试用例
41|   |-- audio_usb                  #USB声卡测试用例
42|-- audio_function  #功能测试用例
43|   |-- audio_loadadapter_report   #加载声卡成功上报测试用例
44|   |-- audio_multi_mic_spk        #多mic、多speaker测试用例
45|   |-- audio_pathroute            #通路选择测试用例
46|   |-- audio_server               #hdi接口功能测试用例(播放、录音)
47|   |-- audio_smartpa              #外置声卡测试用例
48|   |-- audio_threshold_report     #阈值上报测试用例
49|-- adm             #ADM层接口测试用例
50|   |-- audio_adm_interface        #adm对外接口测试用例
51|-- hdi             #UHDF层接口测试用例
52|   |-- common                     #hdi接口通用测试用例
53|   |   |-- adapter
54|   |   |-- capture
55|   |   |-- manager
56|   |   |-- render
57|   |-- hardwaredependence         #hdi接口非通用测试用例(硬件耦合)
58|   |   |-- capture
59|   |   |-- render
60|   |-- hdiperformace              #hdi接口时延测试用例
61|   |-- hdireliability             #hdi接口可靠性测试用例
62|-- hdi_service     #UHDF层idl化接口测试用例
63|   |-- common                     #idl化hdi接口通用测试用例
64|   |   |-- adapter
65|   |   |-- capture
66|   |   |-- manager
67|   |   |-- render
68|   |-- hardwaredependence         #idl化hdi接口非通用测试用例(硬件耦合)
69|   |   |-- capture
70|   |   |-- render
71|   |-- hdiperformace              #idl化hdi接口时延测试用例
72|-- supportlibs     #LIB层接口测试用例(包含adm lib和alsa lib接口测试用例)
73        |-- common                 #lib接口通用测试用例
74        |   |-- capture
75        |   |-- render
76        |-- hardwaredependence     #lib接口非通用测试用例(硬件耦合)
77            |-- capture
78            |-- render
79```
80
81#### 1.2 特殊用例说明
82##### 1.2.1 硬件耦合相关测试用例
83由于音频驱动模型对外接口的部分接口参数与硬件能力有耦合,此类用例与硬件耦合,导致无法作为通用用例。在移植过程中及门禁用例提取过程中,需要特别关注。
84
85###### 1.2.1.1 UHDF层非通用(硬件耦合)测试用例
86UHDF层存在硬件耦合接口,如:SetSampleAttributes、SetChannelMode等。
871. SetSampleAttributes接口测试用例中设置参数时会设置不同的“位宽、采样率、声道数”等与硬件相关的参数。
882. SetChannelMode 接口测试用例中设置声道模式时会设置不同的模式,声道模式的支持与硬件相关。
89
90硬件不支持,接口会返回失败;硬件支持,接口返回成功。因此不同的开发板会出现不同的结果,在移植测试用例的过程中需要根据硬件的情况进行适配。
91
92<table width="100%" border="0">
93<caption>非通用测试用例接口列表</caption>
94    <tr>
95        <th width="20%" align="center">所属类</th>
96        <th align="center" width="30%">接口名</th>
97        <th width="50%" align="center">说明</th>
98    </tr>
99    <tr>
100        <td width="20%" rowspan ="7">capture</td>
101        <td width="30%">SetSampleAttributes</td>
102        <td width="50%">遍历设置不同的硬件参数</td>
103    </tr>
104    <tr>
105        <td>GetSampleAttributes</td>
106        <td>获取设置的硬件参数</td>
107    </tr>
108    <tr>
109        <td>GetFrameSize</td>
110        <td>与SetSampleAttributes组合测试</td>
111    </tr>
112    <tr>
113        <td>GetFrameCount</td>
114        <td>与SetSampleAttributes组合测试</td>
115    </tr>
116    <tr>
117        <td>GetMmapPosition</td>
118        <td>与SetSampleAttributes组合测试</td>
119    </tr>
120    <tr>
121        <td>GetCurrentChannelId</td>
122        <td>与SetSampleAttributes组合测试</td>
123    </tr>
124    <tr>
125        <td>GetCapturePosition</td>
126        <td>与SetSampleAttributes组合测试</td>
127    </tr>
128    <tr>
129        <td width="20%" rowspan ="9">render</td>
130        <td width="30%">SetSampleAttributes</td>
131        <td width="50%">遍历设置不同的硬件参数</td>
132    </tr>
133    <tr>
134        <td>GetSampleAttributes</td>
135        <td>获取设置的硬件参数</td>
136    </tr>
137    <tr>
138        <td>SetChannelMode</td>
139        <td>遍历设置不同的声道模式</td>
140    </tr>
141    <tr>
142        <td>GetChannelMode</td>
143        <td>获取设置的声道模式</td>
144    </tr>
145    <tr>
146        <td>GetFrameSize</td>
147        <td>与SetSampleAttributes组合测试</td>
148    </tr>
149    <tr>
150        <td>GetFrameCount</td>
151        <td>与SetSampleAttributes组合测试</td>
152    </tr>
153    <tr>
154        <td>GetMmapPosition</td>
155        <td>与SetSampleAttributes组合测试</td>
156    </tr>
157    <tr>
158        <td>GetCurrentChannelId</td>
159        <td>与SetSampleAttributes组合测试</td>
160    </tr>
161    <tr>
162        <td>GetRenderPosition</td>
163        <td>与SetSampleAttributes组合测试</td>
164    </tr>
165<table>
166
167###### 1.2.1.2 LIB层非通用(硬件耦合)测试用例
168LIB层存在硬件耦合接口:为音量,增益,场景切换相关接口。
1691. 调用lib接口获取硬件的音量范围、增益范围,并校验。
1702. 调用lib接口设置不同的音量或增益,超出范围便会失败。
1713. 调用lib接口设置不同的通路进行场景切换。
172
173以上接口调用返回结果均与硬件相关,不同硬件默认的范围、通路不同,测试用例需根据硬件适配。
174<table width="100%" border="0">
175<caption>非通用测试用例接口列表</caption>
176    <tr>
177        <th width="20%" align="center">所属类</th>
178        <th align="center" width="50%">命令码</th>
179        <th width="30%" align="center">说明</th>
180    </tr>
181    <tr>
182        <td width="20%" rowspan ="7">capture</td>
183        <td width="50%"> AUDIODRV_CTL_IOCTL_GAINTHRESHOLD_CAPTURE</td>
184        <td width="30%">获取增益阈值</td>
185    </tr>
186    <tr>
187        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE_CAPTURE</td>
188        <td>设置增益</td>
189    </tr>
190    <tr>
191        <td>AUDIODRV_CTL_IOCTL_GAIN_READ_CAPTURE</td>
192        <td>获取增益</td>
193    </tr>
194    <tr>
195        <td>AUDIODRV_CTL_IOCTL_SCENESELECT_CAPTURE</td>
196        <td>场景切换</td>
197    </tr>
198    <tr>
199        <td>AUDIODRV_CTL_IOCTL_VOL_THRESHOLD_CAPTURE</td>
200        <td>获取音量阈值</td>
201    </tr>
202    <tr>
203        <td>AUDIODRV_CTL_IOCTL_ELEM_WRITE_CAPTURE</td>
204        <td>设置音量</td>
205    </tr>
206    <tr>
207        <td>AUDIODRV_CTL_IOCTL_ELEM_READ_CAPTURE</td>
208        <td>获取音量</td>
209    </tr>
210    <tr>
211        <td width="20%" rowspan ="7">render</td>
212        <td width="50%">AUDIODRV_CTL_IOCTL_GAINTHRESHOLD</td>
213        <td width="30%">获取增益阈值</td>
214    </tr>
215    <tr>
216        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE</td>
217        <td>设置增益</td>
218    </tr>
219    <tr>
220        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE</td>
221        <td>获取增益</td>
222    </tr>
223    <tr>
224        <td>AUDIODRV_CTL_IOCTL_SCENESELECT</td>
225        <td>场景切换</td>
226    </tr>
227    <tr>
228        <td>AUDIODRV_CTL_IOCTL_VOL_THRESHOLD</td>
229        <td>获取音量阈值</td>
230    </tr>
231    <tr>
232        <td>AUDIODRV_CTL_IOCTL_ELEM_WRITE</td>
233        <td>设置音量</td>
234    </tr>
235    <tr>
236        <td>AUDIODRV_CTL_IOCTL_ELEM_READ</td>
237        <td>获取音量</td>
238    </tr>
239<table>
240
241##### 1.2.2 ALSA模式测试用例
242音频驱动模型为支持南向生态厂商快速接入鸿蒙、支持快速产品化而提供的“ALSA兼容方案”,采用插件化的适配器模式通过alsa-lib对接ALSA。当采用“ALSA兼容方案”时,需编译ALSA模式测试用例。测试用例分为两部分:
243
2441.	LIB层接口测试用例
245</br>ALSA模式LIB层测试用例为alsa-lib接口测试用例,存放在supportlis/common目录下,与adm_interface_lib测试用例同一目录下的不同测试套文件,在编译文件内配置选择编译目标。
246  ````bash
247  ohos_systemtest("hdf_audio_lib_capture_test") {
248    module_out_path = module_output_path
249    sources = [
250      "../../../common/hdi_common/src/audio_hdi_common.cpp",
251      "../../../common/lib_common/src/audio_lib_common.cpp",
252    ]
253    #drivers_peripheral_audio_feature_alsa_lib
254    if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
255      sources += ["src/audio_alsa_libcapture_test.cpp"]
256    }else {
257      sources += ["src/audio_libcapture_test.cpp"]
258    }
259  ````
2602.	UHDF层接口测试用例
261</br>ALSA模式UHDF层测试用例与ADM模式共用一套测试用例,ALSA模式部分hdi接口未适配,在测试代码中使用宏区分。
262<table width="100%" border="0">
263<caption>ALSA未适配hdi接口列表</caption>
264    <thead>
265    <tr>
266        <th width="20%" align="center">所属类</th>
267        <th width="40%" align="center">接口</th>
268        <th width="40%" align="center">说明</th>
269    </tr>
270    </thead>
271    <tbody>
272    <tr>
273        <td width="20%" rowspan ="6">capture</td>
274        <td width="40%">Flush</td>
275        <td width="40%">刷新</td>
276    </tr>
277    <tr>
278        <td>CheckSceneCapability</td>
279        <td>查询场景支持能力</td>
280    </tr>
281    <tr>
282        <td>SelectScene</td>
283        <td>选择场景</td>
284    </tr>
285    <tr>
286        <td>GetGainThreshold</td>
287        <td>获取增益阈值</td>
288    </tr>
289    <tr>
290        <td>GetGain</td>
291        <td>获取增益</td>
292    </tr>
293    <tr>
294        <td>SetGain</td>
295        <td>设置增益</td>
296    </tr>
297    <tr>
298        <td width="20%" rowspan ="8">render</td>
299        <td width="40%">SetRenderSpeed</td>
300        <td width="40%">设置播放速度</td>
301    </tr>
302    <tr>
303        <td>GetRenderSpeed</td>
304        <td>获取播放速度</td>
305    </tr>
306    <tr>
307        <td>SetChannelMode</td>
308        <td>设置声道模式</td>
309    </tr>
310    <tr>
311        <td>GetChannelMode</td>
312        <td>获取声道模式</td>
313    </tr>
314    <tr>
315        <td>Flush</td>
316        <td>刷新</td>
317    </tr>
318    <tr>
319        <td>GetGainThreshold</td>
320        <td>获取增益阈值</td>
321    </tr>
322    <tr>
323        <td>GetGain</td>
324        <td>获取增益</td>
325    </tr>
326    <tr>
327        <td>SetGain</td>
328        <td>设置增益</td>
329    </tr>
330    </tbody>
331<table>
332
333  ````bash
334    #gn内添加编译宏ALSA_LIB_MODE用于区分测试用例
335    if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
336      defines += [ "ALSA_LIB_MODE" ]
337    }
338    #测试用例代码内使用示例
339    ret = render->attr.SetSampleAttributes(render, &attrs2);
340#ifdef ALSA_LIB_MODE
341    EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
342#else
343    EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
344#endif
345  ````
346<b>注:编译ALSA测试用例是需要设置ALSA编译选项,由drivers_peripheral_audio_feature_alsa_lib编译选项控制,当"drivers_peripheral_audio_feature_alsa_lib = true"表示编译ALSA模式测试用例,编译配置文件路径为./drivers/peripheral/audio/audio.gni文件内。</b>
347##### 1.2.3 录音阈值上报测试用例
348
349  码云上音频驱动模型默认不编译录音阈值上报功能代码,因此该功能对应的测试套(hdf_audio_threshold_report_test)默认不编译,如需编译需要手动修改gn文件,去掉“#”字符注释。gn文件路径为./audio_function/BUILD.gn
350```bash
351group("function") {
352  if (!defined(ohos_lite)) {
353    testonly = true
354  }
355  deps = [ "audio_server:hdf_audio_hdi_server_function_test" ]
356  if (defined(ohos_lite)) {
357    deps += [
358      "audio_pathroute:hdf_audio_hdi_path_route_test",
359      "audio_smartpa:hdf_audio_smartpa_test",
360    ]
361  } else {
362    #deps += [ "audio_threshold_report:hdf_audio_threshold_report_test" ] #录音阈值上报测试套
363  ....
364```
365### 2. 适用版本
366当前测试用例适用码云mater主仓音频驱动模型版本。
367
368### 3. 适用平台(已适配的SOC)
369  目前已适配开发板如下:
3701.	rk3568
3712.	Hi3516DV300
372
373### 4. 使用方法
374#### 4.1 用例编译
375注:以下目录均以Openharmony代码根目录为根目录
376
3771.	测试用例模式修改
378</br>音频驱动模型UHDF层支持binder模式和passthrough模式,因此针对不同的模式需要编译对应的测试用例,测试用的模式通过修改编译选项控制,编译配置文件路径为<b>“/drivers/peripheral/audio/audio.gni”</b>。编译选项为<b>“true”</b>表示编译;为<b>“false”</b>表示不编译,两种模式测试用例一次只能编译其中一种。
379
380<table width="100%" border="0">
381<caption></caption>
382    <tr>
383        <th width="25%" align="center">编译选项</th>
384        <th width="25%" align="center">含义</th>
385        <th width="25%" align="center">值</th>
386        <th width="25%" align="center">备注</th>
387    </tr>
388    <tr>
389        <td width="25%">enable_audio_adm_so</td>
390        <td width="25%">passthrough模式</td>
391        <td width="25%">true/false</td>
392        <td width="25%">默认不编译(false)</td>
393    </tr>
394    <tr>
395        <td>enable_audio_adm_service</td>
396        <td>binder模式</td>
397        <td>true/false</td>
398        <td>默认编译(true)</td>
399    </tr>
400</table>
401
4022.  测试用例编译命令
403在根目录下输入命令:
404  ```bash
405  ./build.sh --product-name  XXX  --build-target drivers/peripheral/audio/test/systemtest
406  ```
407“XXX”为产品名,如编译rk3568开发板测试用例,输入如下命令:
408```bash
409./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/systemtest
410```
4113. 测试用例输出目录
412
413以rk3568为例,输出目录为:
414```bash
415./out/rk3568/tests/systemtest/drivers_peripheral_audio/audio
416```
417#### 4.2 测试套及资源文件推送(手动执行)
4181. 测试用例执行依赖文件推送
419
420Render相关测试用例执行需要推送audiorendertest.wavlowlatencyrendertest.wav两个音频文件,音频文件路径为drivers/peripheral/audio/test/resource/。推动至开发板”/data/test”目录下,具体哪些用例需要推送音频文件可查看drivers/peripheral/audio/test/resource/ohos_test.xml,在cmd窗口输入命令:
421```bash
422hdc shll mkdir /data/test
423hdc file send XXX[本地路径]/audiorendertest.wav  /data/test
424hdc file send XXX[本地路径]/lowlatencyrendertest.wav  /data/test
425```
426
4272. 测试用例推送
428
429测试用例使用hdc推送至开发板,在cmd窗口输入命令:
430```bash
431hdc file send XXX[本地路径]/hdf_audio_hdi_manager_test  /data/test
432```
433
434#### 4.3 测试用例执行(手动执行)
435
4361. 进入单板
437通过hdc进入开发板,在cmd窗口输入命令
438 ```bash
439  hdc shell
440 ```
441
4422. 修改测试用例权限及执行
443进入/data/test目录,输入命令
444```bash
445cd /data/test                 #进入data目录
446chmod  +x “测试套名称"   #更改测试套权限
447./测试套                 #执行测试套
448```
449测试用例执行示例
450````bash
451# chmod +x hdf_audio_hdi_manager_test
452# ./hdf_audio_hdi_manager_test
453Running main() from gmock_main.cc
454[==========] Running 4 tests from 1 test case.
455[----------] Global test environment set-up.
456[----------] 4 tests from AudioHdiManagerTest
457[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001
458[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001 (1 ms)
459[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002
460[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002 (0 ms)
461[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003
462[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003 (0 ms)
463[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004
464[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004 (1 ms)
465[----------] 4 tests from AudioHdiManagerTest (2 ms total)
466
467[----------] Global test environment tear-down
468Gtest xml output finished
469[==========] 4 tests from 1 test case ran. (4 ms total)
470[  PASSED  ] 4 tests.
471````