1094332d3Sopenharmony_ci- [HDF Audio系统测试用例使用指南](#hdf-audio系统测试用例使用指南)
2094332d3Sopenharmony_ci  - [1. 简介](#1-简介)
3094332d3Sopenharmony_ci    - [1.1 目录结构](#11-目录结构)
4094332d3Sopenharmony_ci    - [1.2 特殊用例说明](#12-特殊用例说明)
5094332d3Sopenharmony_ci      - [1.2.1 硬件耦合相关测试用例](#121-硬件耦合相关测试用例)
6094332d3Sopenharmony_ci        - [1.2.1.1 UHDF层非通用(硬件耦合)测试用例](#1211-uhdf层非通用硬件耦合测试用例)
7094332d3Sopenharmony_ci        - [1.2.1.2 LIB层非通用(硬件耦合)测试用例](#1212-lib层非通用硬件耦合测试用例)
8094332d3Sopenharmony_ci      - [1.2.2 ALSA模式测试用例](#122-alsa模式测试用例)
9094332d3Sopenharmony_ci      - [1.2.3 录音阈值上报测试用例](#123-录音阈值上报测试用例)
10094332d3Sopenharmony_ci  - [2. 适用版本](#2-适用版本)
11094332d3Sopenharmony_ci  - [3. 适用平台(已适配的SOC)](#3-适用平台已适配的soc)
12094332d3Sopenharmony_ci  - [4. 使用方法](#4-使用方法)
13094332d3Sopenharmony_ci    - [4.1 用例编译](#41-用例编译)
14094332d3Sopenharmony_ci    - [4.2 测试套及资源文件推送](#42-测试套及资源文件推送)
15094332d3Sopenharmony_ci    - [4.3 测试用例执行(手动执行)](#43-测试用例执行手动执行)
16094332d3Sopenharmony_ci
17094332d3Sopenharmony_ci## HDF Audio系统测试用例使用指南
18094332d3Sopenharmony_ci### 1. 简介
19094332d3Sopenharmony_ci
20094332d3Sopenharmony_ci本使用指南主要说明音频驱动模型对外接口测试用例,并根据测试内容划分不同目录。包含以下内容:
21094332d3Sopenharmony_ci
22094332d3Sopenharmony_ci- ADM对外接口测试用例
23094332d3Sopenharmony_ci- UHDF层接口测试用例
24094332d3Sopenharmony_ci- LIB层接口测试用例
25094332d3Sopenharmony_ci- 功能测试用例
26094332d3Sopenharmony_ci
27094332d3Sopenharmony_ci#### 1.1 目录结构
28094332d3Sopenharmony_ci
29094332d3Sopenharmony_ci
30094332d3Sopenharmony_ci测试用例路径:drivers/peripheral/audio/test/systemtest
31094332d3Sopenharmony_ci
32094332d3Sopenharmony_ci目录结构如下:
33094332d3Sopenharmony_ci
34094332d3Sopenharmony_ci```bash
35094332d3Sopenharmony_ci|-- common          #测试用例公共函数
36094332d3Sopenharmony_ci|   |-- adm_common                 #ADM层测试用例公共函数
37094332d3Sopenharmony_ci|   |-- hdi_common                 #UHDF层测试用例公共函数
38094332d3Sopenharmony_ci|   |-- hdi_service_common         #IDL UHDF层测试用例公共函数
39094332d3Sopenharmony_ci|   |-- lib_common                 #LIB层测试用例公共函数
40094332d3Sopenharmony_ci|-- audio_adapter   #声卡测试用例
41094332d3Sopenharmony_ci|   |-- audio_usb                  #USB声卡测试用例
42094332d3Sopenharmony_ci|-- audio_function  #功能测试用例
43094332d3Sopenharmony_ci|   |-- audio_loadadapter_report   #加载声卡成功上报测试用例
44094332d3Sopenharmony_ci|   |-- audio_multi_mic_spk        #多mic、多speaker测试用例
45094332d3Sopenharmony_ci|   |-- audio_pathroute            #通路选择测试用例
46094332d3Sopenharmony_ci|   |-- audio_server               #hdi接口功能测试用例(播放、录音)
47094332d3Sopenharmony_ci|   |-- audio_smartpa              #外置声卡测试用例
48094332d3Sopenharmony_ci|   |-- audio_threshold_report     #阈值上报测试用例
49094332d3Sopenharmony_ci|-- adm             #ADM层接口测试用例
50094332d3Sopenharmony_ci|   |-- audio_adm_interface        #adm对外接口测试用例
51094332d3Sopenharmony_ci|-- hdi             #UHDF层接口测试用例
52094332d3Sopenharmony_ci|   |-- common                     #hdi接口通用测试用例 
53094332d3Sopenharmony_ci|   |   |-- adapter
54094332d3Sopenharmony_ci|   |   |-- capture
55094332d3Sopenharmony_ci|   |   |-- manager
56094332d3Sopenharmony_ci|   |   |-- render
57094332d3Sopenharmony_ci|   |-- hardwaredependence         #hdi接口非通用测试用例(硬件耦合)
58094332d3Sopenharmony_ci|   |   |-- capture
59094332d3Sopenharmony_ci|   |   |-- render
60094332d3Sopenharmony_ci|   |-- hdiperformace              #hdi接口时延测试用例
61094332d3Sopenharmony_ci|   |-- hdireliability             #hdi接口可靠性测试用例
62094332d3Sopenharmony_ci|-- hdi_service     #UHDF层idl化接口测试用例
63094332d3Sopenharmony_ci|   |-- common                     #idl化hdi接口通用测试用例 
64094332d3Sopenharmony_ci|   |   |-- adapter
65094332d3Sopenharmony_ci|   |   |-- capture
66094332d3Sopenharmony_ci|   |   |-- manager
67094332d3Sopenharmony_ci|   |   |-- render
68094332d3Sopenharmony_ci|   |-- hardwaredependence         #idl化hdi接口非通用测试用例(硬件耦合)
69094332d3Sopenharmony_ci|   |   |-- capture
70094332d3Sopenharmony_ci|   |   |-- render
71094332d3Sopenharmony_ci|   |-- hdiperformace              #idl化hdi接口时延测试用例
72094332d3Sopenharmony_ci|-- supportlibs     #LIB层接口测试用例(包含adm lib和alsa lib接口测试用例)
73094332d3Sopenharmony_ci        |-- common                 #lib接口通用测试用例
74094332d3Sopenharmony_ci        |   |-- capture
75094332d3Sopenharmony_ci        |   |-- render
76094332d3Sopenharmony_ci        |-- hardwaredependence     #lib接口非通用测试用例(硬件耦合)
77094332d3Sopenharmony_ci            |-- capture
78094332d3Sopenharmony_ci            |-- render
79094332d3Sopenharmony_ci```
80094332d3Sopenharmony_ci
81094332d3Sopenharmony_ci#### 1.2 特殊用例说明
82094332d3Sopenharmony_ci##### 1.2.1 硬件耦合相关测试用例
83094332d3Sopenharmony_ci由于音频驱动模型对外接口的部分接口参数与硬件能力有耦合,此类用例与硬件耦合,导致无法作为通用用例。在移植过程中及门禁用例提取过程中,需要特别关注。
84094332d3Sopenharmony_ci
85094332d3Sopenharmony_ci###### 1.2.1.1 UHDF层非通用(硬件耦合)测试用例
86094332d3Sopenharmony_ciUHDF层存在硬件耦合接口,如:SetSampleAttributes、SetChannelMode等。
87094332d3Sopenharmony_ci1. SetSampleAttributes接口测试用例中设置参数时会设置不同的“位宽、采样率、声道数”等与硬件相关的参数。
88094332d3Sopenharmony_ci2. SetChannelMode 接口测试用例中设置声道模式时会设置不同的模式,声道模式的支持与硬件相关。
89094332d3Sopenharmony_ci
90094332d3Sopenharmony_ci硬件不支持,接口会返回失败;硬件支持,接口返回成功。因此不同的开发板会出现不同的结果,在移植测试用例的过程中需要根据硬件的情况进行适配。
91094332d3Sopenharmony_ci
92094332d3Sopenharmony_ci<table width="100%" border="0">
93094332d3Sopenharmony_ci<caption>非通用测试用例接口列表</caption>
94094332d3Sopenharmony_ci    <tr>
95094332d3Sopenharmony_ci        <th width="20%" align="center">所属类</th>
96094332d3Sopenharmony_ci        <th align="center" width="30%">接口名</th>
97094332d3Sopenharmony_ci        <th width="50%" align="center">说明</th>
98094332d3Sopenharmony_ci    </tr>
99094332d3Sopenharmony_ci    <tr>
100094332d3Sopenharmony_ci        <td width="20%" rowspan ="7">capture</td>
101094332d3Sopenharmony_ci        <td width="30%">SetSampleAttributes</td>
102094332d3Sopenharmony_ci        <td width="50%">遍历设置不同的硬件参数</td>
103094332d3Sopenharmony_ci    </tr>
104094332d3Sopenharmony_ci    <tr>
105094332d3Sopenharmony_ci        <td>GetSampleAttributes</td>
106094332d3Sopenharmony_ci        <td>获取设置的硬件参数</td>
107094332d3Sopenharmony_ci    </tr>
108094332d3Sopenharmony_ci    <tr>
109094332d3Sopenharmony_ci        <td>GetFrameSize</td>
110094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
111094332d3Sopenharmony_ci    </tr>
112094332d3Sopenharmony_ci    <tr>
113094332d3Sopenharmony_ci        <td>GetFrameCount</td>
114094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
115094332d3Sopenharmony_ci    </tr>
116094332d3Sopenharmony_ci    <tr>
117094332d3Sopenharmony_ci        <td>GetMmapPosition</td>
118094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
119094332d3Sopenharmony_ci    </tr>
120094332d3Sopenharmony_ci    <tr>
121094332d3Sopenharmony_ci        <td>GetCurrentChannelId</td>
122094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
123094332d3Sopenharmony_ci    </tr>
124094332d3Sopenharmony_ci    <tr>
125094332d3Sopenharmony_ci        <td>GetCapturePosition</td>
126094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
127094332d3Sopenharmony_ci    </tr>
128094332d3Sopenharmony_ci    <tr>
129094332d3Sopenharmony_ci        <td width="20%" rowspan ="9">render</td>
130094332d3Sopenharmony_ci        <td width="30%">SetSampleAttributes</td>
131094332d3Sopenharmony_ci        <td width="50%">遍历设置不同的硬件参数</td>
132094332d3Sopenharmony_ci    </tr>
133094332d3Sopenharmony_ci    <tr>
134094332d3Sopenharmony_ci        <td>GetSampleAttributes</td>
135094332d3Sopenharmony_ci        <td>获取设置的硬件参数</td>
136094332d3Sopenharmony_ci    </tr>
137094332d3Sopenharmony_ci    <tr>
138094332d3Sopenharmony_ci        <td>SetChannelMode</td>
139094332d3Sopenharmony_ci        <td>遍历设置不同的声道模式</td>
140094332d3Sopenharmony_ci    </tr>
141094332d3Sopenharmony_ci    <tr>
142094332d3Sopenharmony_ci        <td>GetChannelMode</td>
143094332d3Sopenharmony_ci        <td>获取设置的声道模式</td>
144094332d3Sopenharmony_ci    </tr>
145094332d3Sopenharmony_ci    <tr>
146094332d3Sopenharmony_ci        <td>GetFrameSize</td>
147094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
148094332d3Sopenharmony_ci    </tr>
149094332d3Sopenharmony_ci    <tr>
150094332d3Sopenharmony_ci        <td>GetFrameCount</td>
151094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
152094332d3Sopenharmony_ci    </tr>
153094332d3Sopenharmony_ci    <tr>
154094332d3Sopenharmony_ci        <td>GetMmapPosition</td>
155094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
156094332d3Sopenharmony_ci    </tr>
157094332d3Sopenharmony_ci    <tr>
158094332d3Sopenharmony_ci        <td>GetCurrentChannelId</td>
159094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
160094332d3Sopenharmony_ci    </tr>
161094332d3Sopenharmony_ci    <tr>
162094332d3Sopenharmony_ci        <td>GetRenderPosition</td>
163094332d3Sopenharmony_ci        <td>与SetSampleAttributes组合测试</td>
164094332d3Sopenharmony_ci    </tr>
165094332d3Sopenharmony_ci<table>
166094332d3Sopenharmony_ci
167094332d3Sopenharmony_ci###### 1.2.1.2 LIB层非通用(硬件耦合)测试用例
168094332d3Sopenharmony_ciLIB层存在硬件耦合接口:为音量,增益,场景切换相关接口。
169094332d3Sopenharmony_ci1. 调用lib接口获取硬件的音量范围、增益范围,并校验。
170094332d3Sopenharmony_ci2. 调用lib接口设置不同的音量或增益,超出范围便会失败。
171094332d3Sopenharmony_ci3. 调用lib接口设置不同的通路进行场景切换。
172094332d3Sopenharmony_ci
173094332d3Sopenharmony_ci以上接口调用返回结果均与硬件相关,不同硬件默认的范围、通路不同,测试用例需根据硬件适配。
174094332d3Sopenharmony_ci<table width="100%" border="0">
175094332d3Sopenharmony_ci<caption>非通用测试用例接口列表</caption>
176094332d3Sopenharmony_ci    <tr>
177094332d3Sopenharmony_ci        <th width="20%" align="center">所属类</th>
178094332d3Sopenharmony_ci        <th align="center" width="50%">命令码</th>
179094332d3Sopenharmony_ci        <th width="30%" align="center">说明</th>
180094332d3Sopenharmony_ci    </tr>
181094332d3Sopenharmony_ci    <tr>
182094332d3Sopenharmony_ci        <td width="20%" rowspan ="7">capture</td>
183094332d3Sopenharmony_ci        <td width="50%"> AUDIODRV_CTL_IOCTL_GAINTHRESHOLD_CAPTURE</td>
184094332d3Sopenharmony_ci        <td width="30%">获取增益阈值</td>
185094332d3Sopenharmony_ci    </tr>
186094332d3Sopenharmony_ci    <tr>
187094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE_CAPTURE</td>
188094332d3Sopenharmony_ci        <td>设置增益</td>
189094332d3Sopenharmony_ci    </tr>
190094332d3Sopenharmony_ci    <tr>
191094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_GAIN_READ_CAPTURE</td>
192094332d3Sopenharmony_ci        <td>获取增益</td>
193094332d3Sopenharmony_ci    </tr>
194094332d3Sopenharmony_ci    <tr>
195094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_SCENESELECT_CAPTURE</td>
196094332d3Sopenharmony_ci        <td>场景切换</td>
197094332d3Sopenharmony_ci    </tr>
198094332d3Sopenharmony_ci    <tr>
199094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_VOL_THRESHOLD_CAPTURE</td>
200094332d3Sopenharmony_ci        <td>获取音量阈值</td>
201094332d3Sopenharmony_ci    </tr>
202094332d3Sopenharmony_ci    <tr>
203094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_ELEM_WRITE_CAPTURE</td>
204094332d3Sopenharmony_ci        <td>设置音量</td>
205094332d3Sopenharmony_ci    </tr>
206094332d3Sopenharmony_ci    <tr>
207094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_ELEM_READ_CAPTURE</td>
208094332d3Sopenharmony_ci        <td>获取音量</td>
209094332d3Sopenharmony_ci    </tr>
210094332d3Sopenharmony_ci    <tr>
211094332d3Sopenharmony_ci        <td width="20%" rowspan ="7">render</td>
212094332d3Sopenharmony_ci        <td width="50%">AUDIODRV_CTL_IOCTL_GAINTHRESHOLD</td>
213094332d3Sopenharmony_ci        <td width="30%">获取增益阈值</td>
214094332d3Sopenharmony_ci    </tr>
215094332d3Sopenharmony_ci    <tr>
216094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE</td>
217094332d3Sopenharmony_ci        <td>设置增益</td>
218094332d3Sopenharmony_ci    </tr>
219094332d3Sopenharmony_ci    <tr>
220094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_GAIN_WRITE</td>
221094332d3Sopenharmony_ci        <td>获取增益</td>
222094332d3Sopenharmony_ci    </tr>
223094332d3Sopenharmony_ci    <tr>
224094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_SCENESELECT</td>
225094332d3Sopenharmony_ci        <td>场景切换</td>
226094332d3Sopenharmony_ci    </tr>
227094332d3Sopenharmony_ci    <tr>
228094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_VOL_THRESHOLD</td>
229094332d3Sopenharmony_ci        <td>获取音量阈值</td>
230094332d3Sopenharmony_ci    </tr>
231094332d3Sopenharmony_ci    <tr>
232094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_ELEM_WRITE</td>
233094332d3Sopenharmony_ci        <td>设置音量</td>
234094332d3Sopenharmony_ci    </tr>
235094332d3Sopenharmony_ci    <tr>
236094332d3Sopenharmony_ci        <td>AUDIODRV_CTL_IOCTL_ELEM_READ</td>
237094332d3Sopenharmony_ci        <td>获取音量</td>
238094332d3Sopenharmony_ci    </tr>
239094332d3Sopenharmony_ci<table>
240094332d3Sopenharmony_ci
241094332d3Sopenharmony_ci##### 1.2.2 ALSA模式测试用例
242094332d3Sopenharmony_ci音频驱动模型为支持南向生态厂商快速接入鸿蒙、支持快速产品化而提供的“ALSA兼容方案”,采用插件化的适配器模式通过alsa-lib对接ALSA。当采用“ALSA兼容方案”时,需编译ALSA模式测试用例。测试用例分为两部分:
243094332d3Sopenharmony_ci
244094332d3Sopenharmony_ci1.	LIB层接口测试用例
245094332d3Sopenharmony_ci</br>ALSA模式LIB层测试用例为alsa-lib接口测试用例,存放在supportlis/common目录下,与adm_interface_lib测试用例同一目录下的不同测试套文件,在编译文件内配置选择编译目标。
246094332d3Sopenharmony_ci  ````bash 
247094332d3Sopenharmony_ci  ohos_systemtest("hdf_audio_lib_capture_test") {
248094332d3Sopenharmony_ci    module_out_path = module_output_path
249094332d3Sopenharmony_ci    sources = [
250094332d3Sopenharmony_ci      "../../../common/hdi_common/src/audio_hdi_common.cpp",
251094332d3Sopenharmony_ci      "../../../common/lib_common/src/audio_lib_common.cpp",
252094332d3Sopenharmony_ci    ]
253094332d3Sopenharmony_ci    #drivers_peripheral_audio_feature_alsa_lib
254094332d3Sopenharmony_ci    if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
255094332d3Sopenharmony_ci      sources += ["src/audio_alsa_libcapture_test.cpp"]
256094332d3Sopenharmony_ci    }else {
257094332d3Sopenharmony_ci      sources += ["src/audio_libcapture_test.cpp"]
258094332d3Sopenharmony_ci    }
259094332d3Sopenharmony_ci  ````
260094332d3Sopenharmony_ci2.	UHDF层接口测试用例
261094332d3Sopenharmony_ci</br>ALSA模式UHDF层测试用例与ADM模式共用一套测试用例,ALSA模式部分hdi接口未适配,在测试代码中使用宏区分。
262094332d3Sopenharmony_ci<table width="100%" border="0">
263094332d3Sopenharmony_ci<caption>ALSA未适配hdi接口列表</caption>
264094332d3Sopenharmony_ci    <thead>
265094332d3Sopenharmony_ci    <tr>
266094332d3Sopenharmony_ci        <th width="20%" align="center">所属类</th>
267094332d3Sopenharmony_ci        <th width="40%" align="center">接口</th>
268094332d3Sopenharmony_ci        <th width="40%" align="center">说明</th>
269094332d3Sopenharmony_ci    </tr>
270094332d3Sopenharmony_ci    </thead>
271094332d3Sopenharmony_ci    <tbody>
272094332d3Sopenharmony_ci    <tr>
273094332d3Sopenharmony_ci        <td width="20%" rowspan ="6">capture</td>
274094332d3Sopenharmony_ci        <td width="40%">Flush</td>
275094332d3Sopenharmony_ci        <td width="40%">刷新</td>
276094332d3Sopenharmony_ci    </tr>
277094332d3Sopenharmony_ci    <tr>
278094332d3Sopenharmony_ci        <td>CheckSceneCapability</td>
279094332d3Sopenharmony_ci        <td>查询场景支持能力</td>
280094332d3Sopenharmony_ci    </tr>
281094332d3Sopenharmony_ci    <tr>
282094332d3Sopenharmony_ci        <td>SelectScene</td>
283094332d3Sopenharmony_ci        <td>选择场景</td>
284094332d3Sopenharmony_ci    </tr>
285094332d3Sopenharmony_ci    <tr>
286094332d3Sopenharmony_ci        <td>GetGainThreshold</td>
287094332d3Sopenharmony_ci        <td>获取增益阈值</td>
288094332d3Sopenharmony_ci    </tr>
289094332d3Sopenharmony_ci    <tr>
290094332d3Sopenharmony_ci        <td>GetGain</td>
291094332d3Sopenharmony_ci        <td>获取增益</td>
292094332d3Sopenharmony_ci    </tr>
293094332d3Sopenharmony_ci    <tr>
294094332d3Sopenharmony_ci        <td>SetGain</td>
295094332d3Sopenharmony_ci        <td>设置增益</td>
296094332d3Sopenharmony_ci    </tr>
297094332d3Sopenharmony_ci    <tr>
298094332d3Sopenharmony_ci        <td width="20%" rowspan ="8">render</td>
299094332d3Sopenharmony_ci        <td width="40%">SetRenderSpeed</td>
300094332d3Sopenharmony_ci        <td width="40%">设置播放速度</td>
301094332d3Sopenharmony_ci    </tr>
302094332d3Sopenharmony_ci    <tr>
303094332d3Sopenharmony_ci        <td>GetRenderSpeed</td>
304094332d3Sopenharmony_ci        <td>获取播放速度</td>
305094332d3Sopenharmony_ci    </tr>
306094332d3Sopenharmony_ci    <tr>
307094332d3Sopenharmony_ci        <td>SetChannelMode</td>
308094332d3Sopenharmony_ci        <td>设置声道模式</td>
309094332d3Sopenharmony_ci    </tr>
310094332d3Sopenharmony_ci    <tr>
311094332d3Sopenharmony_ci        <td>GetChannelMode</td>
312094332d3Sopenharmony_ci        <td>获取声道模式</td>
313094332d3Sopenharmony_ci    </tr>
314094332d3Sopenharmony_ci    <tr>
315094332d3Sopenharmony_ci        <td>Flush</td>
316094332d3Sopenharmony_ci        <td>刷新</td>
317094332d3Sopenharmony_ci    </tr>
318094332d3Sopenharmony_ci    <tr>
319094332d3Sopenharmony_ci        <td>GetGainThreshold</td>
320094332d3Sopenharmony_ci        <td>获取增益阈值</td>
321094332d3Sopenharmony_ci    </tr>
322094332d3Sopenharmony_ci    <tr>
323094332d3Sopenharmony_ci        <td>GetGain</td>
324094332d3Sopenharmony_ci        <td>获取增益</td>
325094332d3Sopenharmony_ci    </tr>
326094332d3Sopenharmony_ci    <tr>
327094332d3Sopenharmony_ci        <td>SetGain</td>
328094332d3Sopenharmony_ci        <td>设置增益</td>
329094332d3Sopenharmony_ci    </tr>
330094332d3Sopenharmony_ci    </tbody>
331094332d3Sopenharmony_ci<table>
332094332d3Sopenharmony_ci
333094332d3Sopenharmony_ci  ````bash 
334094332d3Sopenharmony_ci    #gn内添加编译宏ALSA_LIB_MODE用于区分测试用例
335094332d3Sopenharmony_ci    if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
336094332d3Sopenharmony_ci      defines += [ "ALSA_LIB_MODE" ]
337094332d3Sopenharmony_ci    }
338094332d3Sopenharmony_ci    #测试用例代码内使用示例
339094332d3Sopenharmony_ci    ret = render->attr.SetSampleAttributes(render, &attrs2);
340094332d3Sopenharmony_ci#ifdef ALSA_LIB_MODE
341094332d3Sopenharmony_ci    EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
342094332d3Sopenharmony_ci#else
343094332d3Sopenharmony_ci    EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
344094332d3Sopenharmony_ci#endif
345094332d3Sopenharmony_ci  ````
346094332d3Sopenharmony_ci<b>注:编译ALSA测试用例是需要设置ALSA编译选项,由drivers_peripheral_audio_feature_alsa_lib编译选项控制,当"drivers_peripheral_audio_feature_alsa_lib = true"表示编译ALSA模式测试用例,编译配置文件路径为./drivers/peripheral/audio/audio.gni文件内。</b>
347094332d3Sopenharmony_ci##### 1.2.3 录音阈值上报测试用例
348094332d3Sopenharmony_ci
349094332d3Sopenharmony_ci  码云上音频驱动模型默认不编译录音阈值上报功能代码,因此该功能对应的测试套(hdf_audio_threshold_report_test)默认不编译,如需编译需要手动修改gn文件,去掉“#”字符注释。gn文件路径为./audio_function/BUILD.gn
350094332d3Sopenharmony_ci```bash
351094332d3Sopenharmony_cigroup("function") {
352094332d3Sopenharmony_ci  if (!defined(ohos_lite)) {
353094332d3Sopenharmony_ci    testonly = true
354094332d3Sopenharmony_ci  }
355094332d3Sopenharmony_ci  deps = [ "audio_server:hdf_audio_hdi_server_function_test" ]
356094332d3Sopenharmony_ci  if (defined(ohos_lite)) {
357094332d3Sopenharmony_ci    deps += [
358094332d3Sopenharmony_ci      "audio_pathroute:hdf_audio_hdi_path_route_test",
359094332d3Sopenharmony_ci      "audio_smartpa:hdf_audio_smartpa_test",
360094332d3Sopenharmony_ci    ]
361094332d3Sopenharmony_ci  } else {
362094332d3Sopenharmony_ci    #deps += [ "audio_threshold_report:hdf_audio_threshold_report_test" ] #录音阈值上报测试套
363094332d3Sopenharmony_ci  ....
364094332d3Sopenharmony_ci```
365094332d3Sopenharmony_ci### 2. 适用版本
366094332d3Sopenharmony_ci当前测试用例适用码云mater主仓音频驱动模型版本。
367094332d3Sopenharmony_ci
368094332d3Sopenharmony_ci### 3. 适用平台(已适配的SOC)
369094332d3Sopenharmony_ci  目前已适配开发板如下:
370094332d3Sopenharmony_ci1.	rk3568
371094332d3Sopenharmony_ci2.	Hi3516DV300
372094332d3Sopenharmony_ci
373094332d3Sopenharmony_ci### 4. 使用方法
374094332d3Sopenharmony_ci#### 4.1 用例编译
375094332d3Sopenharmony_ci注:以下目录均以Openharmony代码根目录为根目录
376094332d3Sopenharmony_ci
377094332d3Sopenharmony_ci1.	测试用例模式修改
378094332d3Sopenharmony_ci</br>音频驱动模型UHDF层支持binder模式和passthrough模式,因此针对不同的模式需要编译对应的测试用例,测试用的模式通过修改编译选项控制,编译配置文件路径为<b>“/drivers/peripheral/audio/audio.gni”</b>。编译选项为<b>“true”</b>表示编译;为<b>“false”</b>表示不编译,两种模式测试用例一次只能编译其中一种。
379094332d3Sopenharmony_ci
380094332d3Sopenharmony_ci<table width="100%" border="0">
381094332d3Sopenharmony_ci<caption></caption>
382094332d3Sopenharmony_ci    <tr>
383094332d3Sopenharmony_ci        <th width="25%" align="center">编译选项</th>
384094332d3Sopenharmony_ci        <th width="25%" align="center">含义</th>
385094332d3Sopenharmony_ci        <th width="25%" align="center">值</th>
386094332d3Sopenharmony_ci        <th width="25%" align="center">备注</th>
387094332d3Sopenharmony_ci    </tr>
388094332d3Sopenharmony_ci    <tr>
389094332d3Sopenharmony_ci        <td width="25%">enable_audio_adm_so</td>
390094332d3Sopenharmony_ci        <td width="25%">passthrough模式</td>
391094332d3Sopenharmony_ci        <td width="25%">true/false</td>
392094332d3Sopenharmony_ci        <td width="25%">默认不编译(false)</td>
393094332d3Sopenharmony_ci    </tr>
394094332d3Sopenharmony_ci    <tr>
395094332d3Sopenharmony_ci        <td>enable_audio_adm_service</td>
396094332d3Sopenharmony_ci        <td>binder模式</td>
397094332d3Sopenharmony_ci        <td>true/false</td>
398094332d3Sopenharmony_ci        <td>默认编译(true)</td>
399094332d3Sopenharmony_ci    </tr>
400094332d3Sopenharmony_ci</table>
401094332d3Sopenharmony_ci
402094332d3Sopenharmony_ci2.  测试用例编译命令
403094332d3Sopenharmony_ci在根目录下输入命令:
404094332d3Sopenharmony_ci  ```bash 
405094332d3Sopenharmony_ci  ./build.sh --product-name  XXX  --build-target drivers/peripheral/audio/test/systemtest
406094332d3Sopenharmony_ci  ```
407094332d3Sopenharmony_ci“XXX”为产品名,如编译rk3568开发板测试用例,输入如下命令:
408094332d3Sopenharmony_ci```bash
409094332d3Sopenharmony_ci./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/systemtest
410094332d3Sopenharmony_ci```
411094332d3Sopenharmony_ci3. 测试用例输出目录
412094332d3Sopenharmony_ci
413094332d3Sopenharmony_ci以rk3568为例,输出目录为:
414094332d3Sopenharmony_ci```bash
415094332d3Sopenharmony_ci./out/rk3568/tests/systemtest/drivers_peripheral_audio/audio
416094332d3Sopenharmony_ci```
417094332d3Sopenharmony_ci#### 4.2 测试套及资源文件推送(手动执行)
418094332d3Sopenharmony_ci1. 测试用例执行依赖文件推送
419094332d3Sopenharmony_ci
420094332d3Sopenharmony_ciRender相关测试用例执行需要推送audiorendertest.wavlowlatencyrendertest.wav两个音频文件,音频文件路径为drivers/peripheral/audio/test/resource/。推动至开发板”/data/test”目录下,具体哪些用例需要推送音频文件可查看drivers/peripheral/audio/test/resource/ohos_test.xml,在cmd窗口输入命令:
421094332d3Sopenharmony_ci```bash
422094332d3Sopenharmony_cihdc shll mkdir /data/test
423094332d3Sopenharmony_cihdc file send XXX[本地路径]/audiorendertest.wav  /data/test
424094332d3Sopenharmony_cihdc file send XXX[本地路径]/lowlatencyrendertest.wav  /data/test
425094332d3Sopenharmony_ci```
426094332d3Sopenharmony_ci
427094332d3Sopenharmony_ci2. 测试用例推送
428094332d3Sopenharmony_ci
429094332d3Sopenharmony_ci测试用例使用hdc推送至开发板,在cmd窗口输入命令:
430094332d3Sopenharmony_ci```bash
431094332d3Sopenharmony_cihdc file send XXX[本地路径]/hdf_audio_hdi_manager_test  /data/test
432094332d3Sopenharmony_ci```
433094332d3Sopenharmony_ci
434094332d3Sopenharmony_ci#### 4.3 测试用例执行(手动执行)
435094332d3Sopenharmony_ci
436094332d3Sopenharmony_ci1. 进入单板
437094332d3Sopenharmony_ci通过hdc进入开发板,在cmd窗口输入命令
438094332d3Sopenharmony_ci ```bash
439094332d3Sopenharmony_ci  hdc shell
440094332d3Sopenharmony_ci ```
441094332d3Sopenharmony_ci
442094332d3Sopenharmony_ci2. 修改测试用例权限及执行
443094332d3Sopenharmony_ci进入/data/test目录,输入命令
444094332d3Sopenharmony_ci```bash
445094332d3Sopenharmony_cicd /data/test                 #进入data目录
446094332d3Sopenharmony_cichmod  +x “测试套名称"   #更改测试套权限
447094332d3Sopenharmony_ci./测试套                 #执行测试套
448094332d3Sopenharmony_ci```
449094332d3Sopenharmony_ci测试用例执行示例
450094332d3Sopenharmony_ci````bash
451094332d3Sopenharmony_ci# chmod +x hdf_audio_hdi_manager_test
452094332d3Sopenharmony_ci# ./hdf_audio_hdi_manager_test
453094332d3Sopenharmony_ciRunning main() from gmock_main.cc
454094332d3Sopenharmony_ci[==========] Running 4 tests from 1 test case.
455094332d3Sopenharmony_ci[----------] Global test environment set-up.
456094332d3Sopenharmony_ci[----------] 4 tests from AudioHdiManagerTest
457094332d3Sopenharmony_ci[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001
458094332d3Sopenharmony_ci[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001 (1 ms)
459094332d3Sopenharmony_ci[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002
460094332d3Sopenharmony_ci[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002 (0 ms)
461094332d3Sopenharmony_ci[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003
462094332d3Sopenharmony_ci[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003 (0 ms)
463094332d3Sopenharmony_ci[ RUN      ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004
464094332d3Sopenharmony_ci[       OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004 (1 ms)
465094332d3Sopenharmony_ci[----------] 4 tests from AudioHdiManagerTest (2 ms total)
466094332d3Sopenharmony_ci
467094332d3Sopenharmony_ci[----------] Global test environment tear-down
468094332d3Sopenharmony_ciGtest xml output finished
469094332d3Sopenharmony_ci[==========] 4 tests from 1 test case ran. (4 ms total)
470094332d3Sopenharmony_ci[  PASSED  ] 4 tests.
471094332d3Sopenharmony_ci````