Skip to content

interop: improve rpc_soak and channel_soak test to cover concurrency in Go #7926

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 45 commits into from
Jan 9, 2025

Conversation

zbilun
Copy link
Contributor

@zbilun zbilun commented Dec 12, 2024

RELEASE NOTES:

  • Improved the rpc_soak and channel_soak tests to support concurrency in Go. This change increases the test coverage of the C2P E2E load test and follows a similar approach used in the Java implementation.

This PR aims to enhance the test coverage of the C2P E2E load test by improving the rpc_soak and channel_soak tests to support concurrency in Go. The updated logic closely follows the approach used in the Java implementation, which has already been merged.

rpc_soak:
The client performs many large_unary RPCs in sequence over the same channel. The test can run in either a concurrent or non-concurrent mode, depending on the number of threads specified (soak_num_threads).

channel_soak:
Similar to rpc_soak, but this time each RPC is performed on a new channel. The channel is created just before each RPC and is destroyed just after.

Note on Concurrent Execution and Channel Creation:
In a concurrent execution setting (i.e., when soak_num_threads > 1), each thread performs a portion of the total soak_iterations and creates and destroys its own channel for each RPC iteration.

Thread-specific logs will include the thread_id, helping to track performance across threads, especially when each thread is managing its own channel lifecycle.

@townba
@dfawley

Copy link

codecov bot commented Dec 12, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.02%. Comparing base (66ba4b2) to head (823ae79).
Report is 24 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7926      +/-   ##
==========================================
- Coverage   82.04%   82.02%   -0.03%     
==========================================
  Files         377      381       +4     
  Lines       38180    38539     +359     
==========================================
+ Hits        31326    31612     +286     
- Misses       5551     5609      +58     
- Partials     1303     1318      +15     

see 50 files with indirect coverage changes

@purnesh42H purnesh42H self-assigned this Dec 16, 2024
@purnesh42H purnesh42H added Area: Client Includes Channel/Subchannel/Streams, Connectivity States, RPC Retries, Dial/Call Options and more. Type: Internal Cleanup Refactors, etc labels Dec 16, 2024
@dfawley dfawley added Area: Interop Includes vanilla and PSM interop test client and server. Not for bugs from interop testing. Type: Testing and removed Area: Client Includes Channel/Subchannel/Streams, Connectivity States, RPC Retries, Dial/Call Options and more. Type: Internal Cleanup Refactors, etc labels Dec 16, 2024
@purnesh42H purnesh42H assigned dfawley and zbilun and unassigned purnesh42H, dfawley and zbilun Dec 17, 2024
@dfawley dfawley changed the title Improve rpc_soak and channel_soak test to cover concurrency in Go interop: improve rpc_soak and channel_soak test to cover concurrency in Go Jan 9, 2025
@dfawley dfawley merged commit d118866 into grpc:master Jan 9, 2025
15 checks passed
purnesh42H added a commit to purnesh42H/grpc-go that referenced this pull request Jan 19, 2025
purnesh42H added a commit that referenced this pull request Jan 20, 2025
purnesh42H added a commit to purnesh42H/grpc-go that referenced this pull request Jan 21, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Jan 26, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Jan 26, 2025
purnesh42H added a commit to purnesh42H/grpc-go that referenced this pull request Jan 30, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Feb 13, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Feb 13, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Feb 13, 2025
janardhanvissa pushed a commit to janardhanvissa/grpc-go that referenced this pull request Feb 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Interop Includes vanilla and PSM interop test client and server. Not for bugs from interop testing. Type: Testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants