inferno_core 0.0.3 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/inferno +7 -0
- data/lib/inferno/apps/cli/console.rb +12 -0
- data/lib/inferno/apps/cli/main.rb +18 -0
- data/lib/inferno/apps/cli/migration.rb +14 -0
- data/lib/inferno/apps/cli.rb +8 -0
- data/lib/inferno/apps/web/controllers/test_runs/create.rb +30 -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/hash_value_extractor.rb +11 -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 +3 -6
- data/lib/inferno/apps/web/serializers/test_group.rb +5 -8
- 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 +8 -2
- data/lib/inferno/config/boot/db.rb +3 -2
- data/lib/inferno/config/boot/logging.rb +2 -0
- data/lib/inferno/config/boot/sidekiq.rb +11 -0
- data/lib/inferno/config/boot/suites.rb +4 -6
- data/lib/inferno/config/boot.rb +2 -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/assertions.rb +85 -0
- data/lib/inferno/dsl/configurable.rb +126 -0
- data/lib/inferno/dsl/fhir_client.rb +8 -6
- data/lib/inferno/dsl/fhir_client_builder.rb +19 -3
- data/lib/inferno/dsl/fhir_validation.rb +1 -1
- data/lib/inferno/dsl/http_client.rb +14 -12
- data/lib/inferno/dsl/http_client_builder.rb +3 -3
- data/lib/inferno/dsl/request_storage.rb +34 -13
- data/lib/inferno/dsl/results.rb +49 -0
- data/lib/inferno/dsl/resume_test_route.rb +89 -0
- data/lib/inferno/dsl/runnable.rb +183 -28
- data/lib/inferno/dsl.rb +1 -3
- data/lib/inferno/entities/header.rb +14 -7
- data/lib/inferno/entities/message.rb +16 -6
- data/lib/inferno/entities/request.rb +59 -20
- data/lib/inferno/entities/result.rb +45 -22
- data/lib/inferno/entities/session_data.rb +39 -0
- data/lib/inferno/entities/test.rb +48 -8
- data/lib/inferno/entities/test_group.rb +8 -0
- data/lib/inferno/entities/test_run.rb +36 -6
- data/lib/inferno/entities/test_session.rb +17 -11
- data/lib/inferno/entities.rb +1 -1
- data/lib/inferno/exceptions.rb +24 -0
- data/lib/inferno/jobs/execute_test_run.rb +14 -0
- data/lib/inferno/jobs/resume_test_run.rb +14 -0
- data/lib/inferno/jobs.rb +16 -0
- data/lib/inferno/public/bundle.js +1 -1
- data/lib/inferno/repositories/in_memory_repository.rb +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 +81 -0
- data/lib/inferno/spec_support.rb +1 -1
- data/lib/inferno/test_runner.rb +126 -32
- data/lib/inferno/utils/markdown_formatter.rb +15 -0
- data/lib/inferno/utils/middleware/request_logger.rb +17 -4
- data/lib/inferno/utils/migration.rb +17 -0
- data/lib/inferno/version.rb +1 -1
- data/lib/inferno.rb +4 -4
- data/spec/factories/request.rb +14 -7
- data/spec/factories/result.rb +8 -0
- data/spec/factories/test_run.rb +2 -0
- metadata +84 -7
- data/bin/inferno-console +0 -8
- data/lib/inferno/dsl/fhir_manipulation.rb +0 -25
- data/lib/inferno/entities/test_input.rb +0 -20
data/lib/inferno/version.rb
CHANGED
data/lib/inferno.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require 'active_support/all'
|
2
|
-
require 'dotenv'
|
3
|
-
require 'dry/system/container'
|
4
|
-
require 'sequel'
|
5
1
|
require_relative 'inferno/config/application'
|
6
2
|
require_relative 'inferno/dsl'
|
7
3
|
require_relative 'inferno/entities'
|
8
4
|
require_relative 'inferno/exceptions'
|
5
|
+
require_relative 'inferno/jobs'
|
9
6
|
require_relative 'inferno/repositories'
|
10
7
|
require_relative 'inferno/spec_support'
|
11
8
|
require_relative 'inferno/test_runner'
|
12
9
|
require_relative 'inferno/version'
|
13
10
|
|
14
11
|
module Inferno
|
12
|
+
def self.routes
|
13
|
+
@routes ||= []
|
14
|
+
end
|
15
15
|
end
|
data/spec/factories/request.rb
CHANGED
@@ -12,6 +12,20 @@ FactoryBot.define do
|
|
12
12
|
name { nil }
|
13
13
|
status { 200 }
|
14
14
|
direction { 'outgoing' }
|
15
|
+
headers do
|
16
|
+
[
|
17
|
+
{
|
18
|
+
type: 'request',
|
19
|
+
name: 'Request-Header',
|
20
|
+
value: 'REQUEST HEADER VALUE'
|
21
|
+
},
|
22
|
+
{
|
23
|
+
type: 'response',
|
24
|
+
name: 'Response-Header',
|
25
|
+
value: 'RESPONSE HEADER VALUE'
|
26
|
+
}
|
27
|
+
]
|
28
|
+
end
|
15
29
|
|
16
30
|
request_body { nil }
|
17
31
|
|
@@ -24,12 +38,5 @@ FactoryBot.define do
|
|
24
38
|
to_create do |instance|
|
25
39
|
Inferno::Repositories::Requests.new.create(instance.to_hash)
|
26
40
|
end
|
27
|
-
|
28
|
-
after(:create) do |instance, evaluator|
|
29
|
-
instance.instance_variable_set(
|
30
|
-
:@headers,
|
31
|
-
repo_create_list(:header, evaluator.header_count, request_id: instance.index)
|
32
|
-
)
|
33
|
-
end
|
34
41
|
end
|
35
42
|
end
|
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.7
|
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-10-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -54,6 +54,20 @@ dependencies:
|
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '2.7'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: dry-configurable
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.12.0
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 0.12.0
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: dry-system
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,6 +110,20 @@ dependencies:
|
|
96
110
|
- - "~>"
|
97
111
|
- !ruby/object:Gem::Version
|
98
112
|
version: '4.0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: fhir_models
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 4.2.0
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 4.2.0
|
99
127
|
- !ruby/object:Gem::Dependency
|
100
128
|
name: hanami-controller
|
101
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,6 +236,20 @@ dependencies:
|
|
208
236
|
- - "~>"
|
209
237
|
- !ruby/object:Gem::Version
|
210
238
|
version: '5.42'
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: sidekiq
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: 6.2.1
|
246
|
+
type: :runtime
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: 6.2.1
|
211
253
|
- !ruby/object:Gem::Dependency
|
212
254
|
name: sqlite3
|
213
255
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,6 +264,20 @@ dependencies:
|
|
222
264
|
- - "~>"
|
223
265
|
- !ruby/object:Gem::Version
|
224
266
|
version: '1.4'
|
267
|
+
- !ruby/object:Gem::Dependency
|
268
|
+
name: thor
|
269
|
+
requirement: !ruby/object:Gem::Requirement
|
270
|
+
requirements:
|
271
|
+
- - "~>"
|
272
|
+
- !ruby/object:Gem::Version
|
273
|
+
version: 1.1.0
|
274
|
+
type: :runtime
|
275
|
+
prerelease: false
|
276
|
+
version_requirements: !ruby/object:Gem::Requirement
|
277
|
+
requirements:
|
278
|
+
- - "~>"
|
279
|
+
- !ruby/object:Gem::Version
|
280
|
+
version: 1.1.0
|
225
281
|
- !ruby/object:Gem::Dependency
|
226
282
|
name: codecov
|
227
283
|
requirement: !ruby/object:Gem::Requirement
|
@@ -395,13 +451,17 @@ description: Inferno Core is an open source tool for testing data exchanges enab
|
|
395
451
|
email:
|
396
452
|
- inferno@groups.mitre.org
|
397
453
|
executables:
|
398
|
-
- inferno
|
454
|
+
- inferno
|
399
455
|
extensions: []
|
400
456
|
extra_rdoc_files: []
|
401
457
|
files:
|
402
458
|
- LICENSE
|
403
|
-
- bin/inferno
|
459
|
+
- bin/inferno
|
404
460
|
- lib/inferno.rb
|
461
|
+
- lib/inferno/apps/cli.rb
|
462
|
+
- lib/inferno/apps/cli/console.rb
|
463
|
+
- lib/inferno/apps/cli/main.rb
|
464
|
+
- lib/inferno/apps/cli/migration.rb
|
405
465
|
- lib/inferno/apps/web/application.rb
|
406
466
|
- lib/inferno/apps/web/controllers/controller.rb
|
407
467
|
- lib/inferno/apps/web/controllers/requests/show.rb
|
@@ -409,18 +469,22 @@ files:
|
|
409
469
|
- lib/inferno/apps/web/controllers/test_runs/results/index.rb
|
410
470
|
- lib/inferno/apps/web/controllers/test_runs/show.rb
|
411
471
|
- lib/inferno/apps/web/controllers/test_sessions/create.rb
|
472
|
+
- lib/inferno/apps/web/controllers/test_sessions/last_test_run.rb
|
412
473
|
- lib/inferno/apps/web/controllers/test_sessions/results/index.rb
|
474
|
+
- lib/inferno/apps/web/controllers/test_sessions/session_data/index.rb
|
413
475
|
- lib/inferno/apps/web/controllers/test_sessions/show.rb
|
414
476
|
- lib/inferno/apps/web/controllers/test_suites/index.rb
|
415
477
|
- lib/inferno/apps/web/controllers/test_suites/show.rb
|
416
478
|
- lib/inferno/apps/web/index.html.erb
|
417
479
|
- lib/inferno/apps/web/router.rb
|
480
|
+
- lib/inferno/apps/web/serializers/hash_value_extractor.rb
|
418
481
|
- lib/inferno/apps/web/serializers/header.rb
|
419
482
|
- lib/inferno/apps/web/serializers/input.rb
|
420
483
|
- lib/inferno/apps/web/serializers/message.rb
|
421
484
|
- lib/inferno/apps/web/serializers/request.rb
|
422
485
|
- lib/inferno/apps/web/serializers/result.rb
|
423
486
|
- lib/inferno/apps/web/serializers/serializer.rb
|
487
|
+
- lib/inferno/apps/web/serializers/session_data.rb
|
424
488
|
- lib/inferno/apps/web/serializers/test.rb
|
425
489
|
- lib/inferno/apps/web/serializers/test_group.rb
|
426
490
|
- lib/inferno/apps/web/serializers/test_run.rb
|
@@ -430,19 +494,26 @@ files:
|
|
430
494
|
- lib/inferno/config/boot.rb
|
431
495
|
- lib/inferno/config/boot/db.rb
|
432
496
|
- lib/inferno/config/boot/logging.rb
|
497
|
+
- lib/inferno/config/boot/sidekiq.rb
|
433
498
|
- lib/inferno/config/boot/suites.rb
|
434
499
|
- lib/inferno/config/boot/web.rb
|
435
500
|
- lib/inferno/db/migrations/001_create_initial_structure.rb
|
501
|
+
- lib/inferno/db/migrations/002_add_wait_support.rb
|
502
|
+
- lib/inferno/db/migrations/003_update_session_data.rb
|
503
|
+
- lib/inferno/db/migrations/004_add_request_results_table.rb
|
504
|
+
- lib/inferno/db/migrations/005_add_updated_at_index_to_results.rb
|
505
|
+
- lib/inferno/db/schema.rb
|
436
506
|
- lib/inferno/dsl.rb
|
437
507
|
- lib/inferno/dsl/assertions.rb
|
508
|
+
- lib/inferno/dsl/configurable.rb
|
438
509
|
- lib/inferno/dsl/fhir_client.rb
|
439
510
|
- lib/inferno/dsl/fhir_client_builder.rb
|
440
|
-
- lib/inferno/dsl/fhir_manipulation.rb
|
441
511
|
- lib/inferno/dsl/fhir_validation.rb
|
442
512
|
- lib/inferno/dsl/http_client.rb
|
443
513
|
- lib/inferno/dsl/http_client_builder.rb
|
444
514
|
- lib/inferno/dsl/request_storage.rb
|
445
515
|
- lib/inferno/dsl/results.rb
|
516
|
+
- lib/inferno/dsl/resume_test_route.rb
|
446
517
|
- lib/inferno/dsl/runnable.rb
|
447
518
|
- lib/inferno/entities.rb
|
448
519
|
- lib/inferno/entities/attributes.rb
|
@@ -451,13 +522,16 @@ files:
|
|
451
522
|
- lib/inferno/entities/message.rb
|
452
523
|
- lib/inferno/entities/request.rb
|
453
524
|
- lib/inferno/entities/result.rb
|
525
|
+
- lib/inferno/entities/session_data.rb
|
454
526
|
- lib/inferno/entities/test.rb
|
455
527
|
- lib/inferno/entities/test_group.rb
|
456
|
-
- lib/inferno/entities/test_input.rb
|
457
528
|
- lib/inferno/entities/test_run.rb
|
458
529
|
- lib/inferno/entities/test_session.rb
|
459
530
|
- lib/inferno/entities/test_suite.rb
|
460
531
|
- lib/inferno/exceptions.rb
|
532
|
+
- lib/inferno/jobs.rb
|
533
|
+
- lib/inferno/jobs/execute_test_run.rb
|
534
|
+
- lib/inferno/jobs/resume_test_run.rb
|
461
535
|
- lib/inferno/public/217.bundle.js
|
462
536
|
- lib/inferno/public/assets.json
|
463
537
|
- lib/inferno/public/bundle.js
|
@@ -473,6 +547,7 @@ files:
|
|
473
547
|
- lib/inferno/repositories/repository.rb
|
474
548
|
- lib/inferno/repositories/requests.rb
|
475
549
|
- lib/inferno/repositories/results.rb
|
550
|
+
- lib/inferno/repositories/session_data.rb
|
476
551
|
- lib/inferno/repositories/test_groups.rb
|
477
552
|
- lib/inferno/repositories/test_runs.rb
|
478
553
|
- lib/inferno/repositories/test_sessions.rb
|
@@ -481,7 +556,9 @@ files:
|
|
481
556
|
- lib/inferno/repositories/validate_runnable_reference.rb
|
482
557
|
- lib/inferno/spec_support.rb
|
483
558
|
- lib/inferno/test_runner.rb
|
559
|
+
- lib/inferno/utils/markdown_formatter.rb
|
484
560
|
- lib/inferno/utils/middleware/request_logger.rb
|
561
|
+
- lib/inferno/utils/migration.rb
|
485
562
|
- lib/inferno/version.rb
|
486
563
|
- spec/factories/header.rb
|
487
564
|
- spec/factories/message.rb
|
@@ -515,7 +592,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
515
592
|
- !ruby/object:Gem::Version
|
516
593
|
version: '0'
|
517
594
|
requirements: []
|
518
|
-
rubygems_version: 3.1.
|
595
|
+
rubygems_version: 3.1.6
|
519
596
|
signing_key:
|
520
597
|
specification_version: 4
|
521
598
|
summary: Inferno Core is an open source tool for testing data exchanges enabled by
|
data/bin/inferno-console
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Inferno
|
2
|
-
module DSL
|
3
|
-
module FHIRManipulation
|
4
|
-
def walk_resource(resource, path = nil, &block)
|
5
|
-
resource.class::METADATA.each do |field_name, meta|
|
6
|
-
local_name = meta.fetch :local_name, field_name
|
7
|
-
values = [resource.instance_variable_get("@#{local_name}")].flatten.compact
|
8
|
-
next if values.empty?
|
9
|
-
|
10
|
-
values.each_with_index do |value, i|
|
11
|
-
child_path = if path.nil?
|
12
|
-
field_name
|
13
|
-
elsif meta['max'] > 1
|
14
|
-
"#{path}.#{field_name}[#{i}]"
|
15
|
-
else
|
16
|
-
"#{path}.#{field_name}"
|
17
|
-
end
|
18
|
-
yield value, meta, child_path
|
19
|
-
walk_resource value, child_path, &block unless FHIR::PRIMITIVES.include? meta['type']
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Inferno
|
2
|
-
module Entities
|
3
|
-
# A `TestRun` represents an input definition in a test.
|
4
|
-
#
|
5
|
-
# @attr_reader [String] id of the test input
|
6
|
-
# @attr_reader [String] status
|
7
|
-
# @attr_reader [String] test_suite_id
|
8
|
-
class TestInput
|
9
|
-
attr_reader :id, :status, :test_suite_id
|
10
|
-
|
11
|
-
# How to define test run inputs? Class in this file? Separate Entity?
|
12
|
-
|
13
|
-
def initialize(params)
|
14
|
-
@id = params[:id]
|
15
|
-
@status = params[:name]
|
16
|
-
@test_suite_id = params[:test_suite_id]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|