inferno_core 0.0.3 → 0.0.7

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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/bin/inferno +7 -0
  3. data/lib/inferno/apps/cli/console.rb +12 -0
  4. data/lib/inferno/apps/cli/main.rb +18 -0
  5. data/lib/inferno/apps/cli/migration.rb +14 -0
  6. data/lib/inferno/apps/cli.rb +8 -0
  7. data/lib/inferno/apps/web/controllers/test_runs/create.rb +30 -10
  8. data/lib/inferno/apps/web/controllers/test_runs/show.rb +10 -0
  9. data/lib/inferno/apps/web/controllers/test_sessions/create.rb +1 -0
  10. data/lib/inferno/apps/web/controllers/test_sessions/last_test_run.rb +22 -0
  11. data/lib/inferno/apps/web/controllers/test_sessions/results/index.rb +6 -1
  12. data/lib/inferno/apps/web/controllers/test_sessions/session_data/index.rb +21 -0
  13. data/lib/inferno/apps/web/router.rb +15 -0
  14. data/lib/inferno/apps/web/serializers/hash_value_extractor.rb +11 -0
  15. data/lib/inferno/apps/web/serializers/request.rb +1 -0
  16. data/lib/inferno/apps/web/serializers/result.rb +8 -0
  17. data/lib/inferno/apps/web/serializers/session_data.rb +10 -0
  18. data/lib/inferno/apps/web/serializers/test.rb +3 -6
  19. data/lib/inferno/apps/web/serializers/test_group.rb +5 -8
  20. data/lib/inferno/apps/web/serializers/test_run.rb +1 -0
  21. data/lib/inferno/apps/web/serializers/test_session.rb +1 -1
  22. data/lib/inferno/apps/web/serializers/test_suite.rb +1 -0
  23. data/lib/inferno/config/application.rb +8 -2
  24. data/lib/inferno/config/boot/db.rb +3 -2
  25. data/lib/inferno/config/boot/logging.rb +2 -0
  26. data/lib/inferno/config/boot/sidekiq.rb +11 -0
  27. data/lib/inferno/config/boot/suites.rb +4 -6
  28. data/lib/inferno/config/boot.rb +2 -0
  29. data/lib/inferno/db/migrations/001_create_initial_structure.rb +0 -21
  30. data/lib/inferno/db/migrations/002_add_wait_support.rb +7 -0
  31. data/lib/inferno/db/migrations/003_update_session_data.rb +18 -0
  32. data/lib/inferno/db/migrations/004_add_request_results_table.rb +9 -0
  33. data/lib/inferno/db/migrations/005_add_updated_at_index_to_results.rb +5 -0
  34. data/lib/inferno/db/schema.rb +154 -0
  35. data/lib/inferno/dsl/assertions.rb +85 -0
  36. data/lib/inferno/dsl/configurable.rb +126 -0
  37. data/lib/inferno/dsl/fhir_client.rb +8 -6
  38. data/lib/inferno/dsl/fhir_client_builder.rb +19 -3
  39. data/lib/inferno/dsl/fhir_validation.rb +1 -1
  40. data/lib/inferno/dsl/http_client.rb +14 -12
  41. data/lib/inferno/dsl/http_client_builder.rb +3 -3
  42. data/lib/inferno/dsl/request_storage.rb +34 -13
  43. data/lib/inferno/dsl/results.rb +49 -0
  44. data/lib/inferno/dsl/resume_test_route.rb +89 -0
  45. data/lib/inferno/dsl/runnable.rb +183 -28
  46. data/lib/inferno/dsl.rb +1 -3
  47. data/lib/inferno/entities/header.rb +14 -7
  48. data/lib/inferno/entities/message.rb +16 -6
  49. data/lib/inferno/entities/request.rb +59 -20
  50. data/lib/inferno/entities/result.rb +45 -22
  51. data/lib/inferno/entities/session_data.rb +39 -0
  52. data/lib/inferno/entities/test.rb +48 -8
  53. data/lib/inferno/entities/test_group.rb +8 -0
  54. data/lib/inferno/entities/test_run.rb +36 -6
  55. data/lib/inferno/entities/test_session.rb +17 -11
  56. data/lib/inferno/entities.rb +1 -1
  57. data/lib/inferno/exceptions.rb +24 -0
  58. data/lib/inferno/jobs/execute_test_run.rb +14 -0
  59. data/lib/inferno/jobs/resume_test_run.rb +14 -0
  60. data/lib/inferno/jobs.rb +16 -0
  61. data/lib/inferno/public/bundle.js +1 -1
  62. data/lib/inferno/repositories/in_memory_repository.rb +1 -1
  63. data/lib/inferno/repositories/repository.rb +13 -0
  64. data/lib/inferno/repositories/requests.rb +5 -4
  65. data/lib/inferno/repositories/results.rb +151 -3
  66. data/lib/inferno/repositories/session_data.rb +47 -0
  67. data/lib/inferno/repositories/test_runs.rb +81 -0
  68. data/lib/inferno/spec_support.rb +1 -1
  69. data/lib/inferno/test_runner.rb +126 -32
  70. data/lib/inferno/utils/markdown_formatter.rb +15 -0
  71. data/lib/inferno/utils/middleware/request_logger.rb +17 -4
  72. data/lib/inferno/utils/migration.rb +17 -0
  73. data/lib/inferno/version.rb +1 -1
  74. data/lib/inferno.rb +4 -4
  75. data/spec/factories/request.rb +14 -7
  76. data/spec/factories/result.rb +8 -0
  77. data/spec/factories/test_run.rb +2 -0
  78. metadata +84 -7
  79. data/bin/inferno-console +0 -8
  80. data/lib/inferno/dsl/fhir_manipulation.rb +0 -25
  81. data/lib/inferno/entities/test_input.rb +0 -20
@@ -1,3 +1,3 @@
1
1
  module Inferno
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.7'.freeze
3
3
  end
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
@@ -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
@@ -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
@@ -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.3
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-06-21 00:00:00.000000000 Z
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-console
454
+ - inferno
399
455
  extensions: []
400
456
  extra_rdoc_files: []
401
457
  files:
402
458
  - LICENSE
403
- - bin/inferno-console
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.4
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,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pry'
4
- require_relative '../lib/inferno'
5
-
6
- Inferno::Application.finalize!
7
-
8
- Pry.start
@@ -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