inferno_core 0.0.3 → 0.0.4
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.rb +4 -0
- data/lib/inferno/apps/web/controllers/test_runs/create.rb +17 -10
- data/lib/inferno/apps/web/controllers/test_runs/show.rb +10 -0
- data/lib/inferno/apps/web/controllers/test_sessions/create.rb +1 -0
- data/lib/inferno/apps/web/controllers/test_sessions/last_test_run.rb +22 -0
- data/lib/inferno/apps/web/controllers/test_sessions/results/index.rb +6 -1
- data/lib/inferno/apps/web/controllers/test_sessions/session_data/index.rb +21 -0
- data/lib/inferno/apps/web/router.rb +15 -0
- data/lib/inferno/apps/web/serializers/request.rb +1 -0
- data/lib/inferno/apps/web/serializers/result.rb +8 -0
- data/lib/inferno/apps/web/serializers/session_data.rb +10 -0
- data/lib/inferno/apps/web/serializers/test.rb +1 -3
- data/lib/inferno/apps/web/serializers/test_group.rb +2 -3
- data/lib/inferno/apps/web/serializers/test_run.rb +1 -0
- data/lib/inferno/apps/web/serializers/test_session.rb +1 -1
- data/lib/inferno/apps/web/serializers/test_suite.rb +1 -0
- data/lib/inferno/config/application.rb +4 -2
- data/lib/inferno/config/boot.rb +2 -0
- data/lib/inferno/config/boot/db.rb +10 -1
- data/lib/inferno/config/boot/sidekiq.rb +11 -0
- data/lib/inferno/db/migrations/001_create_initial_structure.rb +0 -21
- data/lib/inferno/db/migrations/002_add_wait_support.rb +7 -0
- data/lib/inferno/db/migrations/003_update_session_data.rb +18 -0
- data/lib/inferno/db/migrations/004_add_request_results_table.rb +9 -0
- data/lib/inferno/db/migrations/005_add_updated_at_index_to_results.rb +5 -0
- data/lib/inferno/db/schema.rb +154 -0
- data/lib/inferno/dsl.rb +1 -3
- data/lib/inferno/dsl/fhir_client_builder.rb +16 -0
- data/lib/inferno/dsl/request_storage.rb +12 -0
- data/lib/inferno/dsl/results.rb +49 -0
- data/lib/inferno/dsl/resume_test_route.rb +89 -0
- data/lib/inferno/dsl/runnable.rb +96 -7
- data/lib/inferno/entities.rb +1 -1
- data/lib/inferno/entities/header.rb +7 -7
- data/lib/inferno/entities/message.rb +8 -6
- data/lib/inferno/entities/request.rb +40 -14
- data/lib/inferno/entities/result.rb +34 -18
- data/lib/inferno/entities/session_data.rb +33 -0
- data/lib/inferno/entities/test.rb +20 -7
- data/lib/inferno/entities/test_run.rb +13 -6
- data/lib/inferno/entities/test_session.rb +8 -8
- data/lib/inferno/exceptions.rb +12 -0
- data/lib/inferno/jobs.rb +16 -0
- data/lib/inferno/jobs/execute_test_run.rb +14 -0
- data/lib/inferno/jobs/resume_test_run.rb +14 -0
- data/lib/inferno/public/bundle.js +1 -1
- data/lib/inferno/repositories/repository.rb +13 -0
- data/lib/inferno/repositories/requests.rb +5 -4
- data/lib/inferno/repositories/results.rb +151 -3
- data/lib/inferno/repositories/session_data.rb +47 -0
- data/lib/inferno/repositories/test_runs.rb +66 -0
- data/lib/inferno/test_runner.rb +121 -29
- data/lib/inferno/utils/middleware/request_logger.rb +16 -3
- data/lib/inferno/version.rb +1 -1
- data/spec/factories/result.rb +8 -0
- data/spec/factories/test_run.rb +2 -0
- metadata +32 -5
- data/lib/inferno/dsl/fhir_manipulation.rb +0 -25
- data/lib/inferno/entities/test_input.rb +0 -20
@@ -0,0 +1,47 @@
|
|
1
|
+
module Inferno
|
2
|
+
module Repositories
|
3
|
+
class SessionData < Repository
|
4
|
+
def save(params)
|
5
|
+
name = params[:name].to_s.downcase
|
6
|
+
test_session_id = params[:test_session_id]
|
7
|
+
db
|
8
|
+
.insert_conflict(
|
9
|
+
target: :id,
|
10
|
+
update: { value: params[:value] }
|
11
|
+
).insert(
|
12
|
+
id: "#{test_session_id}_#{name}",
|
13
|
+
name: name,
|
14
|
+
value: params[:value],
|
15
|
+
test_session_id: test_session_id
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def load(test_session_id:, name:)
|
20
|
+
self.class::Model
|
21
|
+
.find(test_session_id: test_session_id, name: name.to_s.downcase)
|
22
|
+
&.value
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_all_from_session(test_session_id)
|
26
|
+
self.class::Model
|
27
|
+
.where(test_session_id: test_session_id)
|
28
|
+
.all
|
29
|
+
.map! do |session_data_hash|
|
30
|
+
build_entity(
|
31
|
+
session_data_hash
|
32
|
+
.to_json_data
|
33
|
+
.deep_symbolize_keys!
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def entity_class_name
|
39
|
+
'SessionData'
|
40
|
+
end
|
41
|
+
|
42
|
+
class Model < Sequel::Model(db)
|
43
|
+
many_to_one :test_session, class: 'Inferno::Repositories::TestSessions::Model', key: :test_session_id
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -24,6 +24,65 @@ module Inferno
|
|
24
24
|
.map! { |result| results_repo.build_entity(result) }
|
25
25
|
end
|
26
26
|
|
27
|
+
def find_latest_waiting_by_identifier(identifier)
|
28
|
+
test_run_hash =
|
29
|
+
self.class::Model
|
30
|
+
.where(status: 'waiting')
|
31
|
+
.where(identifier: identifier)
|
32
|
+
.where { wait_timeout >= Time.now }
|
33
|
+
.order(Sequel.desc(:updated_at))
|
34
|
+
.limit(1)
|
35
|
+
.to_a
|
36
|
+
&.first
|
37
|
+
&.to_hash
|
38
|
+
|
39
|
+
return nil if test_run_hash.nil?
|
40
|
+
|
41
|
+
build_entity(test_run_hash)
|
42
|
+
end
|
43
|
+
|
44
|
+
def last_test_run(test_session_id)
|
45
|
+
test_run_hash =
|
46
|
+
self.class::Model
|
47
|
+
.where(test_session_id: test_session_id)
|
48
|
+
.order(Sequel.desc(:updated_at))
|
49
|
+
.limit(1)
|
50
|
+
.to_a
|
51
|
+
.map { |record| record.to_json_data(json_serializer_options).deep_symbolize_keys! }
|
52
|
+
&.first
|
53
|
+
&.to_hash
|
54
|
+
|
55
|
+
return nil if test_run_hash.nil?
|
56
|
+
|
57
|
+
build_entity(test_run_hash)
|
58
|
+
end
|
59
|
+
|
60
|
+
def mark_as_running(test_run_id)
|
61
|
+
update(test_run_id, status: 'running')
|
62
|
+
end
|
63
|
+
|
64
|
+
def mark_as_done(test_run_id)
|
65
|
+
update(test_run_id, status: 'done')
|
66
|
+
end
|
67
|
+
|
68
|
+
def mark_as_waiting(test_run_id, identifier, timeout)
|
69
|
+
update(
|
70
|
+
test_run_id,
|
71
|
+
status: 'waiting',
|
72
|
+
identifier: identifier,
|
73
|
+
wait_timeout: Time.now + timeout.seconds
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
def mark_as_no_longer_waiting(test_run_id)
|
78
|
+
update(
|
79
|
+
test_run_id,
|
80
|
+
status: 'queued',
|
81
|
+
identifier: nil,
|
82
|
+
wait_timeout: nil
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
27
86
|
class Model < Sequel::Model(db)
|
28
87
|
include ValidateRunnableReference
|
29
88
|
|
@@ -33,6 +92,13 @@ module Inferno
|
|
33
92
|
key: :test_run_id
|
34
93
|
many_to_one :test_session, class: 'Inferno::Repositories::TestSessions::Model', key: :test_session_id
|
35
94
|
|
95
|
+
def validate
|
96
|
+
super
|
97
|
+
if status.present? && !Entities::TestRun::STATUS_OPTIONS.include?(status) # rubocop:disable Style/GuardClause
|
98
|
+
errors.add(:status, "'#{status}' is not valid")
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
36
102
|
def before_create
|
37
103
|
self.id = SecureRandom.uuid
|
38
104
|
time = Time.now
|
data/lib/inferno/test_runner.rb
CHANGED
@@ -1,73 +1,165 @@
|
|
1
1
|
module Inferno
|
2
2
|
# @api private
|
3
3
|
class TestRunner
|
4
|
-
attr_reader :test_session, :test_run
|
4
|
+
attr_reader :test_session, :test_run, :resuming
|
5
5
|
|
6
|
-
def initialize(test_session:, test_run:)
|
6
|
+
def initialize(test_session:, test_run:, resume: false)
|
7
7
|
@test_session = test_session
|
8
8
|
@test_run = test_run
|
9
|
+
@resuming = resume
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_results
|
13
|
+
@run_results ||= {}
|
9
14
|
end
|
10
15
|
|
11
16
|
def results_repo
|
12
17
|
@results_repo ||= Repositories::Results.new
|
13
18
|
end
|
14
19
|
|
15
|
-
def
|
20
|
+
def test_runs_repo
|
21
|
+
@test_runs_repo ||= Repositories::TestRuns.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def session_data_repo
|
25
|
+
@session_data_repo ||= Repositories::SessionData.new
|
26
|
+
end
|
27
|
+
|
28
|
+
def start
|
29
|
+
test_runs_repo.mark_as_running(test_run.id)
|
30
|
+
|
31
|
+
run(test_run.runnable)
|
32
|
+
|
33
|
+
test_runs_repo.mark_as_done(test_run.id) unless run_results.values.any?(&:waiting?)
|
34
|
+
|
35
|
+
run_results.values
|
36
|
+
end
|
37
|
+
|
38
|
+
def run(runnable)
|
16
39
|
if runnable < Entities::Test
|
17
|
-
run_test(runnable
|
40
|
+
return existing_test_result(runnable) || run_test(runnable) if resuming
|
41
|
+
|
42
|
+
run_test(runnable)
|
18
43
|
else
|
19
|
-
run_group(runnable
|
44
|
+
run_group(runnable)
|
20
45
|
end
|
21
46
|
end
|
22
47
|
|
23
|
-
def
|
24
|
-
|
48
|
+
def existing_test_result(runnable)
|
49
|
+
results_repo.result_for_test_run(runnable.reference_hash.merge(test_run_id: test_run.id))
|
50
|
+
end
|
51
|
+
|
52
|
+
def run_test(test)
|
53
|
+
inputs = load_inputs(test)
|
54
|
+
|
55
|
+
input_json_string = JSON.generate(inputs)
|
56
|
+
test_instance = test.new(inputs: inputs, test_session_id: test_session.id)
|
25
57
|
|
26
58
|
result = begin
|
27
|
-
inputs.merge(outputs).each do |key, value|
|
28
|
-
test_instance.instance_variable_set("@#{key}", value)
|
29
|
-
end
|
30
59
|
test_instance.load_named_requests
|
31
|
-
test_instance.instance_eval(&
|
60
|
+
test_instance.instance_eval(&test.block)
|
32
61
|
'pass'
|
33
62
|
rescue Exceptions::TestResultException => e
|
34
63
|
test_instance.result_message = e.message
|
35
64
|
e.result
|
36
65
|
rescue StandardError => e
|
66
|
+
Application['logger'].error(e.full_message)
|
37
67
|
test_instance.result_message = "Error: #{e.message}"
|
38
68
|
'error'
|
39
69
|
end
|
40
70
|
|
41
|
-
|
42
|
-
|
71
|
+
outputs = save_outputs(test_instance)
|
72
|
+
output_json_string = JSON.generate(outputs)
|
73
|
+
|
74
|
+
if result == 'wait'
|
75
|
+
test_runs_repo.mark_as_waiting(test_run.id, test_instance.identifier, test_instance.wait_timeout)
|
43
76
|
end
|
44
77
|
|
45
|
-
|
78
|
+
test_result = persist_result(
|
46
79
|
{
|
47
|
-
test_session_id: test_session.id,
|
48
|
-
test_run_id: test_run.id,
|
49
80
|
messages: test_instance.messages,
|
50
81
|
requests: test_instance.requests,
|
51
82
|
result: result,
|
52
|
-
result_message: test_instance.result_message
|
53
|
-
|
54
|
-
|
83
|
+
result_message: test_instance.result_message,
|
84
|
+
input_json: input_json_string,
|
85
|
+
output_json: output_json_string
|
86
|
+
}.merge(test.reference_hash)
|
87
|
+
)
|
88
|
+
|
89
|
+
# If running a single test, update its parents' results. If running a
|
90
|
+
# group or suite, #run_group handles updating the parents.
|
91
|
+
return test_result if test_run.test_id.blank?
|
92
|
+
|
93
|
+
update_parent_result(test.parent)
|
94
|
+
|
95
|
+
test_result
|
55
96
|
end
|
56
97
|
|
57
|
-
def run_group(
|
58
|
-
results =
|
98
|
+
def run_group(group)
|
99
|
+
results = []
|
100
|
+
group.children.each do |child|
|
101
|
+
result = run(child)
|
102
|
+
results << result
|
103
|
+
break if results.last.waiting?
|
104
|
+
end
|
59
105
|
|
60
|
-
results
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
106
|
+
results.flatten!
|
107
|
+
|
108
|
+
group_result = persist_result(group.reference_hash.merge(result: roll_up_result(results)))
|
109
|
+
|
110
|
+
update_parent_result(group.parent)
|
111
|
+
|
112
|
+
group_result
|
113
|
+
end
|
114
|
+
|
115
|
+
def update_parent_result(parent)
|
116
|
+
return if parent.nil?
|
117
|
+
|
118
|
+
children = parent.children
|
119
|
+
child_results = results_repo.current_results_for_test_session_and_runnables(test_session.id, children)
|
120
|
+
return if children.length != child_results.length
|
121
|
+
|
122
|
+
old_result = results_repo.current_result_for_test_session(test_session.id, parent.reference_hash)&.result
|
123
|
+
new_result = roll_up_result(child_results)
|
124
|
+
|
125
|
+
if new_result != old_result
|
126
|
+
persist_result(parent.reference_hash.merge(result: new_result))
|
127
|
+
|
128
|
+
update_parent_result(parent.parent)
|
129
|
+
end
|
130
|
+
|
131
|
+
new_result
|
132
|
+
end
|
133
|
+
|
134
|
+
def load_inputs(runnable)
|
135
|
+
runnable.inputs.each_with_object({}) do |input, input_hash|
|
136
|
+
name = input[:name]
|
137
|
+
input_hash[name] = session_data_repo.load(test_session_id: test_session.id, name: name)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def save_outputs(runnable_instance)
|
142
|
+
outputs =
|
143
|
+
runnable_instance.outputs.map do |output_name|
|
144
|
+
{
|
145
|
+
name: output_name,
|
146
|
+
value: runnable_instance.send(output_name)
|
147
|
+
}
|
148
|
+
end
|
149
|
+
outputs.compact!
|
150
|
+
outputs.each do |output|
|
151
|
+
session_data_repo.save(output.merge(test_session_id: test_session.id))
|
152
|
+
end
|
153
|
+
|
154
|
+
outputs
|
67
155
|
end
|
68
156
|
|
69
157
|
def persist_result(params)
|
70
|
-
results_repo.create(
|
158
|
+
result = results_repo.create(
|
159
|
+
params.merge(test_run_id: test_run.id, test_session_id: test_session.id)
|
160
|
+
)
|
161
|
+
|
162
|
+
run_results[result.runnable.id] = result
|
71
163
|
end
|
72
164
|
|
73
165
|
def roll_up_result(results)
|
@@ -29,11 +29,17 @@ module Inferno
|
|
29
29
|
|
30
30
|
def log_response(response, start_time, end_time, exception = nil)
|
31
31
|
elapsed = end_time - start_time
|
32
|
-
status, _response_headers,
|
32
|
+
status, _response_headers, body = response if response
|
33
33
|
status, = response if exception
|
34
34
|
|
35
35
|
logger.info("#{status} in #{elapsed.in_milliseconds} ms")
|
36
|
-
|
36
|
+
return unless body.present?
|
37
|
+
|
38
|
+
if body.length > 100
|
39
|
+
logger.info("#{body[0..100]}...")
|
40
|
+
else
|
41
|
+
logger.info(body)
|
42
|
+
end
|
37
43
|
end
|
38
44
|
|
39
45
|
def log_request(env)
|
@@ -47,7 +53,14 @@ module Inferno
|
|
47
53
|
query_string = query.blank? ? '' : "?#{query}"
|
48
54
|
|
49
55
|
logger.info("#{method} #{scheme}://#{host}#{path}#{query_string}")
|
50
|
-
|
56
|
+
|
57
|
+
return unless body.present?
|
58
|
+
|
59
|
+
if body.length > 100
|
60
|
+
logger.info("#{body[0..100]}...")
|
61
|
+
else
|
62
|
+
logger.info(body)
|
63
|
+
end
|
51
64
|
end
|
52
65
|
end
|
53
66
|
end
|
data/lib/inferno/version.rb
CHANGED
data/spec/factories/result.rb
CHANGED
@@ -14,11 +14,19 @@ FactoryBot.define do
|
|
14
14
|
test_suite_id { runnable[:test_suite_id] }
|
15
15
|
test_group_id { runnable[:test_group_id] }
|
16
16
|
test_id { runnable[:test_id] }
|
17
|
+
output_json { '[]' }
|
17
18
|
|
18
19
|
result { 'pass' }
|
19
20
|
|
20
21
|
initialize_with { new(**attributes) }
|
21
22
|
|
23
|
+
before(:create) do |instance, evaluator|
|
24
|
+
instance.instance_variable_set(
|
25
|
+
:@requests,
|
26
|
+
repo_create_list(:request, evaluator.request_count, result_id: instance.id)
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
22
30
|
to_create do |instance|
|
23
31
|
Inferno::Repositories::Results.new.create(instance.to_hash)
|
24
32
|
end
|
data/spec/factories/test_run.rb
CHANGED
@@ -10,8 +10,10 @@ FactoryBot.define do
|
|
10
10
|
test_suite_id { runnable[:test_suite_id] }
|
11
11
|
test_group_id { runnable[:test_group_id] }
|
12
12
|
test_id { runnable[:test_id] }
|
13
|
+
status { 'queued' }
|
13
14
|
|
14
15
|
inputs { nil }
|
16
|
+
wait_timeout { nil }
|
15
17
|
|
16
18
|
initialize_with { new(**attributes) }
|
17
19
|
|
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.0.
|
4
|
+
version: 0.0.4
|
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: 2021-
|
13
|
+
date: 2021-08-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -96,6 +96,20 @@ dependencies:
|
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '4.0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: fhir_models
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 4.2.0
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 4.2.0
|
99
113
|
- !ruby/object:Gem::Dependency
|
100
114
|
name: hanami-controller
|
101
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -409,7 +423,9 @@ files:
|
|
409
423
|
- lib/inferno/apps/web/controllers/test_runs/results/index.rb
|
410
424
|
- lib/inferno/apps/web/controllers/test_runs/show.rb
|
411
425
|
- lib/inferno/apps/web/controllers/test_sessions/create.rb
|
426
|
+
- lib/inferno/apps/web/controllers/test_sessions/last_test_run.rb
|
412
427
|
- lib/inferno/apps/web/controllers/test_sessions/results/index.rb
|
428
|
+
- lib/inferno/apps/web/controllers/test_sessions/session_data/index.rb
|
413
429
|
- lib/inferno/apps/web/controllers/test_sessions/show.rb
|
414
430
|
- lib/inferno/apps/web/controllers/test_suites/index.rb
|
415
431
|
- lib/inferno/apps/web/controllers/test_suites/show.rb
|
@@ -421,6 +437,7 @@ files:
|
|
421
437
|
- lib/inferno/apps/web/serializers/request.rb
|
422
438
|
- lib/inferno/apps/web/serializers/result.rb
|
423
439
|
- lib/inferno/apps/web/serializers/serializer.rb
|
440
|
+
- lib/inferno/apps/web/serializers/session_data.rb
|
424
441
|
- lib/inferno/apps/web/serializers/test.rb
|
425
442
|
- lib/inferno/apps/web/serializers/test_group.rb
|
426
443
|
- lib/inferno/apps/web/serializers/test_run.rb
|
@@ -430,19 +447,25 @@ files:
|
|
430
447
|
- lib/inferno/config/boot.rb
|
431
448
|
- lib/inferno/config/boot/db.rb
|
432
449
|
- lib/inferno/config/boot/logging.rb
|
450
|
+
- lib/inferno/config/boot/sidekiq.rb
|
433
451
|
- lib/inferno/config/boot/suites.rb
|
434
452
|
- lib/inferno/config/boot/web.rb
|
435
453
|
- lib/inferno/db/migrations/001_create_initial_structure.rb
|
454
|
+
- lib/inferno/db/migrations/002_add_wait_support.rb
|
455
|
+
- lib/inferno/db/migrations/003_update_session_data.rb
|
456
|
+
- lib/inferno/db/migrations/004_add_request_results_table.rb
|
457
|
+
- lib/inferno/db/migrations/005_add_updated_at_index_to_results.rb
|
458
|
+
- lib/inferno/db/schema.rb
|
436
459
|
- lib/inferno/dsl.rb
|
437
460
|
- lib/inferno/dsl/assertions.rb
|
438
461
|
- lib/inferno/dsl/fhir_client.rb
|
439
462
|
- lib/inferno/dsl/fhir_client_builder.rb
|
440
|
-
- lib/inferno/dsl/fhir_manipulation.rb
|
441
463
|
- lib/inferno/dsl/fhir_validation.rb
|
442
464
|
- lib/inferno/dsl/http_client.rb
|
443
465
|
- lib/inferno/dsl/http_client_builder.rb
|
444
466
|
- lib/inferno/dsl/request_storage.rb
|
445
467
|
- lib/inferno/dsl/results.rb
|
468
|
+
- lib/inferno/dsl/resume_test_route.rb
|
446
469
|
- lib/inferno/dsl/runnable.rb
|
447
470
|
- lib/inferno/entities.rb
|
448
471
|
- lib/inferno/entities/attributes.rb
|
@@ -451,13 +474,16 @@ files:
|
|
451
474
|
- lib/inferno/entities/message.rb
|
452
475
|
- lib/inferno/entities/request.rb
|
453
476
|
- lib/inferno/entities/result.rb
|
477
|
+
- lib/inferno/entities/session_data.rb
|
454
478
|
- lib/inferno/entities/test.rb
|
455
479
|
- lib/inferno/entities/test_group.rb
|
456
|
-
- lib/inferno/entities/test_input.rb
|
457
480
|
- lib/inferno/entities/test_run.rb
|
458
481
|
- lib/inferno/entities/test_session.rb
|
459
482
|
- lib/inferno/entities/test_suite.rb
|
460
483
|
- lib/inferno/exceptions.rb
|
484
|
+
- lib/inferno/jobs.rb
|
485
|
+
- lib/inferno/jobs/execute_test_run.rb
|
486
|
+
- lib/inferno/jobs/resume_test_run.rb
|
461
487
|
- lib/inferno/public/217.bundle.js
|
462
488
|
- lib/inferno/public/assets.json
|
463
489
|
- lib/inferno/public/bundle.js
|
@@ -473,6 +499,7 @@ files:
|
|
473
499
|
- lib/inferno/repositories/repository.rb
|
474
500
|
- lib/inferno/repositories/requests.rb
|
475
501
|
- lib/inferno/repositories/results.rb
|
502
|
+
- lib/inferno/repositories/session_data.rb
|
476
503
|
- lib/inferno/repositories/test_groups.rb
|
477
504
|
- lib/inferno/repositories/test_runs.rb
|
478
505
|
- lib/inferno/repositories/test_sessions.rb
|
@@ -515,7 +542,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
515
542
|
- !ruby/object:Gem::Version
|
516
543
|
version: '0'
|
517
544
|
requirements: []
|
518
|
-
rubygems_version: 3.1.
|
545
|
+
rubygems_version: 3.1.6
|
519
546
|
signing_key:
|
520
547
|
specification_version: 4
|
521
548
|
summary: Inferno Core is an open source tool for testing data exchanges enabled by
|