test_bench-isolated 0 → 2.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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