test_bench-isolated 0 → 2.0.0.0

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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench_isolated/test_bench/cli.rb +298 -0
  3. data/lib/test_bench_isolated/test_bench/controls/file.rb +7 -0
  4. data/lib/test_bench_isolated/test_bench/controls/path.rb +7 -0
  5. data/lib/test_bench_isolated/test_bench/controls/random.rb +9 -0
  6. data/lib/test_bench_isolated/test_bench/controls/result.rb +7 -0
  7. data/lib/test_bench_isolated/test_bench/controls/stdin.rb +29 -0
  8. data/lib/test_bench_isolated/test_bench/controls.rb +11 -0
  9. data/lib/test_bench_isolated/test_bench/fixture/actuate/class.rb +97 -0
  10. data/lib/test_bench_isolated/test_bench/fixture/actuate/object.rb +93 -0
  11. data/lib/test_bench_isolated/test_bench/fixture/controls/exception.rb +9 -0
  12. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/class.rb +88 -0
  13. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object/modules.rb +41 -0
  14. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object.rb +33 -0
  15. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture.rb +29 -0
  16. data/lib/test_bench_isolated/test_bench/fixture/controls/output.rb +9 -0
  17. data/lib/test_bench_isolated/test_bench/fixture/controls/random.rb +9 -0
  18. data/lib/test_bench_isolated/test_bench/fixture/controls/result.rb +9 -0
  19. data/lib/test_bench_isolated/test_bench/fixture/controls/title.rb +9 -0
  20. data/lib/test_bench_isolated/test_bench/fixture/controls.rb +13 -0
  21. data/lib/test_bench_isolated/test_bench/fixture/evaluate.rb +31 -0
  22. data/lib/test_bench_isolated/test_bench/fixture/fixture.rb +201 -0
  23. data/lib/test_bench_isolated/test_bench/fixture.rb +8 -0
  24. data/lib/test_bench_isolated/test_bench/output/controls/data.rb +51 -0
  25. data/lib/test_bench_isolated/test_bench/output/controls/device.rb +29 -0
  26. data/lib/test_bench_isolated/test_bench/output/controls/event.rb +9 -0
  27. data/lib/test_bench_isolated/test_bench/output/controls/output.rb +36 -0
  28. data/lib/test_bench_isolated/test_bench/output/controls/random.rb +9 -0
  29. data/lib/test_bench_isolated/test_bench/output/controls/style.rb +33 -0
  30. data/lib/test_bench_isolated/test_bench/output/controls/styling.rb +29 -0
  31. data/lib/test_bench_isolated/test_bench/output/controls/text.rb +19 -0
  32. data/lib/test_bench_isolated/test_bench/output/controls.rb +10 -0
  33. data/lib/test_bench_isolated/test_bench/output/device/null.rb +21 -0
  34. data/lib/test_bench_isolated/test_bench/output/device/substitute.rb +60 -0
  35. data/lib/test_bench_isolated/test_bench/output/digest.rb +115 -0
  36. data/lib/test_bench_isolated/test_bench/output/output.rb +68 -0
  37. data/lib/test_bench_isolated/test_bench/output/writer/buffer.rb +59 -0
  38. data/lib/test_bench_isolated/test_bench/output/writer/defaults.rb +13 -0
  39. data/lib/test_bench_isolated/test_bench/output/writer/style.rb +52 -0
  40. data/lib/test_bench_isolated/test_bench/output/writer/substitute.rb +40 -0
  41. data/lib/test_bench_isolated/test_bench/output/writer.rb +212 -0
  42. data/lib/test_bench_isolated/test_bench/output.rb +14 -0
  43. data/lib/test_bench_isolated/test_bench/random/controls/seed.rb +27 -0
  44. data/lib/test_bench_isolated/test_bench/random/controls.rb +1 -0
  45. data/lib/test_bench_isolated/test_bench/random/random.rb +170 -0
  46. data/lib/test_bench_isolated/test_bench/random.rb +1 -0
  47. data/lib/test_bench_isolated/test_bench/run/controls/directory.rb +72 -0
  48. data/lib/test_bench_isolated/test_bench/run/controls/event_data.rb +9 -0
  49. data/lib/test_bench_isolated/test_bench/run/controls/events/event_data.rb +11 -0
  50. data/lib/test_bench_isolated/test_bench/run/controls/events/file_crashed.rb +111 -0
  51. data/lib/test_bench_isolated/test_bench/run/controls/events/file_finished.rb +58 -0
  52. data/lib/test_bench_isolated/test_bench/run/controls/events/file_started.rb +49 -0
  53. data/lib/test_bench_isolated/test_bench/run/controls/events/finished.rb +58 -0
  54. data/lib/test_bench_isolated/test_bench/run/controls/events/session.rb +11 -0
  55. data/lib/test_bench_isolated/test_bench/run/controls/events/started.rb +49 -0
  56. data/lib/test_bench_isolated/test_bench/run/controls/exception.rb +103 -0
  57. data/lib/test_bench_isolated/test_bench/run/controls/executor.rb +58 -0
  58. data/lib/test_bench_isolated/test_bench/run/controls/file/create.rb +71 -0
  59. data/lib/test_bench_isolated/test_bench/run/controls/file/pattern.rb +35 -0
  60. data/lib/test_bench_isolated/test_bench/run/controls/file.rb +182 -0
  61. data/lib/test_bench_isolated/test_bench/run/controls/path.rb +17 -0
  62. data/lib/test_bench_isolated/test_bench/run/controls/process_id.rb +9 -0
  63. data/lib/test_bench_isolated/test_bench/run/controls/random.rb +9 -0
  64. data/lib/test_bench_isolated/test_bench/run/controls/result.rb +9 -0
  65. data/lib/test_bench_isolated/test_bench/run/controls/time.rb +9 -0
  66. data/lib/test_bench_isolated/test_bench/run/controls.rb +26 -0
  67. data/lib/test_bench_isolated/test_bench/run/events.rb +14 -0
  68. data/lib/test_bench_isolated/test_bench/run/executor/serial.rb +36 -0
  69. data/lib/test_bench_isolated/test_bench/run/executor/substitute.rb +47 -0
  70. data/lib/test_bench_isolated/test_bench/run/executor.rb +46 -0
  71. data/lib/test_bench_isolated/test_bench/run/file.rb +83 -0
  72. data/lib/test_bench_isolated/test_bench/run/get_files/substitute.rb +48 -0
  73. data/lib/test_bench_isolated/test_bench/run/get_files.rb +78 -0
  74. data/lib/test_bench_isolated/test_bench/run/output/file.rb +137 -0
  75. data/lib/test_bench_isolated/test_bench/run/output/summary/error.rb +141 -0
  76. data/lib/test_bench_isolated/test_bench/run/output/summary.rb +184 -0
  77. data/lib/test_bench_isolated/test_bench/run/run.rb +156 -0
  78. data/lib/test_bench_isolated/test_bench/run.rb +18 -0
  79. data/lib/test_bench_isolated/test_bench/session/controls/comment.rb +107 -0
  80. data/lib/test_bench_isolated/test_bench/session/controls/detail.rb +93 -0
  81. data/lib/test_bench_isolated/test_bench/session/controls/event.rb +9 -0
  82. data/lib/test_bench_isolated/test_bench/session/controls/events/commented.rb +112 -0
  83. data/lib/test_bench_isolated/test_bench/session/controls/events/context_finished.rb +72 -0
  84. data/lib/test_bench_isolated/test_bench/session/controls/events/context_skipped.rb +49 -0
  85. data/lib/test_bench_isolated/test_bench/session/controls/events/context_started.rb +66 -0
  86. data/lib/test_bench_isolated/test_bench/session/controls/events/detailed.rb +112 -0
  87. data/lib/test_bench_isolated/test_bench/session/controls/events/event_data.rb +11 -0
  88. data/lib/test_bench_isolated/test_bench/session/controls/events/failed.rb +49 -0
  89. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_finished.rb +55 -0
  90. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_started.rb +49 -0
  91. data/lib/test_bench_isolated/test_bench/session/controls/events/test_finished.rb +72 -0
  92. data/lib/test_bench_isolated/test_bench/session/controls/events/test_skipped.rb +49 -0
  93. data/lib/test_bench_isolated/test_bench/session/controls/events/test_started.rb +66 -0
  94. data/lib/test_bench_isolated/test_bench/session/controls/events.rb +35 -0
  95. data/lib/test_bench_isolated/test_bench/session/controls/exception.rb +47 -0
  96. data/lib/test_bench_isolated/test_bench/session/controls/failure.rb +21 -0
  97. data/lib/test_bench_isolated/test_bench/session/controls/fixture.rb +21 -0
  98. data/lib/test_bench_isolated/test_bench/session/controls/output/detail.rb +31 -0
  99. data/lib/test_bench_isolated/test_bench/session/controls/output.rb +57 -0
  100. data/lib/test_bench_isolated/test_bench/session/controls/process_id.rb +9 -0
  101. data/lib/test_bench_isolated/test_bench/session/controls/random.rb +9 -0
  102. data/lib/test_bench_isolated/test_bench/session/controls/result.rb +25 -0
  103. data/lib/test_bench_isolated/test_bench/session/controls/substitute/path.rb +35 -0
  104. data/lib/test_bench_isolated/test_bench/session/controls/time.rb +9 -0
  105. data/lib/test_bench_isolated/test_bench/session/controls/title.rb +41 -0
  106. data/lib/test_bench_isolated/test_bench/session/controls.rb +36 -0
  107. data/lib/test_bench_isolated/test_bench/session/events.rb +27 -0
  108. data/lib/test_bench_isolated/test_bench/session/output/get.rb +29 -0
  109. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive/viewport.rb +167 -0
  110. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive.rb +141 -0
  111. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer.rb +29 -0
  112. data/lib/test_bench_isolated/test_bench/session/output/writer/defaults.rb +19 -0
  113. data/lib/test_bench_isolated/test_bench/session/output/writer/substitute.rb +19 -0
  114. data/lib/test_bench_isolated/test_bench/session/output/writer.rb +97 -0
  115. data/lib/test_bench_isolated/test_bench/session/output.rb +377 -0
  116. data/lib/test_bench_isolated/test_bench/session/projection.rb +30 -0
  117. data/lib/test_bench_isolated/test_bench/session/session.rb +220 -0
  118. data/lib/test_bench_isolated/test_bench/session/store.rb +61 -0
  119. data/lib/test_bench_isolated/test_bench/session/substitute/path.rb +65 -0
  120. data/lib/test_bench_isolated/test_bench/session/substitute/sink.rb +114 -0
  121. data/lib/test_bench_isolated/test_bench/session/substitute.rb +120 -0
  122. data/lib/test_bench_isolated/test_bench/session.rb +22 -0
  123. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/event_data.rb +17 -0
  124. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/metadata.rb +72 -0
  125. data/lib/test_bench_isolated/test_bench/telemetry/controls/event.rb +140 -0
  126. data/lib/test_bench_isolated/test_bench/telemetry/controls/event_data.rb +131 -0
  127. data/lib/test_bench_isolated/test_bench/telemetry/controls/file.rb +86 -0
  128. data/lib/test_bench_isolated/test_bench/telemetry/controls/handler.rb +83 -0
  129. data/lib/test_bench_isolated/test_bench/telemetry/controls/process_id.rb +21 -0
  130. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection/receiver.rb +33 -0
  131. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection.rb +86 -0
  132. data/lib/test_bench_isolated/test_bench/telemetry/controls/random.rb +9 -0
  133. data/lib/test_bench_isolated/test_bench/telemetry/controls/sink.rb +35 -0
  134. data/lib/test_bench_isolated/test_bench/telemetry/controls/time.rb +125 -0
  135. data/lib/test_bench_isolated/test_bench/telemetry/controls.rb +17 -0
  136. data/lib/test_bench_isolated/test_bench/telemetry/event.rb +108 -0
  137. data/lib/test_bench_isolated/test_bench/telemetry/event_data/serialization.rb +172 -0
  138. data/lib/test_bench_isolated/test_bench/telemetry/event_data.rb +15 -0
  139. data/lib/test_bench_isolated/test_bench/telemetry/sink/file.rb +33 -0
  140. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler/event_registry.rb +44 -0
  141. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler.rb +128 -0
  142. data/lib/test_bench_isolated/test_bench/telemetry/sink/projection.rb +134 -0
  143. data/lib/test_bench_isolated/test_bench/telemetry/sink.rb +13 -0
  144. data/lib/test_bench_isolated/test_bench/telemetry/substitute/sink.rb +85 -0
  145. data/lib/test_bench_isolated/test_bench/telemetry/substitute.rb +34 -0
  146. data/lib/test_bench_isolated/test_bench/telemetry/telemetry.rb +111 -0
  147. data/lib/test_bench_isolated/test_bench/telemetry.rb +17 -0
  148. data/lib/test_bench_isolated/test_bench/test_bench.rb +56 -0
  149. data/lib/test_bench_isolated/test_bench.rb +5 -0
  150. data/script/bench +5 -0
  151. metadata +156 -7
  152. data/lib/test_bench/bootstrap.rb +0 -328
