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.
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