Class: OpenSCAP::Xccdf::TestResult

Inherits:
Object
  • Object
show all
Defined in:
lib/openscap/xccdf/testresult.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(t) ⇒ TestResult

Returns a new instance of TestResult.



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/openscap/xccdf/testresult.rb', line 13

def initialize t
  case t
  when OpenSCAP::Source
    @raw = OpenSCAP.xccdf_result_import_source(t.raw)
    OpenSCAP.raise! if @raw.null?
  when FFI::Pointer
    @raw = OpenSCAP.xccdf_result_import_source(t)
    OpenSCAP.raise! if @raw.null?
  else
    raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with #{t}"
  end
  init_ruleresults
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



11
12
13
# File 'lib/openscap/xccdf/testresult.rb', line 11

def raw
  @raw
end

#rrObject (readonly)

Returns the value of attribute rr.



11
12
13
# File 'lib/openscap/xccdf/testresult.rb', line 11

def rr
  @rr
end

Instance Method Details

#destroyObject



59
60
61
62
# File 'lib/openscap/xccdf/testresult.rb', line 59

def destroy
  OpenSCAP.xccdf_result_free @raw
  @raw = nil
end

#idObject



27
28
29
# File 'lib/openscap/xccdf/testresult.rb', line 27

def id
  OpenSCAP.xccdf_result_get_id @raw
end

#profileObject



31
32
33
# File 'lib/openscap/xccdf/testresult.rb', line 31

def profile
  OpenSCAP.xccdf_result_get_profile @raw
end

#scoreObject



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/openscap/xccdf/testresult.rb', line 35

def score
  @score ||= {}.tap do |scores|
    OpenSCAP._iterate over: OpenSCAP.xccdf_result_get_scores(@raw), as: 'xccdf_score' do |s|
      scores[OpenSCAP.xccdf_score_get_system(s)] = {
        system: OpenSCAP.xccdf_score_get_system(s),
        value: OpenSCAP.xccdf_score_get_score(s),
        max: OpenSCAP.xccdf_score_get_maximum(s)
      }
    end
  end
end

#score!(benchmark) ⇒ Object



47
48
49
50
51
52
# File 'lib/openscap/xccdf/testresult.rb', line 47

def score!(benchmark)
  # recalculate the scores in the scope of given benchmark
  @score = nil
  OpenSCAP.raise! unless OpenSCAP.xccdf_result_recalculate_scores(@raw, benchmark.raw).zero?
  score
end

#sourceObject



54
55
56
57
# File 'lib/openscap/xccdf/testresult.rb', line 54

def source
  source_p = OpenSCAP.xccdf_result_export_source(raw, nil)
  OpenSCAP::Source.new source_p
end