Class: HybridPlatformsConductor::HpcPlugins::TestReport::Stdout
- Inherits:
-
TestReport
- Object
- Plugin
- TestReport
- HybridPlatformsConductor::HpcPlugins::TestReport::Stdout
- Defined in:
- lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb
Overview
Report tests results on stdout
Constant Summary collapse
- PROGRESS_BAR_SIZE =
Size of the progress bar, in characters
41
Constants included from LoggerHelpers
LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR
Instance Method Summary collapse
-
#report ⇒ Object
Handle tests reports.
Methods inherited from TestReport
Methods inherited from Plugin
extend_config_dsl_with, #initialize, valid?
Methods included from LoggerHelpers
#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar
Constructor Details
This class inherits a constructor from HybridPlatformsConductor::TestReport
Instance Method Details
#report ⇒ Object
Handle tests reports
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb', line 16 def report out out "========== Error report of #{@tests.size} tests run on #{@tested_nodes.size} nodes" out errors = group_errors(global_tests, :test_name, filter: :only_as_non_expected) out "======= #{errors.size} unexpected failing global tests:" out errors.each do |test_name, test_errors| out "===== #{test_name} found #{test_errors.size} errors:" test_errors.each do |error| out " - #{error}" end out end out errors = group_errors(platform_tests, :test_name, :platform, filter: :only_as_non_expected) out "======= #{errors.size} unexpected failing platform tests:" out errors.each do |test_name, errors_by_platform| out "===== #{test_name} found #{errors_by_platform.size} platforms having errors:" errors_by_platform.each do |platform, test_errors| out " * [ #{platform.repository_path} ] - #{test_errors.size} errors:" test_errors.each do |error| out " - #{error}" end end out end out errors = group_errors(node_tests, :test_name, :node, filter: :only_as_non_expected) out "======= #{errors.size} unexpected failing node tests:" out errors.each do |test_name, errors_by_node| out "===== #{test_name} found #{errors_by_node.size} nodes having errors:" errors_by_node.each do |node, test_errors| out " * [ #{node} ] - #{test_errors.size} errors:" test_errors.each do |error| out " - #{error}" end end out end out errors = group_errors(platform_tests, :platform, :test_name, filter: :only_as_non_expected) out "======= #{errors.size} unexpected failing platforms:" out errors.each do |platform, errors_by_test| out "===== #{platform.repository_path} has #{errors_by_test.size} failing tests:" errors_by_test.each do |test_name, test_errors| out " * [ #{test_name} ] - #{test_errors.size} errors:" test_errors.each do |error| out " - #{error}" end end out end out errors = group_errors(node_tests, :node, :test_name, filter: :only_as_non_expected) out "======= #{errors.size} unexpected failing nodes:" out errors.each do |node, errors_by_test| out "===== #{node} has #{errors_by_test.size} failing tests:" errors_by_test.each do |test_name, test_errors| out " * [ #{test_name} ] - #{test_errors.size} errors:" test_errors.each do |error| out " - #{error}" end end out end out out '========== Stats by nodes list:' out out(Terminal::Table.new(headings: ['List name', '# nodes', '% tested', '% expected success', '% success', '[Expected] '.yellow.bold + '[Error] '.red.bold + '[Success] '.green.bold + '[Non tested]'.white.bold]) do |table| nodes_by_nodes_list.each do |nodes_list, nodes_info| table << [ nodes_list, nodes_info[:nodes].size, nodes_info[:nodes].empty? ? '' : "#{(nodes_info[:tested_nodes].size*100.0/nodes_info[:nodes].size).to_i} %", nodes_info[:tested_nodes].empty? ? '' : "#{((nodes_info[:tested_nodes].size - nodes_info[:tested_nodes_in_error_as_expected].size) * 100.0 / nodes_info[:tested_nodes].size).to_i} %", nodes_info[:tested_nodes].empty? ? '' : "#{((nodes_info[:tested_nodes].size - nodes_info[:tested_nodes_in_error].size) * 100.0 / nodes_info[:tested_nodes].size).to_i} %", nodes_info[:nodes].empty? ? '' : ('=' * ((nodes_info[:tested_nodes_in_error_as_expected].size * PROGRESS_BAR_SIZE.to_f) / nodes_info[:nodes].size).round).yellow.bold + ('=' * (((nodes_info[:tested_nodes_in_error].size - nodes_info[:tested_nodes_in_error_as_expected].size).abs * PROGRESS_BAR_SIZE.to_f) / nodes_info[:nodes].size).round).red.bold + ('=' * (((nodes_info[:tested_nodes].size - nodes_info[:tested_nodes_in_error].size) * PROGRESS_BAR_SIZE.to_f) / nodes_info[:nodes].size).round).green.bold + ('=' * (((nodes_info[:nodes].size - nodes_info[:tested_nodes].size) * PROGRESS_BAR_SIZE.to_f) / nodes_info[:nodes].size).round).white.bold ] end end) end |