news 2026/9/22 9:36:31

学习笔记【Day 13】Open Harmony PC应用在SD WAN的软总线场景移植测试中碰到的拦路虎

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记【Day 13】Open Harmony PC应用在SD WAN的软总线场景移植测试中碰到的拦路虎

Open Harmony PC应用在SD WAN的软总线场景移植测试中碰到的拦路虎

一、测试碰到的关键问题及解决方法

  1. 权限配置与网络通信初始化

确保应用具备网络访问权限。我们严格遵循OpenHarmony的安全规范,在应用的配置文件module.json5中声明了必要的权限,包括互联网访问和网络信息获取,缺少声明将直接导致API调用失败。

  1. 绕过软总线限制,采用标准HTTP协议上报

测试中发现,面向轻量设备的softbus_lite主要设计用于局域网,只能被动创建会话服务,无法主动发起广域网连接或发现服务。这限制了设备主动向云端SD-WAN控制器上报数据的能力。因此,我们放弃了依赖分布式软总线进行直接通信的方案,转而采用更通用的HTTP/HTTPS协议。

在代码中,我们使用OpenHarmony提供的网络API来构造和发送HTTP请求,将采集到的终端网络状态数据(如延迟、丢包率、应用标签)上报至模拟的SD-WAN控制器接口。

二、使用DevEco Testing工具测试的关键过程

主要围绕环境准备、脚本本地调试两个核心环节展开。

  1. 环境准备与设备连接是调试的基础。

PC上配置Python环境,并依次安装Hypium框架及hypium-perf等性能测试依赖包,为确保工具能识别设备,一个关键的验证步骤是在命令行中执行 hdc list targets 指令,确认设备已正常连接。

  1. 脚本的编写与本地调试是核心。

从DevEco Testing客户端下载工程模板,该模板包含了预置的目录结构和用例示例。打开此工程,直接运行main.py或修改其中的命令参数,对编写的场景用例脚本进行本地调试验证。

以下是脱敏的部分代码。

场景用例脚本关键代码示例

// testcases/OH_SmartRouterInitTest.py

import os from hypium.perf.base.perf_base_case

import PerfBaseCase

//导入自定义的原子用例(Model)from models.RouterInitModel

import RouterInitModel from models.RouteTableCheckModel

import RouteTableCheckModel

class OH_SmartRouterInitTest(PerfBaseCase):

//必须继承PerfBaseCase类[6](@ref)

/*场景描述:测试设备上智能路由协议模块的初始化流程性能。

场景步骤:

1. 模拟系统启动,触发路由协议栈初始化。

2. 等待初始化完成,验证核心路由表是否就绪。

3. 执行一次简单的路由查询,验证功能可用性。

*/

Def __init__(self, controllers):

self.TAG = self.__class__.__name__

// 定义要执行的测试步骤序列[6](@ref)

self.tests = [

“test_router_init_and_check”

]

// 用例ID需与文件名保持一致[6](@ref)

self.case_id = os.path.splitext(os.path.basename(__file__))

//指定被测试的应用包名(假设为路由守护进程)

case_pkg = ‘com.example.routerdaemon’

//调用父类初始化方法[6](@ref)

PerfBaseCase.__init__(self, controllers, case_pkg)

self.log.info(“Case id is %s” % self.case_id)

def setup(self):

//场景前置操作:确保设备网络基础服务已启动。//

self.log.info(“[Setup] 预置条件准备:检查网络接口状态...”)

// 此处可添加具体的设备预置命令或检查

// 例如通过hdc shell命令检查网络服务

self.devices[0].execute_shell_command(‘ifconfig lo up’)

def test_router_init_and_check(self):

//核心测试步骤:组装并执行原子用例。//

self.log.info(“[TestStep] 开始执行智能路由协议初始化测试场景”)

// 步骤1:初始化路由协议栈,此原子用例模拟调用路由初始化函数,如参考EPA安全网桥中的 ` RouterModuleInit()`[5](@ref)

step_init = RouterInitModel(self.driver, self.case_id)

step_init.execute()

// 步骤2:检查路由表状态,此原子用例验证路由表项是否正确生成

step_check = RouteTableCheckModel(self.driver, self.case_id, target_route=“192.168.1.0/24”)

step_check.execute()

//步骤3:(可选) 执行路由查找性能测试 steps.append(RouteLookupPerformanceModel(self.driver, self.case_id))

def teardown(self):

//场景收尾操作:清理测试状态,获取结果。

//获取用例测试结果[6](@ref)

result = self.get_case_result()

self.log.info(“[Teardown] 测试收尾,结果: {}”.format(result))

//执行父类的teardown方法进行通用清理[6](@ref)

PerfBaseCase.teardown(self)

三、测试技术经验总结

首先,用DevEco testing工具测试的过程有一定的逻辑顺序,需要按照顺序一步一步执行,跳过某一步可能会导致执行失败。其次,用DevEco testing工具前要先配置好PC上的python环境,安装模拟器和API库函数,这些库函数是适配某些用例场景必须依赖条件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 16:45:53

编辑相似度(Edit Similarity):原理、演进与多模态扩展

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1 引言 在人工智能与机器学习领域,衡量两个数据对象之间的…

作者头像 李华
网站建设 2026/9/21 17:16:34

【深度解析】MiniCPM 2.0:端侧大模型的技术性进展与技术革新

2024年9月5日,MiniCPM团队正式发布了备受瞩目的端侧语言大模型系列——MiniCPM 2.0的技术报告。作为一款聚焦于终端设备部署的轻量化大模型,MiniCPM 2.0在保持模型小巧体积的同时,实现了性能的跨越式提升,为人工智能在边缘计算领域…

作者头像 李华
网站建设 2026/9/22 2:23:47

ClickHouse 快速入门

ClickHouse 快速入门1 ClickHouse 介绍1 行式存储VS列式存储2 ClickHouse VS MySQL3 ClickHouse VS Apache Doris4 ClickHouse 的优缺点5 ClickHouse 适用的场景2 ClickHouse 安装1 镜像下载2 容器运行3 创建用户3 ClickHouse 连接1 连接2 建表测试4 SpringBoot 集成 ClickHous…

作者头像 李华
网站建设 2026/9/21 18:18:57

基于SpringBoot的人事管理系统设计与实现

基于SpringBoot的人事管理系统设计与实现 基于SpringBoot的人事管理系统:毕业设计优质资源全解析 在当今数字化时代,企业人力资源管理正经历着从传统手工操作向智能化、自动化转型的关键阶段。对于计算机科学和软件工程专业的学生而言,一个…

作者头像 李华
网站建设 2026/9/22 2:25:55

Day36官方文档的阅读

官方文档咋找? 常用渠道是项目的 GitHub 仓库(一般会有docs文件夹),或者工具 / 框架的官方网站。 看文档的注意点 必须保证你安装的工具包版本,和看的文档版本一致!不然可能出现 “文档写了 A 功能&#x…

作者头像 李华