From c22b41014aa58ca8cc896d91160b43092482fd93 Mon Sep 17 00:00:00 2001 From: JonJagger Date: Sun, 22 Feb 2026 08:24:47 +0000 Subject: [PATCH] More refactoring in preparation for red-amber-green lambda in start-point manifest --- source/server/runner.rb | 38 +++++++++++++++++-------------- test/server/check_test_metrics.rb | 2 +- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/source/server/runner.rb b/source/server/runner.rb index a89f344c..5bf6b600 100644 --- a/source/server/runner.rb +++ b/source/server/runner.rb @@ -20,13 +20,28 @@ def run_cyber_dojo_sh(id:, files:, manifest:) if run[:timed_out] log(id: id, image_name: image_name, message: 'timed_out', result: utf8_clean(run)) - timed_out_result(run) + return timed_out_result(run) elsif run[:status] != 0 # See comments at end of capture3_with_timeout.rb log(id: id, image_name: image_name, message: 'faulty', result: utf8_clean(run)) - faulty_result(run) - else - colour_result(id, image_name, files_in, run[:stdout]) + return faulty_result(run) end + + tgz_out = run[:stdout] + files_out, stdout, stderr, status = files_sss_from(tgz_out) + + sss = [stdout['content'], stderr['content'], status['content']] + colour, log_info = *@traffic_light.colour(image_name, *sss) + + created, changed = files_delta(files_in, files_out) + result( + stdout, stderr, status['content'], + colour, log_info, + Sandbox.out(at_most(16, created)), + Sandbox.out(changed) + ) + rescue Zlib::GzipFile::Error + log(id: id, image_name: image_name, error: 'Zlib::GzipFile::Error') + empty_result(:gzip_error, 'faulty', {}) end # - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -88,25 +103,14 @@ def threaded_docker_stop_container(id, image_name, container_name) end end - def colour_result(id, image_name, files_in, tgz_out) + def files_sss_from(tgz_out) files_out = TGZ.files(tgz_out).each.with_object({}) do |(filename, content), memo| memo[filename] = truncated(content) end stdout = files_out.delete('tmp/stdout') || truncated('') stderr = files_out.delete('tmp/stderr') || truncated('') status = files_out.delete('tmp/status') || truncated('145') - sss = [stdout['content'], stderr['content'], status['content']] - outcome, log_info = *@traffic_light.colour(image_name, *sss) - created, changed = files_delta(files_in, files_out) - result( - stdout, stderr, status['content'], - outcome, log_info, - Sandbox.out(at_most(16, created)), - Sandbox.out(changed) - ) - rescue Zlib::GzipFile::Error - log(id: id, image_name: image_name, error: 'Zlib::GzipFile::Error') - empty_result(:gzip_error, 'faulty', {}) + [files_out, stdout, stderr, status] end # - - - - - - - - - - - - - - - - - - - - - diff --git a/test/server/check_test_metrics.rb b/test/server/check_test_metrics.rb index 2bd1544d..b160ebe9 100644 --- a/test/server/check_test_metrics.rb +++ b/test/server/check_test_metrics.rb @@ -37,7 +37,7 @@ def table_data [ 'test.branches.total', test_cov['branches']['total' ], '<=', 0 ], [ 'test.branches.missed', test_cov['branches']['missed'], '<=', 0 ], [ nil ], - [ 'code.lines.total', code_cov['lines' ]['total' ], '<=', 559 ], + [ 'code.lines.total', code_cov['lines' ]['total' ], '<=', 560 ], [ 'code.lines.missed', code_cov['lines' ]['missed'], '<=', 0 ], [ 'code.branches.total', code_cov['branches']['total' ], '<=', 70 ], [ 'code.branches.missed', code_cov['branches']['missed'], '<=', 0 ],