From d847fa694d1c9b8c1333bbf9dd0c4f653b7d9892 Mon Sep 17 00:00:00 2001 From: Malaber Date: Wed, 6 May 2026 14:47:33 +0200 Subject: [PATCH] fix: clean e2e script lint --- e2e/load_test.rb | 55 ++++++++++++++++++++++------------------- script/e2e_scenarios.rb | 17 ++++++++++--- script/wait_for_http.rb | 2 +- 3 files changed, 44 insertions(+), 30 deletions(-) diff --git a/e2e/load_test.rb b/e2e/load_test.rb index 1ca9e07..c32400a 100755 --- a/e2e/load_test.rb +++ b/e2e/load_test.rb @@ -6,6 +6,10 @@ require 'optparse' require_relative 'lib/load_test_runner' +def write_line(message = '') + $stdout.write("#{message}\n") +end + def parse_client_list(value) return [] if value.nil? || value.strip == '' || value.strip.casecmp('none').zero? @@ -72,33 +76,32 @@ runner = TurniereE2E::LoadTestRunner.new(**runner_options) result = runner.run if options[:format] == 'json' - puts JSON.pretty_generate(result) - exit -end + write_line JSON.pretty_generate(result) +else + write_line "Load test base_url=#{result.fetch(:base_url)} tournament_id=#{result.dig(:tournament, :id)}" -puts "Load test base_url=#{result.fetch(:base_url)} tournament_id=#{result.dig(:tournament, :id)}" + result.fetch(:http).each do |level| + write_line( + "HTTP #{level.fetch(:clients)} clients: " \ + "#{level.fetch(:ok)}/#{level.fetch(:requests)} ok, errors=#{level.fetch(:errors)}, " \ + "p50=#{level.fetch(:p50_ms)}ms, p95=#{level.fetch(:p95_ms)}ms, " \ + "max=#{level.fetch(:max_ms)}ms, rps=#{level.fetch(:requests_per_second)}" + ) + end -result.fetch(:http).each do |level| - puts( - "HTTP #{level.fetch(:clients)} clients: " \ - "#{level.fetch(:ok)}/#{level.fetch(:requests)} ok, errors=#{level.fetch(:errors)}, " \ - "p50=#{level.fetch(:p50_ms)}ms, p95=#{level.fetch(:p95_ms)}ms, " \ - "max=#{level.fetch(:max_ms)}ms, rps=#{level.fetch(:requests_per_second)}" + result.fetch(:websocket).each do |level| + write_line( + "WS #{level.fetch(:clients)} clients: " \ + "opened=#{level.fetch(:opened)}, errors=#{level.fetch(:errors)}, " \ + "p50_open=#{level.fetch(:p50_open_ms)}ms, p95_open=#{level.fetch(:p95_open_ms)}ms, " \ + "connections_metric=#{level.fetch(:connection_metric)}" + ) + end + + metrics = result.fetch(:metrics) + write_line( + "Metrics: action_cable_connections=#{metrics.fetch(:action_cable_connections)}, " \ + "action_cable_connections_total=#{metrics.fetch(:action_cable_connections_total)}, " \ + "ruby_threads=#{metrics.fetch(:ruby_threads)}" ) end - -result.fetch(:websocket).each do |level| - puts( - "WS #{level.fetch(:clients)} clients: " \ - "opened=#{level.fetch(:opened)}, errors=#{level.fetch(:errors)}, " \ - "p50_open=#{level.fetch(:p50_open_ms)}ms, p95_open=#{level.fetch(:p95_open_ms)}ms, " \ - "connections_metric=#{level.fetch(:connection_metric)}" - ) -end - -metrics = result.fetch(:metrics) -puts( - "Metrics: action_cable_connections=#{metrics.fetch(:action_cable_connections)}, " \ - "action_cable_connections_total=#{metrics.fetch(:action_cable_connections_total)}, " \ - "ruby_threads=#{metrics.fetch(:ruby_threads)}" -) diff --git a/script/e2e_scenarios.rb b/script/e2e_scenarios.rb index 17d6741..238ea05 100755 --- a/script/e2e_scenarios.rb +++ b/script/e2e_scenarios.rb @@ -5,6 +5,15 @@ require 'json' require 'optparse' require_relative '../e2e/lib/scenario_runner' +def write_line(message) + $stdout.write("#{message}\n") +end + +def fail_with(message) + $stderr.write("#{message}\n") + raise SystemExit, 1 +end + options = { base_url: ENV.fetch('TURNIERE_E2E_BASE_URL', 'http://127.0.0.1:3000'), stop_at: nil, @@ -39,7 +48,9 @@ OptionParser.new do |parser| parser.on('--username USERNAME', 'Confirmed E2E user username') { |value| options[:username] = value } end.parse! -scenario = ARGV.shift or abort('Missing scenario name') +scenario = ARGV.shift +fail_with('Missing scenario name') if scenario.nil? + runner = TurniereE2E::ScenarioRunner.new( base_url: options[:base_url], email: options[:email], @@ -64,7 +75,7 @@ result = case scenario stop_at: options[:stop_at] || :profiled_show ) else - abort("Unknown scenario #{scenario.inspect}") + fail_with("Unknown scenario #{scenario.inspect}") end -puts JSON.pretty_generate(result) +write_line JSON.pretty_generate(result) diff --git a/script/wait_for_http.rb b/script/wait_for_http.rb index 1513de2..dad5f0d 100755 --- a/script/wait_for_http.rb +++ b/script/wait_for_http.rb @@ -8,4 +8,4 @@ timeout = (ARGV[1] || 30).to_i runner = TurniereE2E::ScenarioRunner.new(base_url: url) runner.wait_for_healthcheck!(timeout_seconds: timeout) -puts "ready: #{url}" +$stdout.write("ready: #{url}\n")