Skip to content

Conversation

@adriangudas
Copy link

@adriangudas adriangudas commented Oct 8, 2025

Note: Not suitable for production. Just testing and experimenting. This may form the basis for a real PR later

Example output:

adriangudas@Mac experiments % ruby example_with_traffic_replay.rb sample_traffic_log.json
adriangudas@Adrians-MacBook-Pro experiments % ruby example_with_traffic_replay.rb sample_traffic_log.json
=== Semian ExperimentalResource - Traffic Replay Example ===

Example: Using traffic replay from Grafana export
------------------------------------------------------------
Traffic replay mode enabled. Timeline duration: 12.0s with 25 requests

Resource created successfully!
Starting to process requests...
Press Ctrl+C to stop

I, [2025-10-15T10:59:03.915914 #22481]  INFO -- : Semian Resource my_service is running in log-mode for configuration validation. This means that Semian will not raise an error if the configuration is invalid. This is not recommended for production environments.

[IMPORTANT] PLEASE UPDATE YOUR CONFIGURATION TO USE `force_config_validation: true` TO ENABLE STRICT CONFIGURATION VALIDATION.
---

I, [2025-10-15T10:59:03.915966 #22481]  INFO -- : Semian sysv semaphores are not supported on arm64-darwin25 - all operations will no-op
[10:59:03] Request #1 - Latency: 2.5ms
[10:59:04] Request #2 - Latency: 2.5ms
[10:59:04] Request #3 - Latency: 2.5ms
[10:59:04] Request #4 - Latency: 3.2ms
[10:59:04] Request #5 - Latency: 3.2ms
[10:59:04] Request #6 - Latency: 3.2ms
[10:59:04] Request #7 - Latency: 3.2ms
[10:59:04] Request #8 - Latency: 2.8ms
[10:59:04] Request #9 - Latency: 2.8ms
[10:59:04] Request #10 - Latency: 2.8ms
[10:59:05] Request #11 - Latency: 2.8ms
[10:59:05] Request #12 - Latency: 2.8ms
[10:59:05] Request #13 - Latency: 5.1ms
[10:59:05] Request #14 - Latency: 5.1ms
[10:59:05] Request #15 - Latency: 5.1ms
[10:59:05] Request #16 - Latency: 5.1ms
[10:59:05] Request #17 - Latency: 5.1ms
[10:59:05] Request #18 - Latency: 8.5ms
[10:59:05] Request #19 - Latency: 8.5ms
[10:59:06] Request #20 - Latency: 8.5ms
[10:59:06] Request #21 - Latency: 8.5ms
[10:59:06] Request #22 - Latency: 15.3ms
[10:59:06] Request #23 - Latency: 15.3ms
[10:59:06] Request #24 - Latency: 15.3ms
[10:59:06] Request #25 - Latency: 15.3ms
[10:59:06] Request #26 - Latency: 25.7ms
[10:59:06] Request #27 - Latency: 25.7ms
[10:59:07] Request #28 - Latency: 25.7ms
[10:59:07] Request #29 - Latency: 25.7ms
[10:59:07] Request #30 - Latency: 45.2ms
[10:59:07] Request #31 - Latency: 45.2ms
[10:59:07] Request #32 - Latency: 45.2ms
[10:59:07] Request #33 - Latency: 78.4ms
[10:59:07] Request #34 - Latency: 78.4ms
[10:59:08] Request #35 - Latency: 78.4ms
[10:59:08] Timeout: Request timed out after 0.1s (would have taken 0.126s)
[10:59:09] Timeout: Request timed out after 0.1s (would have taken 0.246s)
I, [2025-10-15T10:59:10.599327 #22481]  INFO -- : [Semian::CircuitBreaker] State transition from closed to open. success_count=0 error_count=3 success_count_threshold=2 error_count_threshold=3 error_timeout=0.2 error_last_at="583143.281439" name="my_service" last_error_message="Request timed out after 0.1s (would have taken 0.313s)"
[10:59:10] Timeout: Request timed out after 0.1s (would have taken 0.313s)
I, [2025-10-15T10:59:11.604952 #22481]  INFO -- : [Semian::CircuitBreaker] State transition from open to half_open. success_count=0 error_count=3 success_count_threshold=2 error_count_threshold=3 error_timeout=0.2 error_last_at="583143.281439" name="my_service"
I, [2025-10-15T10:59:11.710493 #22481]  INFO -- : [Semian::CircuitBreaker] State transition from half_open to open. success_count=0 error_count=3 success_count_threshold=2 error_count_threshold=3 error_timeout=0.2 error_last_at="583144.392658" name="my_service" last_error_message="Request timed out after 0.1s (would have taken 0.234s)"
[10:59:11] Timeout: Request timed out after 0.1s (would have taken 0.234s)
I, [2025-10-15T10:59:12.715998 #22481]  INFO -- : [Semian::CircuitBreaker] State transition from open to half_open. success_count=0 error_count=3 success_count_threshold=2 error_count_threshold=3 error_timeout=0.2 error_last_at="583144.392658" name="my_service"
[10:59:12] Request #36 - Latency: 82.1ms
[10:59:12] Request #37 - Latency: 82.1ms
I, [2025-10-15T10:59:12.991463 #22481]  INFO -- : [Semian::CircuitBreaker] State transition from half_open to closed. success_count=2 error_count=3 success_count_threshold=2 error_count_threshold=3 error_timeout=0.2 error_last_at="583144.392658" name="my_service"
[10:59:13] Request #38 - Latency: 82.1ms
[10:59:13] Request #39 - Latency: 45.7ms
[10:59:13] Request #40 - Latency: 45.7ms
[10:59:13] Request #41 - Latency: 45.7ms
[10:59:13] Request #42 - Latency: 25.3ms
[10:59:13] Request #43 - Latency: 25.3ms
[10:59:14] Request #44 - Latency: 25.3ms
[10:59:14] Request #45 - Latency: 25.3ms
[10:59:14] Request #46 - Latency: 12.8ms
[10:59:14] Request #47 - Latency: 12.8ms
[10:59:14] Request #48 - Latency: 12.8ms
[10:59:14] Request #49 - Latency: 12.8ms
[10:59:14] Request #50 - Latency: 6.5ms
[10:59:14] Request #51 - Latency: 6.5ms
[10:59:15] Request #52 - Latency: 6.5ms
[10:59:15] Request #53 - Latency: 6.5ms
[10:59:15] Request #54 - Latency: 3.8ms
[10:59:15] Request #55 - Latency: 3.8ms
[10:59:15] Request #56 - Latency: 3.8ms
[10:59:15] Request #57 - Latency: 3.8ms
[10:59:15] Request #58 - Latency: 3.8ms
[10:59:15] Request #59 - Latency: 2.7ms
[10:59:15] Request #60 - Latency: 2.7ms

=== Traffic replay completed ===
Service has been running longer than the traffic log timeline.
No more requests will be processed.

Traffic replay completed!
Total requests processed: 60

=== Replay Complete ===

@adriangudas adriangudas changed the title add vibe-coded experimental traffic replay [WIP] add traffic replay feature to experiment service Oct 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant