๐ฆ ClawHub
grpc-test-automation
by @ventus-z
Complete gRPC test automation for embedded devices with C/C++ SDK. Input: requirements.md + SDK (C/C++ headers and libraries) Output: Test framework + JMX +...
TERMINAL
clawhub install grpc-test-automation๐ About This Skill
name: grpc-test-automation description: | Complete gRPC test automation for embedded devices with C/C++ SDK. Input: requirements.md + SDK (C/C++ headers and libraries) Output: Test framework + JMX + Excel report Workflow: 1. Analyze SDK headers โ Design gRPC interfaces 2. Write C++ gRPC server (wraps SDK) + Proto definition 3. Compile server โ Generate proto descriptor 4. Create JMeter JMX test plan 5. Simulate serial communication โ Mount resources to board 6. Board starts gRPC service 7. JMeter executes tests 8. Generate Excel report Triggers: "grpc test", "ๆฟ็ซฏๆต่ฏ", "ๅ่ฎฎๆต่ฏ", "SDKๆต่ฏ", "ๅตๅ ฅๅผๆต่ฏ", "create test framework", "generate jmx", "ไธฒๅฃๆต่ฏ"
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/*.so or sdk/lib/*.a - SDK librariesOptional
requirements.md - Interface specificationstest_cases.md - Historical test casestest_framework/ - Historical framework codeOutput 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