Copyright 2022 Google Inc.
This directory contains the protobuf, and the generated C++ and Python files. The protobuf defines the gRPC interface for the communication between XCTest and iOS Test Runner (defined in src/ios/build/bots/scripts) in order to support the video recording plugin feature when running EarlGrey tests.
Note: Files ending with pb2_grpc.py and pb2.py are auto-generated and SHOULD NOT be manually edited.
We use the built-in XCTestObservation to notify our iOS Test Runner about different lifecycles of a test case through gRPC connections. The main test lifecycles defined by Apple are:
testBundleWillStart: — — — testSuiteWillStart: — — — — — — testCaseWillStart: — — — — — — testCase:didRecord:XCTIssue — — — — — — testCase:didRecord:XCTExpectedFailure — — — — — — testCaseDidFinish: — — — testSuite:didRecord:XCTIssue — — — testSuite:didRecord:XCTExpectedFailure — — — testSuiteDidFinish: testBundleDidFinish:
Googlers can find more information in the design doc
First, make your changes in the test_plugin_service.proto file. Ensure that your changes are backward compatible. Then follow the below instructions to re-generate the code in both Python and C++
TODO(crbug.com/40236071): instead of manually generating the python files every time, add support for generating them in the grpc_library gn template so that they are auto-generated during build time
python -m pip install grpcio-tools
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. test_plugin_service.proto
No work needs to be done. C++ files are dynamically generated during runtime using the grpc_library template in BUILD.gn.