test_bench-isolated 0 → 2.0.0.1

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench/isolated.rb +1 -0
  3. data/lib/test_bench_isolated/test_bench/cli.rb +298 -0
  4. data/lib/test_bench_isolated/test_bench/controls/file.rb +7 -0
  5. data/lib/test_bench_isolated/test_bench/controls/path.rb +7 -0
  6. data/lib/test_bench_isolated/test_bench/controls/random.rb +9 -0
  7. data/lib/test_bench_isolated/test_bench/controls/result.rb +7 -0
  8. data/lib/test_bench_isolated/test_bench/controls/stdin.rb +29 -0
  9. data/lib/test_bench_isolated/test_bench/controls.rb +11 -0
  10. data/lib/test_bench_isolated/test_bench/fixture/actuate/class.rb +97 -0
  11. data/lib/test_bench_isolated/test_bench/fixture/actuate/object.rb +93 -0
  12. data/lib/test_bench_isolated/test_bench/fixture/controls/exception.rb +9 -0
  13. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/class.rb +88 -0
  14. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object/modules.rb +41 -0
  15. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object.rb +33 -0
  16. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture.rb +29 -0
  17. data/lib/test_bench_isolated/test_bench/fixture/controls/output.rb +9 -0
  18. data/lib/test_bench_isolated/test_bench/fixture/controls/random.rb +9 -0
  19. data/lib/test_bench_isolated/test_bench/fixture/controls/result.rb +9 -0
  20. data/lib/test_bench_isolated/test_bench/fixture/controls/title.rb +9 -0
  21. data/lib/test_bench_isolated/test_bench/fixture/controls.rb +13 -0
  22. data/lib/test_bench_isolated/test_bench/fixture/evaluate.rb +31 -0
  23. data/lib/test_bench_isolated/test_bench/fixture/fixture.rb +201 -0
  24. data/lib/test_bench_isolated/test_bench/fixture.rb +8 -0
  25. data/lib/test_bench_isolated/test_bench/output/controls/data.rb +51 -0
  26. data/lib/test_bench_isolated/test_bench/output/controls/device.rb +29 -0
  27. data/lib/test_bench_isolated/test_bench/output/controls/event.rb +9 -0
  28. data/lib/test_bench_isolated/test_bench/output/controls/output.rb +36 -0
  29. data/lib/test_bench_isolated/test_bench/output/controls/random.rb +9 -0
  30. data/lib/test_bench_isolated/test_bench/output/controls/style.rb +33 -0
  31. data/lib/test_bench_isolated/test_bench/output/controls/styling.rb +29 -0
  32. data/lib/test_bench_isolated/test_bench/output/controls/text.rb +19 -0
  33. data/lib/test_bench_isolated/test_bench/output/controls.rb +10 -0
  34. data/lib/test_bench_isolated/test_bench/output/device/null.rb +21 -0
  35. data/lib/test_bench_isolated/test_bench/output/device/substitute.rb +60 -0
  36. data/lib/test_bench_isolated/test_bench/output/digest.rb +115 -0
  37. data/lib/test_bench_isolated/test_bench/output/output.rb +68 -0
  38. data/lib/test_bench_isolated/test_bench/output/writer/buffer.rb +59 -0
  39. data/lib/test_bench_isolated/test_bench/output/writer/defaults.rb +13 -0
  40. data/lib/test_bench_isolated/test_bench/output/writer/style.rb +52 -0
  41. data/lib/test_bench_isolated/test_bench/output/writer/substitute.rb +40 -0
  42. data/lib/test_bench_isolated/test_bench/output/writer.rb +212 -0
  43. data/lib/test_bench_isolated/test_bench/output.rb +14 -0
  44. data/lib/test_bench_isolated/test_bench/random/controls/seed.rb +27 -0
  45. data/lib/test_bench_isolated/test_bench/random/controls.rb +1 -0
  46. data/lib/test_bench_isolated/test_bench/random/random.rb +170 -0
  47. data/lib/test_bench_isolated/test_bench/random.rb +1 -0
  48. data/lib/test_bench_isolated/test_bench/run/controls/directory.rb +72 -0
  49. data/lib/test_bench_isolated/test_bench/run/controls/event_data.rb +9 -0
  50. data/lib/test_bench_isolated/test_bench/run/controls/events/event_data.rb +11 -0
  51. data/lib/test_bench_isolated/test_bench/run/controls/events/file_crashed.rb +111 -0
  52. data/lib/test_bench_isolated/test_bench/run/controls/events/file_finished.rb +58 -0
  53. data/lib/test_bench_isolated/test_bench/run/controls/events/file_started.rb +49 -0
  54. data/lib/test_bench_isolated/test_bench/run/controls/events/finished.rb +58 -0
  55. data/lib/test_bench_isolated/test_bench/run/controls/events/session.rb +11 -0
  56. data/lib/test_bench_isolated/test_bench/run/controls/events/started.rb +49 -0
  57. data/lib/test_bench_isolated/test_bench/run/controls/exception.rb +103 -0
  58. data/lib/test_bench_isolated/test_bench/run/controls/executor.rb +58 -0
  59. data/lib/test_bench_isolated/test_bench/run/controls/file/create.rb +71 -0
  60. data/lib/test_bench_isolated/test_bench/run/controls/file/pattern.rb +35 -0
  61. data/lib/test_bench_isolated/test_bench/run/controls/file.rb +182 -0
  62. data/lib/test_bench_isolated/test_bench/run/controls/path.rb +17 -0
  63. data/lib/test_bench_isolated/test_bench/run/controls/process_id.rb +9 -0
  64. data/lib/test_bench_isolated/test_bench/run/controls/random.rb +9 -0
  65. data/lib/test_bench_isolated/test_bench/run/controls/result.rb +9 -0
  66. data/lib/test_bench_isolated/test_bench/run/controls/time.rb +9 -0
  67. data/lib/test_bench_isolated/test_bench/run/controls.rb +26 -0
  68. data/lib/test_bench_isolated/test_bench/run/events.rb +14 -0
  69. data/lib/test_bench_isolated/test_bench/run/executor/serial.rb +36 -0
  70. data/lib/test_bench_isolated/test_bench/run/executor/substitute.rb +47 -0
  71. data/lib/test_bench_isolated/test_bench/run/executor.rb +46 -0
  72. data/lib/test_bench_isolated/test_bench/run/file.rb +83 -0
  73. data/lib/test_bench_isolated/test_bench/run/get_files/substitute.rb +48 -0
  74. data/lib/test_bench_isolated/test_bench/run/get_files.rb +78 -0
  75. data/lib/test_bench_isolated/test_bench/run/output/file.rb +137 -0
  76. data/lib/test_bench_isolated/test_bench/run/output/summary/error.rb +141 -0
  77. data/lib/test_bench_isolated/test_bench/run/output/summary.rb +184 -0
  78. data/lib/test_bench_isolated/test_bench/run/run.rb +156 -0
  79. data/lib/test_bench_isolated/test_bench/run.rb +18 -0
  80. data/lib/test_bench_isolated/test_bench/session/controls/comment.rb +107 -0
  81. data/lib/test_bench_isolated/test_bench/session/controls/detail.rb +93 -0
  82. data/lib/test_bench_isolated/test_bench/session/controls/event.rb +9 -0
  83. data/lib/test_bench_isolated/test_bench/session/controls/events/commented.rb +112 -0
  84. data/lib/test_bench_isolated/test_bench/session/controls/events/context_finished.rb +72 -0
  85. data/lib/test_bench_isolated/test_bench/session/controls/events/context_skipped.rb +49 -0
  86. data/lib/test_bench_isolated/test_bench/session/controls/events/context_started.rb +66 -0
  87. data/lib/test_bench_isolated/test_bench/session/controls/events/detailed.rb +112 -0
  88. data/lib/test_bench_isolated/test_bench/session/controls/events/event_data.rb +11 -0
  89. data/lib/test_bench_isolated/test_bench/session/controls/events/failed.rb +49 -0
  90. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_finished.rb +55 -0
  91. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_started.rb +49 -0
  92. data/lib/test_bench_isolated/test_bench/session/controls/events/test_finished.rb +72 -0
  93. data/lib/test_bench_isolated/test_bench/session/controls/events/test_skipped.rb +49 -0
  94. data/lib/test_bench_isolated/test_bench/session/controls/events/test_started.rb +66 -0
  95. data/lib/test_bench_isolated/test_bench/session/controls/events.rb +35 -0
  96. data/lib/test_bench_isolated/test_bench/session/controls/exception.rb +47 -0
  97. data/lib/test_bench_isolated/test_bench/session/controls/failure.rb +21 -0
  98. data/lib/test_bench_isolated/test_bench/session/controls/fixture.rb +21 -0
  99. data/lib/test_bench_isolated/test_bench/session/controls/output/detail.rb +31 -0
  100. data/lib/test_bench_isolated/test_bench/session/controls/output.rb +57 -0
  101. data/lib/test_bench_isolated/test_bench/session/controls/process_id.rb +9 -0
  102. data/lib/test_bench_isolated/test_bench/session/controls/random.rb +9 -0
  103. data/lib/test_bench_isolated/test_bench/session/controls/result.rb +25 -0
  104. data/lib/test_bench_isolated/test_bench/session/controls/substitute/path.rb +35 -0
  105. data/lib/test_bench_isolated/test_bench/session/controls/time.rb +9 -0
  106. data/lib/test_bench_isolated/test_bench/session/controls/title.rb +41 -0
  107. data/lib/test_bench_isolated/test_bench/session/controls.rb +36 -0
  108. data/lib/test_bench_isolated/test_bench/session/events.rb +27 -0
  109. data/lib/test_bench_isolated/test_bench/session/output/get.rb +29 -0
  110. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive/viewport.rb +167 -0
  111. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive.rb +141 -0
  112. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer.rb +29 -0
  113. data/lib/test_bench_isolated/test_bench/session/output/writer/defaults.rb +19 -0
  114. data/lib/test_bench_isolated/test_bench/session/output/writer/substitute.rb +19 -0
  115. data/lib/test_bench_isolated/test_bench/session/output/writer.rb +97 -0
  116. data/lib/test_bench_isolated/test_bench/session/output.rb +377 -0
  117. data/lib/test_bench_isolated/test_bench/session/projection.rb +30 -0
  118. data/lib/test_bench_isolated/test_bench/session/session.rb +220 -0
  119. data/lib/test_bench_isolated/test_bench/session/store.rb +61 -0
  120. data/lib/test_bench_isolated/test_bench/session/substitute/path.rb +65 -0
  121. data/lib/test_bench_isolated/test_bench/session/substitute/sink.rb +114 -0
  122. data/lib/test_bench_isolated/test_bench/session/substitute.rb +120 -0
  123. data/lib/test_bench_isolated/test_bench/session.rb +22 -0
  124. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/event_data.rb +17 -0
  125. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/metadata.rb +72 -0
  126. data/lib/test_bench_isolated/test_bench/telemetry/controls/event.rb +140 -0
  127. data/lib/test_bench_isolated/test_bench/telemetry/controls/event_data.rb +131 -0
  128. data/lib/test_bench_isolated/test_bench/telemetry/controls/file.rb +86 -0
  129. data/lib/test_bench_isolated/test_bench/telemetry/controls/handler.rb +83 -0
  130. data/lib/test_bench_isolated/test_bench/telemetry/controls/process_id.rb +21 -0
  131. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection/receiver.rb +33 -0
  132. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection.rb +86 -0
  133. data/lib/test_bench_isolated/test_bench/telemetry/controls/random.rb +9 -0
  134. data/lib/test_bench_isolated/test_bench/telemetry/controls/sink.rb +35 -0
  135. data/lib/test_bench_isolated/test_bench/telemetry/controls/time.rb +125 -0
  136. data/lib/test_bench_isolated/test_bench/telemetry/controls.rb +17 -0
  137. data/lib/test_bench_isolated/test_bench/telemetry/event.rb +108 -0
  138. data/lib/test_bench_isolated/test_bench/telemetry/event_data/serialization.rb +172 -0
  139. data/lib/test_bench_isolated/test_bench/telemetry/event_data.rb +15 -0
  140. data/lib/test_bench_isolated/test_bench/telemetry/sink/file.rb +33 -0
  141. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler/event_registry.rb +44 -0
  142. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler.rb +128 -0
  143. data/lib/test_bench_isolated/test_bench/telemetry/sink/projection.rb +134 -0
  144. data/lib/test_bench_isolated/test_bench/telemetry/sink.rb +13 -0
  145. data/lib/test_bench_isolated/test_bench/telemetry/substitute/sink.rb +85 -0
  146. data/lib/test_bench_isolated/test_bench/telemetry/substitute.rb +34 -0
  147. data/lib/test_bench_isolated/test_bench/telemetry/telemetry.rb +111 -0
  148. data/lib/test_bench_isolated/test_bench/telemetry.rb +17 -0
  149. data/lib/test_bench_isolated/test_bench/test_bench.rb +56 -0
  150. data/lib/test_bench_isolated/test_bench.rb +5 -0
  151. data/script/bench +5 -0
  152. metadata +157 -7
  153. data/lib/test_bench/bootstrap.rb +0 -328
