Module: Polyrun::Coverage::CollectorFragmentMeta

Defined in:
lib/polyrun/coverage/collector_fragment_meta.rb

Overview

Shard / worker naming for coverage JSON fragments (N×M CI vs run-shards).

Class Method Summary collapse

Class Method Details

.finish_debug_time_labelObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/polyrun/coverage/collector_fragment_meta.rb', line 21

def finish_debug_time_label
  mt = ENV["POLYRUN_SHARD_MATRIX_TOTAL"].to_i
  if mt > 1
    "worker pid=#{$$} shard(matrix)=#{ENV.fetch("POLYRUN_SHARD_MATRIX_INDEX", "?")} worker(local)=#{ENV.fetch("POLYRUN_SHARD_INDEX", "?")} Coverage::Collector.finish (write fragment)"
  elsif ENV["POLYRUN_SHARD_TOTAL"].to_i > 1
    "worker pid=#{$$} worker=#{ENV.fetch("POLYRUN_SHARD_INDEX", "?")} Coverage::Collector.finish (write fragment)"
  else
    "Coverage::Collector.finish (write fragment)"
  end
end

.fragment_default_basename_from_env(env = ENV) ⇒ Object

Default fragment basename (no extension) for coverage/polyrun-fragment-<basename>.json.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/polyrun/coverage/collector_fragment_meta.rb', line 8

def fragment_default_basename_from_env(env = ENV)
  local = env.fetch("POLYRUN_SHARD_INDEX", "0")
  mt = env["POLYRUN_SHARD_MATRIX_TOTAL"].to_i
  if mt > 1
    mi = env.fetch("POLYRUN_SHARD_MATRIX_INDEX", "0")
    "shard#{mi}-worker#{local}"
  elsif env["POLYRUN_SHARD_TOTAL"].to_i > 1
    "worker#{local}"
  else
    local
  end
end

.fragment_meta_from_env(basename) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/polyrun/coverage/collector_fragment_meta.rb', line 32

def fragment_meta_from_env(basename)
  mt = ENV["POLYRUN_SHARD_MATRIX_TOTAL"].to_i
  {
    basename: basename,
    worker_index: ENV.fetch("POLYRUN_SHARD_INDEX", "0"),
    shard_matrix_index: shard_matrix_index_value(mt)
  }
end

.merge_fragment_meta!(m, fm) ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/polyrun/coverage/collector_fragment_meta.rb', line 47

def merge_fragment_meta!(m, fm)
  return m if fm.nil?

  m["polyrun_fragment_basename"] = fm[:basename].to_s if fm[:basename]
  m["polyrun_worker_index"] = fm[:worker_index].to_s if fm[:worker_index]
  m["polyrun_shard_matrix_index"] = fm[:shard_matrix_index].to_s if fm[:shard_matrix_index]
  m
end

.shard_matrix_index_value(matrix_total) ⇒ Object



41
42
43
44
45
# File 'lib/polyrun/coverage/collector_fragment_meta.rb', line 41

def shard_matrix_index_value(matrix_total)
  return nil if matrix_total <= 1

  ENV.fetch("POLYRUN_SHARD_MATRIX_INDEX", "0")
end