非通用测试用例接口列表
所属类 |
命令码 |
说明 |
capture |
AUDIODRV_CTL_IOCTL_GAINTHRESHOLD_CAPTURE |
获取增益阈值 |
AUDIODRV_CTL_IOCTL_GAIN_WRITE_CAPTURE |
设置增益 |
AUDIODRV_CTL_IOCTL_GAIN_READ_CAPTURE |
获取增益 |
AUDIODRV_CTL_IOCTL_SCENESELECT_CAPTURE |
场景切换 |
AUDIODRV_CTL_IOCTL_VOL_THRESHOLD_CAPTURE |
获取音量阈值 |
AUDIODRV_CTL_IOCTL_ELEM_WRITE_CAPTURE |
设置音量 |
AUDIODRV_CTL_IOCTL_ELEM_READ_CAPTURE |
获取音量 |
render |
AUDIODRV_CTL_IOCTL_GAINTHRESHOLD |
获取增益阈值 |
AUDIODRV_CTL_IOCTL_GAIN_WRITE |
设置增益 |
AUDIODRV_CTL_IOCTL_GAIN_WRITE |
获取增益 |
AUDIODRV_CTL_IOCTL_SCENESELECT |
场景切换 |
AUDIODRV_CTL_IOCTL_VOL_THRESHOLD |
获取音量阈值 |
AUDIODRV_CTL_IOCTL_ELEM_WRITE |
设置音量 |
AUDIODRV_CTL_IOCTL_ELEM_READ |
获取音量 |
##### 1.2.2 ALSA模式测试用例
音频驱动模型为支持南向生态厂商快速接入鸿蒙、支持快速产品化而提供的“ALSA兼容方案”,采用插件化的适配器模式通过alsa-lib对接ALSA。当采用“ALSA兼容方案”时,需编译ALSA模式测试用例。测试用例分为两部分:
1. LIB层接口测试用例
ALSA模式LIB层测试用例为alsa-lib接口测试用例,存放在supportlis/common目录下,与adm_interface_lib测试用例同一目录下的不同测试套文件,在编译文件内配置选择编译目标。
````bash
ohos_systemtest("hdf_audio_lib_capture_test") {
module_out_path = module_output_path
sources = [
"../../../common/hdi_common/src/audio_hdi_common.cpp",
"../../../common/lib_common/src/audio_lib_common.cpp",
]
#drivers_peripheral_audio_feature_alsa_lib
if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
sources += ["src/audio_alsa_libcapture_test.cpp"]
}else {
sources += ["src/audio_libcapture_test.cpp"]
}
````
2. UHDF层接口测试用例
ALSA模式UHDF层测试用例与ADM模式共用一套测试用例,ALSA模式部分hdi接口未适配,在测试代码中使用宏区分。
ALSA未适配hdi接口列表
所属类 |
接口 |
说明 |
capture |
Flush |
刷新 |
CheckSceneCapability |
查询场景支持能力 |
SelectScene |
选择场景 |
GetGainThreshold |
获取增益阈值 |
GetGain |
获取增益 |
SetGain |
设置增益 |
render |
SetRenderSpeed |
设置播放速度 |
GetRenderSpeed |
获取播放速度 |
SetChannelMode |
设置声道模式 |
GetChannelMode |
获取声道模式 |
Flush |
刷新 |
GetGainThreshold |
获取增益阈值 |
GetGain |
获取增益 |
SetGain |
设置增益 |
````bash
#gn内添加编译宏ALSA_LIB_MODE用于区分测试用例
if(defined(drivers_peripheral_audio_feature_alsa_lib) && drivers_peripheral_audio_feature_alsa_lib == true) {
defines += [ "ALSA_LIB_MODE" ]
}
#测试用例代码内使用示例
ret = render->attr.SetSampleAttributes(render, &attrs2);
#ifdef ALSA_LIB_MODE
EXPECT_EQ(AUDIO_HAL_SUCCESS, ret);
#else
EXPECT_EQ(AUDIO_HAL_ERR_INTERNAL, ret);
#endif
````
注:编译ALSA测试用例是需要设置ALSA编译选项,由drivers_peripheral_audio_feature_alsa_lib编译选项控制,当"drivers_peripheral_audio_feature_alsa_lib = true"表示编译ALSA模式测试用例,编译配置文件路径为./drivers/peripheral/audio/audio.gni文件内。
##### 1.2.3 录音阈值上报测试用例
码云上音频驱动模型默认不编译录音阈值上报功能代码,因此该功能对应的测试套(hdf_audio_threshold_report_test)默认不编译,如需编译需要手动修改gn文件,去掉“#”字符注释。gn文件路径为./audio_function/BUILD.gn
```bash
group("function") {
if (!defined(ohos_lite)) {
testonly = true
}
deps = [ "audio_server:hdf_audio_hdi_server_function_test" ]
if (defined(ohos_lite)) {
deps += [
"audio_pathroute:hdf_audio_hdi_path_route_test",
"audio_smartpa:hdf_audio_smartpa_test",
]
} else {
#deps += [ "audio_threshold_report:hdf_audio_threshold_report_test" ] #录音阈值上报测试套
....
```
### 2. 适用版本
当前测试用例适用码云mater主仓音频驱动模型版本。
### 3. 适用平台(已适配的SOC)
目前已适配开发板如下:
1. rk3568
2. Hi3516DV300
### 4. 使用方法
#### 4.1 用例编译
注:以下目录均以Openharmony代码根目录为根目录
1. 测试用例模式修改
音频驱动模型UHDF层支持binder模式和passthrough模式,因此针对不同的模式需要编译对应的测试用例,测试用的模式通过修改编译选项控制,编译配置文件路径为“/drivers/peripheral/audio/audio.gni”。编译选项为“true”表示编译;为“false”表示不编译,两种模式测试用例一次只能编译其中一种。
编译选项 |
含义 |
值 |
备注 |
enable_audio_adm_so |
passthrough模式 |
true/false |
默认不编译(false) |
enable_audio_adm_service |
binder模式 |
true/false |
默认编译(true) |
2. 测试用例编译命令
在根目录下输入命令:
```bash
./build.sh --product-name XXX --build-target drivers/peripheral/audio/test/systemtest
```
“XXX”为产品名,如编译rk3568开发板测试用例,输入如下命令:
```bash
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/systemtest
```
3. 测试用例输出目录
以rk3568为例,输出目录为:
```bash
./out/rk3568/tests/systemtest/drivers_peripheral_audio/audio
```
#### 4.2 测试套及资源文件推送(手动执行)
1. 测试用例执行依赖文件推送
Render相关测试用例执行需要推送audiorendertest.wav和lowlatencyrendertest.wav两个音频文件,音频文件路径为drivers/peripheral/audio/test/resource/。推动至开发板”/data/test”目录下,具体哪些用例需要推送音频文件可查看drivers/peripheral/audio/test/resource/ohos_test.xml,在cmd窗口输入命令:
```bash
hdc shll mkdir /data/test
hdc file send XXX[本地路径]/audiorendertest.wav /data/test
hdc file send XXX[本地路径]/lowlatencyrendertest.wav /data/test
```
2. 测试用例推送
测试用例使用hdc推送至开发板,在cmd窗口输入命令:
```bash
hdc file send XXX[本地路径]/hdf_audio_hdi_manager_test /data/test
```
#### 4.3 测试用例执行(手动执行)
1. 进入单板
通过hdc进入开发板,在cmd窗口输入命令
```bash
hdc shell
```
2. 修改测试用例权限及执行
进入/data/test目录,输入命令
```bash
cd /data/test #进入data目录
chmod +x “测试套名称" #更改测试套权限
./测试套 #执行测试套
```
测试用例执行示例
````bash
# chmod +x hdf_audio_hdi_manager_test
# ./hdf_audio_hdi_manager_test
Running main() from gmock_main.cc
[==========] Running 4 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 4 tests from AudioHdiManagerTest
[ RUN ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001
[ OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0001 (1 ms)
[ RUN ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002
[ OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0002 (0 ms)
[ RUN ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003
[ OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0003 (0 ms)
[ RUN ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004
[ OK ] AudioHdiManagerTest.SUB_Audio_HDI_ReleaseAudioManagerObject_0004 (1 ms)
[----------] 4 tests from AudioHdiManagerTest (2 ms total)
[----------] Global test environment tear-down
Gtest xml output finished
[==========] 4 tests from 1 test case ran. (4 ms total)
[ PASSED ] 4 tests.
````