@@ -0,0 +1,86 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module File
6
+ def self.example(...)
7
+ Temporary.example(...)
8
+ end
9
+
10
+ def self.random
11
+ Random.example
12
+ end
13
+
14
+ module Random
15
+ def self.example(...)
16
+ Temporary::Random.example(...)
17
+ end
18
+ end
19
+
20
+ module Name
21
+ def self.example(basename: nil, extension: nil)
22
+ basename ||= self.basename
23
+ extension ||= self.extension
24
+
25
+ "#{basename}#{extension}"
26
+ end
27
+
28
+ def self.random
29
+ Random.example
30
+ end
31
+
32
+ def self.basename
33
+ 'some-file'
34
+ end
35
+
36
+ def self.extension
37
+ '.some-ext'
38
+ end
39
+
40
+ module Random
41
+ def self.example(basename: nil, extension: nil)
42
+ extension ||= self.extension
43
+
44
+ basename = Basename.example(basename:)
45
+
46
+ Name.example(basename:, extension:)
47
+ end
48
+
49
+ def self.extension
50
+ suffix = Controls::Random.string[0..4]
51
+
52
+ "#{Name.extension}-#{suffix}"
53
+ end
54
+
55
+ module Basename
56
+ def self.example(basename: nil)
57
+ basename ||= Name.basename
58
+
59
+ suffix = Controls::Random.string
60
+
61
+ "#{basename}-#{suffix}"
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ module Temporary
68
+ def self.example(...)
69
+ filename = Name.example(...)
70
+
71
+ ::File.join('tmp', filename)
72
+ end
73
+
74
+ module Random
75
+ def self.example(...)
76
+ filename = Name::Random.example(...)
77
+
78
+ ::File.join('tmp', filename)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,83 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Handler
6
+ def self.example
7
+ Example.new
8
+ end
9
+
10
+ class Example
11
+ include Telemetry::Sink::Handler
12
+
13
+ attr_accessor :handled_event
14
+ attr_accessor :handled_event_data
15
+
16
+ handle Event::SomeEvent do |some_event|
17
+ self.handled_event = some_event
18
+ end
19
+
20
+ def handle_event_data(event_data)
21
+ self.handled_event_data = event_data
22
+ end
23
+
24
+ def handled?(event=nil)
25
+ return false if handled_event.nil?
26
+
27
+ return true if event.nil?
28
+
29
+ event == handled_event
30
+ end
31
+
32
+ def handled_event_data?(event_data)
33
+ self.handled_event_data == event_data
34
+ end
35
+ end
36
+
37
+ module NoHandler
38
+ def self.example
39
+ Example.new
40
+ end
41
+
42
+ class Example
43
+ include Telemetry::Sink::Handler
44
+ end
45
+ end
46
+
47
+ module NoArgument
48
+ def self.example
49
+ Example.new
50
+ end
51
+
52
+ class Example
53
+ include Telemetry::Sink::Handler
54
+
55
+ attr_accessor :handled_event
56
+ def handled? = !!handled_event
57
+
58
+ handle Event::SomeEvent do
59
+ self.handled_event = true
60
+ end
61
+ end
62
+ end
63
+
64
+ module Method
65
+ def self.example(event_type=nil)
66
+ event_type ||= Event::SomeEvent.event_type
67
+
68
+ event_name = TestBench::Telemetry::Event::EventName.get(event_type)
69
+
70
+ :"handle_#{event_name}"
71
+ end
72
+
73
+ def self.other_example
74
+ event_type = Event::SomeOtherEvent.event_type
75
+
76
+ example(event_type)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,21 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module ProcessID
6
+ def self.example
7
+ 11111
8
+ end
9
+
10
+ def self.other_example
11
+ 22222
12
+ end
13
+
14
+ def self.random
15
+ Random.integer
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Projection
6
+ module Receiver
7
+ def self.example
8
+ Example.new
9
+ end
10
+
11
+ class Example
12
+ def events
13
+ @events ||= []
14
+ end
15
+
16
+ def event(event)
17
+ events << event
18
+ end
19
+
20
+ def event?(event=nil)
21
+ if not event.nil?
22
+ events.include?(event)
23
+ else
24
+ events.any?
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,86 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Projection
6
+ def self.example(receiver=nil)
7
+ receiver ||= Receiver.example
8
+
9
+ Example.new(receiver)
10
+ end
11
+
12
+ class Example
13
+ include Telemetry::Sink::Projection
14
+
15
+ attr_accessor :applied_event_data
16
+
17
+ receiver_name :some_receiver
18
+
19
+ apply Event::SomeEvent do |some_event|
20
+ receiver.event(some_event)
21
+ end
22
+
23
+ def apply_event_data(event_data)
24
+ self.applied_event_data = event_data
25
+ end
26
+
27
+ def applied?(event=nil)
28
+ receiver.event?(event)
29
+ end
30
+
31
+ def applied_event_data?(event_data)
32
+ self.applied_event_data == event_data
33
+ end
34
+ end
35
+
36
+ module NoApplyMethod
37
+ def self.example(receiver=nil)
38
+ receiver ||= Receiver.example
39
+
40
+ Example.new(receiver)
41
+ end
42
+
43
+ class Example
44
+ include Telemetry::Sink::Projection
45
+ end
46
+ end
47
+
48
+ module NoArgument
49
+ def self.example(receiver=nil)
50
+ receiver ||= Receiver.example
51
+
52
+ Example.new(receiver)
53
+ end
54
+
55
+ class Example
56
+ include Telemetry::Sink::Projection
57
+
58
+ attr_accessor :applied_event
59
+ def applied? = !!applied_event
60
+
61
+ apply Event::SomeEvent do
62
+ self.applied_event = true
63
+ end
64
+ end
65
+ end
66
+
67
+ module ApplyMethod
68
+ def self.example(event_type=nil)
69
+ event_type ||= Event::SomeEvent.event_type
70
+
71
+ event_name = TestBench::Telemetry::Event::EventName.get(event_type)
72
+
73
+ :"apply_#{event_name}"
74
+ end
75
+
76
+ def self.other_example
77
+ event_type = Event::SomeOtherEvent.event_type
78
+
79
+ example(event_type)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ Random = TestBench::Random.build
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,35 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Sink
6
+ def self.example
7
+ Example.new
8
+ end
9
+
10
+ def self.other_example
11
+ OtherExample.new
12
+ end
13
+
14
+ class Example
15
+ include Telemetry::Sink
16
+
17
+ attr_accessor :received_event_data
18
+
19
+ def receive(event_data)
20
+ self.received_event_data = event_data
21
+ end
22
+
23
+ def received?(event_data)
24
+ self.received_event_data == event_data
25
+ end
26
+ end
27
+
28
+ class OtherExample
29
+ include Telemetry::Sink
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,125 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Controls
5
+ module Time
6
+ def self.example(offset_milliseconds: nil, offset_nanoseconds: nil)
7
+ if offset_nanoseconds.nil?
8
+ offset_milliseconds ||= 0
9
+ offset_nanoseconds = offset_milliseconds * 1_000_000
10
+ end
11
+
12
+ nanoseconds = 111_111_111
13
+ remaining_offset, additional_nanoseconds = offset_nanoseconds.divmod(1_000_000_000 - nanoseconds)
14
+ nanoseconds += additional_nanoseconds
15
+ microseconds = Rational(nanoseconds, 1_000)
16
+
17
+ if remaining_offset.zero?
18
+ seconds = 11
19
+ else
20
+ remaining_offset, seconds = remaining_offset.divmod(60)
21
+ end
22
+
23
+ if remaining_offset.zero?
24
+ minutes = 11
25
+ else
26
+ remaining_offset, minutes = remaining_offset.divmod(60)
27
+ end
28
+
29
+ if remaining_offset.zero?
30
+ hours = 11
31
+ else
32
+ remaining_offset, hours = remaining_offset.divmod(24)
33
+ end
34
+
35
+ if remaining_offset.zero?
36
+ day = 1
37
+ else
38
+ remaining_offset, day = remaining_offset.divmod(28)
39
+ day += 1
40
+ end
41
+
42
+ if remaining_offset.zero?
43
+ month = 1
44
+ else
45
+ remaining_offset, month = remaining_offset.divmod(12)
46
+ month += 1
47
+ end
48
+
49
+ year = 2000
50
+ if not remaining_offset.zero?
51
+ year += remaining_offset
52
+ end
53
+
54
+ ::Time.utc(year, month, day, hours, minutes, seconds, microseconds)
55
+ end
56
+
57
+ def self.other_example
58
+ Other.example
59
+ end
60
+
61
+ def self.random
62
+ Random.example
63
+ end
64
+
65
+ module ISO8601
66
+ def self.example(time=nil, **arguments)
67
+ time ||= Time.example(**arguments)
68
+
69
+ time.strftime('%Y-%m-%dT%H:%M:%S.%NZ')
70
+ end
71
+
72
+ def self.other_example
73
+ time = Time.other_example
74
+
75
+ example(time)
76
+ end
77
+
78
+ def self.random
79
+ time = Time.random
80
+
81
+ example(time)
82
+ end
83
+ end
84
+
85
+ module Offset
86
+ def self.example
87
+ Time.example(offset_nanoseconds:)
88
+ end
89
+
90
+ def self.offset_nanoseconds
91
+ Elapsed.nanoseconds
92
+ end
93
+ end
94
+ Other = Offset
95
+
96
+ module Random
97
+ def self.example
98
+ offset_nanoseconds = Controls::Random.integer
99
+
100
+ Time.example(offset_nanoseconds:)
101
+ end
102
+ end
103
+
104
+ module Elapsed
105
+ def self.example
106
+ seconds
107
+ end
108
+
109
+ def self.nanoseconds
110
+ 111_111_111
111
+ end
112
+
113
+ def self.milliseconds
114
+ 111.111_111
115
+ end
116
+
117
+ def self.seconds
118
+ 0.111_111_111
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_bench_isolated/test_bench/telemetry/controls/random'
2
+
3
+ require 'test_bench_isolated/test_bench/telemetry/controls/file'
4
+
5
+ require 'test_bench_isolated/test_bench/telemetry/controls/process_id'
6
+ require 'test_bench_isolated/test_bench/telemetry/controls/time'
7
+
8
+ require 'test_bench_isolated/test_bench/telemetry/controls/event_data'
9
+
10
+ require 'test_bench_isolated/test_bench/telemetry/controls/event/event_data'
11
+ require 'test_bench_isolated/test_bench/telemetry/controls/event'
12
+ require 'test_bench_isolated/test_bench/telemetry/controls/event/metadata'
13
+
14
+ require 'test_bench_isolated/test_bench/telemetry/controls/sink'
15
+ require 'test_bench_isolated/test_bench/telemetry/controls/handler'
16
+ require 'test_bench_isolated/test_bench/telemetry/controls/projection'
17
+ require 'test_bench_isolated/test_bench/telemetry/controls/projection/receiver'
@@ -0,0 +1,108 @@
1
+ module TestBenchIsolated
2
+ module TestBench
3
+ class Telemetry
4
+ module Event
5
+ def self.define(*attributes, &blk)
6
+ Struct.new(*attributes, :metadata) do
7
+ include Event
8
+
9
+ if not blk.nil?
10
+ instance_exec(&blk)
11
+ end
12
+ end
13
+ end
14
+
15
+ def self.included(cls)
16
+ cls.class_exec do
17
+ extend EventType
18
+ extend EventName
19
+ extend Build
20
+ end
21
+ end
22
+
23
+ def event_type
24
+ self.class.event_type
25
+ end
26
+
27
+ def event_name
28
+ self.class.event_name
29
+ end
30
+
31
+ def data
32
+ values[0...-1]
33
+ end
34
+
35
+ module EventType
36
+ def event_type
37
+ @event_type ||= event_type!
38
+ end
39
+
40
+ def event_type!
41
+ *, inner_namespace = self.name.split('::')
42
+
43
+ inner_namespace.to_sym
44
+ end
45
+ end
46
+
47
+ module EventName
48
+ def event_name
49
+ EventName.get(event_type)
50
+ end
51
+
52
+ def self.get(event_type)
53
+ pascal_cased = event_type.to_s
54
+
55
+ underscore_cased = pascal_cased.gsub(%r{(?:\A|[a-z])[A-Z]+}) do |match_text|
56
+ if ('a'..'z').include?(match_text[0])
57
+ match_text.insert(1, '_')
58
+ end
59
+ match_text.downcase!
60
+ match_text
61
+ end
62
+
63
+ underscore_cased.to_sym
64
+ end
65
+ end
66
+
67
+ module Export
68
+ def self.call(event)
69
+ event_data = EventData.new
70
+ event_data.type = event.event_type
71
+ event_data.data = event.data
72
+ event_data.process_id = event.metadata.process_id
73
+ event_data.time = event.metadata.time
74
+ event_data
75
+ end
76
+ end
77
+
78
+ module Build
79
+ def build(*attributes, process_id: nil, time: nil)
80
+ metadata = Metadata.new(process_id, time)
81
+
82
+ new(*attributes, metadata)
83
+ end
84
+ end
85
+
86
+ module Import
87
+ Error = Class.new(RuntimeError)
88
+
89
+ def self.call(event_data, event_class)
90
+ if event_class.event_type != event_data.type
91
+ raise Error, "Event class #{event_class} doesn't match EventData type #{event_data.type.inspect}"
92
+ end
93
+
94
+ process_id = event_data.process_id
95
+ time = event_data.time
96
+ data = event_data.data
97
+
98
+ metadata = Metadata.new(process_id, time)
99
+
100
+ event_class.new(*data, metadata)
101
+ end
102
+ end
103
+
104
+ Metadata = Struct.new(:process_id, :time)
105
+ end
106
+ end
107
+ end
108
+ end