inferno_core 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/inferno/apps/web/controllers/test_runs/destroy.rb +39 -0
- data/lib/inferno/apps/web/router.rb +1 -1
- data/lib/inferno/apps/web/serializers/result.rb +1 -0
- data/lib/inferno/apps/web/serializers/test.rb +4 -0
- data/lib/inferno/apps/web/serializers/test_group.rb +4 -0
- data/lib/inferno/apps/web/serializers/test_suite.rb +3 -0
- data/lib/inferno/dsl/configurable.rb +4 -0
- data/lib/inferno/dsl/fhir_client.rb +14 -0
- data/lib/inferno/dsl/http_client.rb +62 -0
- data/lib/inferno/dsl/runnable.rb +67 -1
- data/lib/inferno/entities/has_runnable.rb +26 -0
- data/lib/inferno/entities/result.rb +8 -4
- data/lib/inferno/entities/test_group.rb +4 -6
- data/lib/inferno/entities/test_run.rb +2 -19
- data/lib/inferno/entities/test_suite.rb +3 -4
- data/lib/inferno/entities.rb +1 -0
- data/lib/inferno/public/bundle.js +9 -9
- data/lib/inferno/repositories/results.rb +4 -0
- data/lib/inferno/repositories/session_data.rb +1 -1
- data/lib/inferno/repositories/test_runs.rb +8 -0
- data/lib/inferno/result_summarizer.rb +40 -0
- data/lib/inferno/test_runner.rb +13 -7
- data/lib/inferno/version.rb +1 -1
- metadata +7 -4
@@ -140,6 +140,10 @@ module Inferno
|
|
140
140
|
update(result_id, result: 'pass', result_message: message)
|
141
141
|
end
|
142
142
|
|
143
|
+
def cancel_waiting_result(result_id, message = nil)
|
144
|
+
update(result_id, result: 'cancel', result_message: message)
|
145
|
+
end
|
146
|
+
|
143
147
|
def json_serializer_options
|
144
148
|
{
|
145
149
|
include: {
|
@@ -65,6 +65,10 @@ module Inferno
|
|
65
65
|
build_entity(test_run_hash)
|
66
66
|
end
|
67
67
|
|
68
|
+
def status_for_test_run(id)
|
69
|
+
self.class::Model.where(id: id).get(:status)
|
70
|
+
end
|
71
|
+
|
68
72
|
def mark_as_running(test_run_id)
|
69
73
|
update(test_run_id, status: 'running')
|
70
74
|
end
|
@@ -91,6 +95,10 @@ module Inferno
|
|
91
95
|
)
|
92
96
|
end
|
93
97
|
|
98
|
+
def mark_as_cancelling(test_run_id)
|
99
|
+
update(test_run_id, status: 'cancelling')
|
100
|
+
end
|
101
|
+
|
94
102
|
class Model < Sequel::Model(db)
|
95
103
|
include ValidateRunnableReference
|
96
104
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Inferno
|
2
|
+
# @private
|
3
|
+
# This class takes an array of results and determines the overall result. This
|
4
|
+
# is used to determine the result of a TestGroup/TestSuite based on the
|
5
|
+
# results of it's children.
|
6
|
+
class ResultSummarizer
|
7
|
+
attr_reader :results
|
8
|
+
|
9
|
+
def initialize(results)
|
10
|
+
@results = results
|
11
|
+
end
|
12
|
+
|
13
|
+
def summarize
|
14
|
+
prioritized_result_strings.find { |result_string| unique_result_strings.include? result_string }
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def prioritized_result_strings
|
20
|
+
Entities::Result::RESULT_OPTIONS
|
21
|
+
end
|
22
|
+
|
23
|
+
def required_results
|
24
|
+
@required_results ||= results.select(&:required?)
|
25
|
+
end
|
26
|
+
|
27
|
+
def all_optional_results?
|
28
|
+
required_results.blank?
|
29
|
+
end
|
30
|
+
|
31
|
+
def results_for_summary
|
32
|
+
all_optional_results? ? results : required_results
|
33
|
+
end
|
34
|
+
|
35
|
+
def unique_result_strings
|
36
|
+
@unique_result_strings ||=
|
37
|
+
results_for_summary.map(&:result).uniq
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/inferno/test_runner.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative './result_summarizer'
|
1
2
|
require_relative './utils/markdown_formatter'
|
2
3
|
|
3
4
|
module Inferno
|
@@ -28,8 +29,13 @@ module Inferno
|
|
28
29
|
@session_data_repo ||= Repositories::SessionData.new
|
29
30
|
end
|
30
31
|
|
32
|
+
def test_run_is_cancelling
|
33
|
+
# forces db refetch of the test run status in case it is being cancelled
|
34
|
+
test_runs_repo.status_for_test_run(test_run.id) == 'cancelling'
|
35
|
+
end
|
36
|
+
|
31
37
|
def start
|
32
|
-
test_runs_repo.mark_as_running(test_run.id)
|
38
|
+
test_runs_repo.mark_as_running(test_run.id) unless test_run.status == 'cancelling'
|
33
39
|
|
34
40
|
run(test_run.runnable)
|
35
41
|
|
@@ -59,6 +65,8 @@ module Inferno
|
|
59
65
|
test_instance = test.new(inputs: inputs, test_session_id: test_session.id, scratch: scratch)
|
60
66
|
|
61
67
|
result = begin
|
68
|
+
raise Exceptions::CancelException, 'Test cancelled by user' if test_run_is_cancelling
|
69
|
+
|
62
70
|
test_instance.load_named_requests
|
63
71
|
test_instance.instance_eval(&test.block)
|
64
72
|
'pass'
|
@@ -120,7 +128,9 @@ module Inferno
|
|
120
128
|
|
121
129
|
children = parent.children
|
122
130
|
child_results = results_repo.current_results_for_test_session_and_runnables(test_session.id, children)
|
123
|
-
|
131
|
+
required_children = children.select(&:required?)
|
132
|
+
required_results = child_results.select(&:required?)
|
133
|
+
return if required_children.length != required_results.length
|
124
134
|
|
125
135
|
old_result = results_repo.current_result_for_test_session(test_session.id, parent.reference_hash)&.result
|
126
136
|
new_result = roll_up_result(child_results)
|
@@ -170,11 +180,7 @@ module Inferno
|
|
170
180
|
end
|
171
181
|
|
172
182
|
def roll_up_result(results)
|
173
|
-
|
174
|
-
unique_results = results.map(&:result).uniq
|
175
|
-
result_priority.find do |result|
|
176
|
-
unique_results.include? result
|
177
|
-
end
|
183
|
+
ResultSummarizer.new(results).summarize
|
178
184
|
end
|
179
185
|
end
|
180
186
|
end
|
data/lib/inferno/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inferno_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen MacVicar
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-01
|
13
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -242,14 +242,14 @@ dependencies:
|
|
242
242
|
requirements:
|
243
243
|
- - "~>"
|
244
244
|
- !ruby/object:Gem::Version
|
245
|
-
version: 6.
|
245
|
+
version: 6.4.0
|
246
246
|
type: :runtime
|
247
247
|
prerelease: false
|
248
248
|
version_requirements: !ruby/object:Gem::Requirement
|
249
249
|
requirements:
|
250
250
|
- - "~>"
|
251
251
|
- !ruby/object:Gem::Version
|
252
|
-
version: 6.
|
252
|
+
version: 6.4.0
|
253
253
|
- !ruby/object:Gem::Dependency
|
254
254
|
name: sqlite3
|
255
255
|
requirement: !ruby/object:Gem::Requirement
|
@@ -466,6 +466,7 @@ files:
|
|
466
466
|
- lib/inferno/apps/web/controllers/controller.rb
|
467
467
|
- lib/inferno/apps/web/controllers/requests/show.rb
|
468
468
|
- lib/inferno/apps/web/controllers/test_runs/create.rb
|
469
|
+
- lib/inferno/apps/web/controllers/test_runs/destroy.rb
|
469
470
|
- lib/inferno/apps/web/controllers/test_runs/results/index.rb
|
470
471
|
- lib/inferno/apps/web/controllers/test_runs/show.rb
|
471
472
|
- lib/inferno/apps/web/controllers/test_sessions/create.rb
|
@@ -520,6 +521,7 @@ files:
|
|
520
521
|
- lib/inferno/entities.rb
|
521
522
|
- lib/inferno/entities/attributes.rb
|
522
523
|
- lib/inferno/entities/entity.rb
|
524
|
+
- lib/inferno/entities/has_runnable.rb
|
523
525
|
- lib/inferno/entities/header.rb
|
524
526
|
- lib/inferno/entities/message.rb
|
525
527
|
- lib/inferno/entities/request.rb
|
@@ -557,6 +559,7 @@ files:
|
|
557
559
|
- lib/inferno/repositories/test_suites.rb
|
558
560
|
- lib/inferno/repositories/tests.rb
|
559
561
|
- lib/inferno/repositories/validate_runnable_reference.rb
|
562
|
+
- lib/inferno/result_summarizer.rb
|
560
563
|
- lib/inferno/spec_support.rb
|
561
564
|
- lib/inferno/test_runner.rb
|
562
565
|
- lib/inferno/utils/markdown_formatter.rb
|