/install grpc-test-automation
gRPC Test Automation for Embedded Devices
Automated framework for testing C/C++ SDK on embedded boards via gRPC + JMeter.
Complete Workflow
┌─────────────────────────────────────────────────────────────────┐
│ 输入: 需求文档 + C/C++ SDK (头文件 + 库) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 1: 分析 SDK 头文件 │
│ - 提取函数签名 │
│ - 识别错误码枚举 │
│ - 理解数据结构 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 2: 编写 C++ gRPC 服务端 │
│ - 创建 Proto 文件 (基于 SDK 接口) │
│ - 实现 gRPC 服务类 (封装 SDK 调用) │
│ - 编写 CMakeLists.txt │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 3: 编译生成 │
│ - cmake + make → 生成可执行文件 │
│ - protoc → 生成 proto descriptor (.protobin) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 4: 编写 JMeter JMX │
│ - 引用 proto descriptor │
│ - 配置 gRPC Sampler │
│ - 定义测试用例 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 5: 串口下发资源到板端 │
│ - 模拟串口通信 (TCP Socket) │
│ - 下发: SDK库 + 服务程序 + Proto │
│ - 挂载到板端目录 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 6: 板端拉起服务 │
│ - 设置 LD_LIBRARY_PATH │
│ - 执行 ./grpc_server 8080 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 7: JMeter 执行测试 │
│ - jmeter -n -t test.jmx │
│ - 收集响应数据 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Step 8: 生成 Excel 报告 │
│ - 测试概览 │
│ - 测试详情 │
│ - 性能指标 │
│ - 错误详情 │
└─────────────────────────────────────────────────────────────────┘
Input Files
Required
sdk/include/*.h- SDK header filessdk/lib/*.soorsdk/lib/*.a- SDK libraries
Optional
requirements.md- Interface specificationstest_cases.md- Historical test casestest_framework/- Historical framework code
Output Structure
grpc_test/
├── proto/
│ └── service.proto # Generated from SDK analysis
├── server/
│ ├── CMakeLists.txt # Build configuration
│ ├── grpc_server.cpp # gRPC server (wraps SDK)
│ ├── build/ # Build output
│ │ ├── grpc_server # Compiled executable
│ │ └── service.protobin # Proto descriptor for JMeter
│ └── service.pb.h/cc # Generated protobuf code
├── client/
│ └── test_client.cpp # Optional test client
├── jmeter/
│ ├── test_plans/
│ │ └── test.jmx # JMeter test plan
│ ├── results/
│ │ ├── result.jtl # Raw results
│ │ └── report.xlsx # Excel report
│ └── service.protobin # Proto descriptor (copied)
├── scripts/
│ ├── serial_simulator.py # Serial communication simulator
│ ├── deploy_to_board.sh # Deploy resources to board
│ ├── run_server.sh # Start server on board
│ └── run_tests.sh # Execute full test cycle
└── sdk/ # Original SDK (mounted to board)
├── include/
└── lib/
Scripts Usage
1. Analyze SDK Headers
scripts/analyze_sdk.py sdk/include/
Extracts: functions, enums, structs, error codes
2. Generate Proto + Server
scripts/generate_grpc_server.py --sdk sdk/ --output server/
Creates: proto file, server.cpp, CMakeLists.txt
3. Build
cd server/build && cmake .. && make
Generates: grpc_server executable, service.protobin
4. Deploy to Board
scripts/deploy_to_board.sh --board localhost:9999 --sdk sdk/ --server server/build/
5. Run Tests
scripts/run_tests.sh --jmx jmeter/test_plans/test.jmx --output jmeter/results/
Key Implementation Details
SDK Analysis Pattern
// SDK Header
venc_error_t venc_get_device_info(venc_device_info_t *info);
typedef struct { char device_id[64]; ... } venc_device_info_t;
typedef enum { VENC_OK=0, VENC_ERR_PARAM=1001 } venc_error_t;
↓ Analysis ↓
// Proto Definition
service VencService {
rpc GetDeviceInfo(GetDeviceInfoRequest) returns (GetDeviceInfoResponse);
}
message GetDeviceInfoResponse {
string device_id = 1;
ErrorCode error = 2;
}
Server Wrapper Pattern
// gRPC Server wraps SDK calls
Status GetDeviceInfo(ServerContext* ctx,
const GetDeviceInfoRequest* req,
GetDeviceInfoResponse* resp) override {
venc_device_info_t info;
venc_error_t err = venc_get_device_info(&info); // Call SDK
if (err == VENC_OK) {
resp->set_device_id(info.device_id);
return Status::OK;
}
return Status(StatusCode::INTERNAL, "SDK error");
}
Serial Communication Protocol
// Commands
{"command": "MOUNT", "source_path": "/path/to/sdk"}
{"command": "UPLOAD", "filename": "grpc_server", "content": "..."}
{"command": "START_SERVER", "port": 8080}
{"command": "STATUS"}
{"command": "STOP_SERVER"}
See Also
references/sdk-analysis.md- SDK header parsing patternsreferences/cpp-server.md- C++ gRPC server implementationreferences/serial-protocol.md- Serial communication detailsreferences/jmeter-config.md- JMeter gRPC plugin configuration
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install grpc-test-automation - After installation, invoke the skill by name or use
/grpc-test-automation - Provide required inputs per the skill's parameter spec and get structured output
What is grpc-test-automation?
Complete gRPC test automation for embedded devices with C/C++ SDK. Input: requirements.md + SDK (C/C++ headers and libraries) Output: Test framework + JMX +... It is an AI Agent Skill for Claude Code / OpenClaw, with 132 downloads so far.
How do I install grpc-test-automation?
Run "/install grpc-test-automation" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is grpc-test-automation free?
Yes, grpc-test-automation is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does grpc-test-automation support?
grpc-test-automation is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created grpc-test-automation?
It is built and maintained by ventus-Z (@ventus-z); the current version is v1.0.0.