@@ -0,0 +1,65 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Session
4
+ module Substitute
5
+ class Path
6
+ def segments
7
+ @segments ||= []
8
+ end
9
+ attr_writer :segments
10
+
11
+ def match?(*segments, segment)
12
+ if not segment == self.segments.last
13
+ return false
14
+ end
15
+
16
+ segment_iterator = self.segments.to_enum
17
+
18
+ control_segments = [*segments, segment]
19
+
20
+ control_segments.all? do |control_segment|
21
+ begin
22
+ next_segment = segment_iterator.next
23
+ end until next_segment == control_segment
24
+ true
25
+
26
+ rescue StopIteration
27
+ false
28
+ end
29
+ end
30
+
31
+ def push_segment(segment)
32
+ segments << segment
33
+ end
34
+ alias :push :push_segment
35
+ alias :<< :push
36
+
37
+ def pop_segment(compare_segment=nil)
38
+ segments.pop
39
+ end
40
+ alias :pop :pop_segment
41
+
42
+ def copy(receiver)
43
+ path = self.class.new
44
+
45
+ segments.each do |segment|
46
+ path << segment
47
+ end
48
+
49
+ receiver.path = path
50
+ path
51
+ end
52
+
53
+ def eql?(compare)
54
+ if compare.is_a?(self.class)
55
+ segments == compare.segments
56
+ else
57
+ false
58
+ end
59
+ end
60
+ alias :== :eql?
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,114 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Session
4
+ module Substitute
5
+ class Sink
6
+ include Telemetry::Sink
7
+ include Events
8
+
9
+ def records
10
+ @records ||= []
11
+ end
12
+ attr_writer :records
13
+
14
+ def path
15
+ @path ||= Path.new
16
+ end
17
+ attr_writer :path
18
+
19
+ def receive(event_data)
20
+ event_type = event_data.type
21
+
22
+ case event_data.type
23
+ when :TestStarted, :ContextStarted
24
+ title, * = event_data.data
25
+ if not title.nil?
26
+ path.push(title)
27
+ end
28
+
29
+ when :TestFinished, :ContextFinished
30
+ title, * = event_data.data
31
+ if not title.nil?
32
+ path.pop(title)
33
+ end
34
+ end
35
+
36
+ record = Record.new(event_data)
37
+ path.copy(record)
38
+
39
+ case event_data.type
40
+ when :TestFinished, :ContextFinished
41
+ title, * = event_data.data
42
+ if not title.nil?
43
+ record.path.push(title)
44
+ end
45
+
46
+ when :Commented, :Detailed
47
+ comment_text, * = event_data.data
48
+ record.path.push(comment_text)
49
+ end
50
+
51
+ records.push(record)
52
+
53
+ record
54
+ end
55
+
56
+ def received?(event_data=nil)
57
+ if not event_data.nil?
58
+ records.any? do |record|
59
+ record.event_data == event_data
60
+ end
61
+ else
62
+ records.any?
63
+ end
64
+ end
65
+
66
+ def one_event?(event_class, *path_segments, **attributes)
67
+ event_sink = event_sink(*path_segments)
68
+ event_sink.one_event?(event_class, **attributes)
69
+ end
70
+
71
+ def one_event(event_class, *path_segments, **attributes)
72
+ event_sink = event_sink(*path_segments)
73
+ event_sink.one_event(event_class, **attributes)
74
+ end
75
+
76
+ def any_event?(event_class, *path_segments, **attributes)
77
+ event_sink = event_sink(*path_segments)
78
+ event_sink.any_event?(event_class, **attributes)
79
+ end
80
+ alias :event? :any_event?
81
+
82
+ def events(event_class, *path_segments, **attributes)
83
+ event_sink = event_sink(*path_segments)
84
+ event_sink.events(event_class, **attributes)
85
+ end
86
+
87
+ def event_sink(*path_segments)
88
+ event_sink = Telemetry::Substitute::Sink.new
89
+
90
+ records.each do |record|
91
+ if record.match?(path_segments)
92
+ event_data = record.event_data
93
+
94
+ event_sink.receive(event_data)
95
+ end
96
+ end
97
+
98
+ event_sink
99
+ end
100
+
101
+ Record = Struct.new(:event_data, :path) do
102
+ def match?(path_segments)
103
+ if path_segments.any?
104
+ path.match?(*path_segments)
105
+ else
106
+ true
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,120 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Session
4
+ module Substitute
5
+ def self.build
6
+ Session.build
7
+ end
8
+
9
+ class Session < Session
10
+ attr_accessor :result
11
+
12
+ def sink
13
+ @sink ||= Sink.new
14
+ end
15
+ attr_writer :sink
16
+
17
+ def self.build
18
+ instance = new
19
+
20
+ telemetry = instance.telemetry
21
+ telemetry.register(instance.sink)
22
+
23
+ instance
24
+ end
25
+
26
+ def one_passing_test_finished_event?(*, **)
27
+ one_test_finished_event?(*, result: true, **)
28
+ end
29
+ alias :one_test_passed? :one_passing_test_finished_event?
30
+
31
+ def one_passing_test_finished_event(*, **)
32
+ one_test_finished_event(*, result: true, **)
33
+ end
34
+ alias :one_passing_test :one_passing_test_finished_event
35
+
36
+ def any_passing_test_finished_event?(*, **)
37
+ any_test_finished_event?(*, result: true, **)
38
+ end
39
+ alias :passing_test_finished_event? :any_passing_test_finished_event?
40
+ alias :test_passed? :passing_test_finished_event?
41
+
42
+ def passing_test_finished_events(*, **)
43
+ test_finished_events(*, result: true, **)
44
+ end
45
+ alias :passing_tests :passing_test_finished_events
46
+
47
+ def one_failing_test_finished_event?(*, **)
48
+ one_test_finished_event?(*, result: false, **)
49
+ end
50
+ alias :one_test_failed? :one_failing_test_finished_event?
51
+
52
+ def one_failing_test_finished_event(*, **)
53
+ one_test_finished_event(*, result: false, **)
54
+ end
55
+ alias :one_failing_test :one_failing_test_finished_event
56
+
57
+ def any_failing_test_finished_event?(*, **)
58
+ any_test_finished_event?(*, result: false, **)
59
+ end
60
+ alias :failing_test_finished_event? :any_failing_test_finished_event?
61
+ alias :test_failed? :failing_test_finished_event?
62
+
63
+ def failing_test_finished_events(*, **)
64
+ test_finished_events(*, result: false, **)
65
+ end
66
+ alias :failing_tests :failing_test_finished_events
67
+
68
+ Events.each_type do |event_type|
69
+ event_name = TestBench::Telemetry::Event::EventName.get(event_type)
70
+
71
+ event_class = Events.const_get(event_type, false)
72
+
73
+ module_eval(<<~RUBY, __FILE__, __LINE__)
74
+ def one_#{event_name}_event?(...)
75
+ one_event?(#{event_class}, ...)
76
+ end
77
+
78
+ def one_#{event_name}_event(...)
79
+ one_event(#{event_class}, ...)
80
+ end
81
+
82
+ def any_#{event_name}_event?(...)
83
+ any_event?(#{event_class}, ...)
84
+ end
85
+ alias :#{event_name}_event? :any_#{event_name}_event?
86
+
87
+ def #{event_name}_events(...)
88
+ events(#{event_class}, ...)
89
+ end
90
+ RUBY
91
+ end
92
+
93
+ alias :failure? :failed_event?
94
+ alias :one_failure? :one_failed_event?
95
+
96
+ alias :test? :test_finished_event?
97
+ alias :one_test? :one_test_finished_event?
98
+
99
+ alias :context? :context_finished_event?
100
+ alias :one_context? :one_context_finished_event?
101
+
102
+ alias :comment? :commented_event?
103
+ alias :one_comment? :one_commented_event?
104
+
105
+ alias :detail? :detailed_event?
106
+ alias :one_detail? :one_detailed_event?
107
+
108
+ alias :fixture? :fixture_finished_event?
109
+ alias :one_fixture? :one_fixture_finished_event?
110
+
111
+ def one_event?(...) = sink.one_event?(...)
112
+ def one_event(...) = sink.one_event(...)
113
+ def any_event?(...) = sink.any_event?(...)
114
+ alias :event? :any_event?
115
+ def events(...) = sink.events(...)
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_bench_isolated/test_bench/output'
2
+
3
+ require 'test_bench_isolated/test_bench/session/events'
4
+
5
+ require 'test_bench_isolated/test_bench/session/session'
6
+
7
+ require 'test_bench_isolated/test_bench/session/substitute/path'
8
+ require 'test_bench_isolated/test_bench/session/substitute/sink'
9
+ require 'test_bench_isolated/test_bench/session/substitute'
10
+
11
+ require 'test_bench_isolated/test_bench/session/projection'
12
+
13
+ require 'test_bench_isolated/test_bench/session/output/writer'
14
+ require 'test_bench_isolated/test_bench/session/output/writer/defaults'
15
+ require 'test_bench_isolated/test_bench/session/output/writer/substitute'
16
+ require 'test_bench_isolated/test_bench/session/output/writer/buffer/interactive/viewport'
17
+ require 'test_bench_isolated/test_bench/session/output/writer/buffer/interactive'
18
+ require 'test_bench_isolated/test_bench/session/output/writer/buffer'
19
+ require 'test_bench_isolated/test_bench/session/output'
20
+ require 'test_bench_isolated/test_bench/session/output/get'
21
+
22
+ require 'test_bench_isolated/test_bench/session/store'
@@ -0,0 +1,17 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Event
6
+ module EventData
7
+ def event_data
8
+ event = self.example
9
+
10
+ Telemetry::Event::Export.(event)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,72 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Event
6
+ module Metadata
7
+ def self.example(process_id: nil, time: nil)
8
+ if process_id == :none
9
+ process_id = nil
10
+ else
11
+ process_id ||= self.process_id
12
+ end
13
+
14
+ if time == :none
15
+ time = nil
16
+ else
17
+ time ||= self.time
18
+ end
19
+
20
+ metadata = Telemetry::Event::Metadata.new
21
+ metadata.process_id = process_id
22
+ metadata.time = time
23
+ metadata
24
+ end
25
+
26
+ def self.other_example
27
+ Other.example
28
+ end
29
+
30
+ def self.random
31
+ Random.example
32
+ end
33
+
34
+ def self.process_id
35
+ Controls::ProcessID.example
36
+ end
37
+
38
+ def self.time
39
+ Controls::Time.example
40
+ end
41
+
42
+ module Other
43
+ def self.example(process_id: nil, time: nil)
44
+ process_id ||= self.process_id
45
+ time ||= self.time
46
+
47
+ Metadata.example(process_id:, time:)
48
+ end
49
+
50
+ def self.process_id
51
+ Controls::ProcessID.other_example
52
+ end
53
+
54
+ def self.time
55
+ Controls::Time.other_example
56
+ end
57
+ end
58
+
59
+ module Random
60
+ def self.example(process_id: nil, time: nil)
61
+ process_id ||= Controls::ProcessID.random
62
+ time ||= Controls::Time.random
63
+
64
+ Metadata.example(process_id:, time:)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,140 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Event
6
+ extend EventData
7
+
8
+ def self.example(some_attribute: nil, some_other_attribute: nil, event_class: nil, metadata: nil, process_id: nil, time: nil)
9
+ some_attribute ||= self.some_attribute
10
+ some_other_attribute ||= self.some_other_attribute
11
+
12
+ metadata ||= Metadata.example(process_id:, time:)
13
+ event_class ||= SomeEvent
14
+
15
+ event = event_class.new
16
+ event.some_attribute = some_attribute
17
+ event.some_other_attribute = some_other_attribute
18
+ event.metadata = metadata
19
+ event
20
+ end
21
+
22
+ def self.other_example
23
+ Other.example
24
+ end
25
+
26
+ def self.random
27
+ Random.example(event_class:)
28
+ end
29
+
30
+ def self.event_class
31
+ SomeEvent
32
+ end
33
+
34
+ def self.some_attribute
35
+ 'some-value'
36
+ end
37
+
38
+ def self.some_other_attribute
39
+ 'some-alternate-value'
40
+ end
41
+
42
+ def self.process_id
43
+ Controls::EventData.process_id
44
+ end
45
+
46
+ def self.time
47
+ Controls::EventData.time
48
+ end
49
+
50
+ SomeEvent = TestBench::Telemetry::Event.define(:some_attribute, :some_other_attribute)
51
+ SomeOtherEvent = TestBench::Telemetry::Event.define(:some_attribute, :some_other_attribute)
52
+
53
+ module Other
54
+ extend EventData
55
+
56
+ def self.example(some_attribute: nil, some_other_attribute: nil, metadata: nil, process_id: nil, time: nil)
57
+ some_attribute ||= self.some_attribute
58
+ some_other_attribute ||= self.some_other_attribute
59
+ metadata ||= Metadata::Other.example(process_id:, time:)
60
+
61
+ Event.example(some_attribute:, some_other_attribute:, event_class:, metadata:)
62
+ end
63
+
64
+ def self.event_class
65
+ SomeOtherEvent
66
+ end
67
+
68
+ def self.some_attribute
69
+ 'some-other-value'
70
+ end
71
+
72
+ def self.some_other_attribute
73
+ 'some-other-alternate-value'
74
+ end
75
+ end
76
+
77
+ module Random
78
+ extend EventData
79
+
80
+ def self.example(some_attribute: nil, some_other_attribute: nil, event_class: nil, metadata: nil, process_id: nil, time: nil)
81
+ some_attribute ||= self.some_attribute
82
+ some_other_attribute ||= self.some_other_attribute
83
+ event_class ||= self.event_class
84
+ metadata ||= Metadata::Random.example(process_id:, time:)
85
+
86
+ Event.example(some_attribute:, some_other_attribute:, event_class:, metadata:)
87
+ end
88
+
89
+ def self.event_class
90
+ if Controls::Random.boolean
91
+ SomeEvent
92
+ else
93
+ SomeOtherEvent
94
+ end
95
+ end
96
+
97
+ def self.some_attribute
98
+ suffix = Controls::Random.string
99
+
100
+ "#{Event.some_attribute}-#{suffix}"
101
+ end
102
+
103
+ def self.some_other_attribute
104
+ suffix = Controls::Random.string
105
+
106
+ "#{Event.some_other_attribute}-#{suffix}"
107
+ end
108
+ end
109
+
110
+ module Data
111
+ def self.example
112
+ some_attribute = Event.some_attribute
113
+ some_other_attribute = Event.some_other_attribute
114
+
115
+ [some_attribute, some_other_attribute]
116
+ end
117
+
118
+ module Other
119
+ def self.example
120
+ some_attribute = Event::Other.some_attribute
121
+ some_other_attribute = Event::Other.some_other_attribute
122
+
123
+ [some_attribute, some_other_attribute]
124
+ end
125
+ end
126
+
127
+ module Random
128
+ def self.example
129
+ some_attribute = Event::Random.some_attribute
130
+ some_other_attribute = Event::Random.some_other_attribute
131
+
132
+ [some_attribute, some_other_attribute]
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,131 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module EventData
6
+ def self.example(type: nil, process_id: nil, time: nil, data: nil)
7
+ type ||= self.type
8
+ process_id ||= self.process_id
9
+ time ||= self.time
10
+ data ||= self.data
11
+
12
+ event_data = Telemetry::EventData.new
13
+ event_data.type = type
14
+ event_data.process_id = process_id
15
+ event_data.time = time
16
+ event_data.data = data
17
+ event_data
18
+ end
19
+
20
+ def self.random
21
+ Random.example
22
+ end
23
+
24
+ def self.type
25
+ Type.example
26
+ end
27
+
28
+ def self.process_id
29
+ ProcessID.example
30
+ end
31
+
32
+ def self.time
33
+ Time.example
34
+ end
35
+
36
+ def self.data
37
+ Data.example
38
+ end
39
+
40
+ module Random
41
+ def self.example(type: nil, process_id: nil, time: nil, data: nil)
42
+ type ||= Type.random
43
+ process_id ||= ProcessID.random
44
+ time ||= Time.random
45
+ data ||= Data.random
46
+
47
+ EventData.example(type:, process_id:, time:, data:)
48
+ end
49
+ end
50
+
51
+ module Type
52
+ def self.example
53
+ :SomeEvent
54
+ end
55
+
56
+ def self.other_example
57
+ :SomeOtherEvent
58
+ end
59
+
60
+ def self.random
61
+ :"#{example}#{Controls::Random.string}"
62
+ end
63
+ end
64
+
65
+ module Data
66
+ def self.example
67
+ [
68
+ nil,
69
+ true,
70
+ false,
71
+ 11,
72
+ 'some-string',
73
+ Time.example
74
+ ]
75
+ end
76
+
77
+ def self.random
78
+ [
79
+ nil,
80
+ Controls::Random.boolean,
81
+ Controls::Random.boolean,
82
+ Controls::Random.integer,
83
+ Controls::Random.string,
84
+ Time.random
85
+ ]
86
+ end
87
+ end
88
+
89
+ module Text
90
+ def self.example(type: nil, process_id: nil, time: nil)
91
+ type ||= EventData.type
92
+ process_id ||= EventData.process_id
93
+ time ||= EventData.time
94
+
95
+ time_iso8601 = Time::ISO8601.example(time)
96
+
97
+ "#{type}\t#{process_id}\t#{time_iso8601}\t\ttrue\tfalse\t11\t\"some-string\"\t#{time_iso8601}\r\n"
98
+ end
99
+
100
+ module Malformed
101
+ module Empty
102
+ def self.example
103
+ ''
104
+ end
105
+ end
106
+
107
+ module IncorrectEventType
108
+ def self.example
109
+ Text.example(type:)
110
+ end
111
+
112
+ def self.type
113
+ :not_pascal_cased
114
+ end
115
+ end
116
+
117
+ module IncorrectNewlines
118
+ def self.example
119
+ text = Text.example
120
+ text.chomp!("\r\n")
121
+ text << "\n"
122
+ text
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end