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.
- checksums.yaml +4 -4
- data/lib/test_bench_isolated/test_bench/cli.rb +298 -0
- data/lib/test_bench_isolated/test_bench/controls/file.rb +7 -0
- data/lib/test_bench_isolated/test_bench/controls/path.rb +7 -0
- data/lib/test_bench_isolated/test_bench/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/controls/result.rb +7 -0
- data/lib/test_bench_isolated/test_bench/controls/stdin.rb +29 -0
- data/lib/test_bench_isolated/test_bench/controls.rb +11 -0
- data/lib/test_bench_isolated/test_bench/fixture/actuate/class.rb +97 -0
- data/lib/test_bench_isolated/test_bench/fixture/actuate/object.rb +93 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/exception.rb +9 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/class.rb +88 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object/modules.rb +41 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object.rb +33 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/fixture.rb +29 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/output.rb +9 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/result.rb +9 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls/title.rb +9 -0
- data/lib/test_bench_isolated/test_bench/fixture/controls.rb +13 -0
- data/lib/test_bench_isolated/test_bench/fixture/evaluate.rb +31 -0
- data/lib/test_bench_isolated/test_bench/fixture/fixture.rb +201 -0
- data/lib/test_bench_isolated/test_bench/fixture.rb +8 -0
- data/lib/test_bench_isolated/test_bench/output/controls/data.rb +51 -0
- data/lib/test_bench_isolated/test_bench/output/controls/device.rb +29 -0
- data/lib/test_bench_isolated/test_bench/output/controls/event.rb +9 -0
- data/lib/test_bench_isolated/test_bench/output/controls/output.rb +36 -0
- data/lib/test_bench_isolated/test_bench/output/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/output/controls/style.rb +33 -0
- data/lib/test_bench_isolated/test_bench/output/controls/styling.rb +29 -0
- data/lib/test_bench_isolated/test_bench/output/controls/text.rb +19 -0
- data/lib/test_bench_isolated/test_bench/output/controls.rb +10 -0
- data/lib/test_bench_isolated/test_bench/output/device/null.rb +21 -0
- data/lib/test_bench_isolated/test_bench/output/device/substitute.rb +60 -0
- data/lib/test_bench_isolated/test_bench/output/digest.rb +115 -0
- data/lib/test_bench_isolated/test_bench/output/output.rb +68 -0
- data/lib/test_bench_isolated/test_bench/output/writer/buffer.rb +59 -0
- data/lib/test_bench_isolated/test_bench/output/writer/defaults.rb +13 -0
- data/lib/test_bench_isolated/test_bench/output/writer/style.rb +52 -0
- data/lib/test_bench_isolated/test_bench/output/writer/substitute.rb +40 -0
- data/lib/test_bench_isolated/test_bench/output/writer.rb +212 -0
- data/lib/test_bench_isolated/test_bench/output.rb +14 -0
- data/lib/test_bench_isolated/test_bench/random/controls/seed.rb +27 -0
- data/lib/test_bench_isolated/test_bench/random/controls.rb +1 -0
- data/lib/test_bench_isolated/test_bench/random/random.rb +170 -0
- data/lib/test_bench_isolated/test_bench/random.rb +1 -0
- data/lib/test_bench_isolated/test_bench/run/controls/directory.rb +72 -0
- data/lib/test_bench_isolated/test_bench/run/controls/event_data.rb +9 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/event_data.rb +11 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/file_crashed.rb +111 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/file_finished.rb +58 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/file_started.rb +49 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/finished.rb +58 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/session.rb +11 -0
- data/lib/test_bench_isolated/test_bench/run/controls/events/started.rb +49 -0
- data/lib/test_bench_isolated/test_bench/run/controls/exception.rb +103 -0
- data/lib/test_bench_isolated/test_bench/run/controls/executor.rb +58 -0
- data/lib/test_bench_isolated/test_bench/run/controls/file/create.rb +71 -0
- data/lib/test_bench_isolated/test_bench/run/controls/file/pattern.rb +35 -0
- data/lib/test_bench_isolated/test_bench/run/controls/file.rb +182 -0
- data/lib/test_bench_isolated/test_bench/run/controls/path.rb +17 -0
- data/lib/test_bench_isolated/test_bench/run/controls/process_id.rb +9 -0
- data/lib/test_bench_isolated/test_bench/run/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/run/controls/result.rb +9 -0
- data/lib/test_bench_isolated/test_bench/run/controls/time.rb +9 -0
- data/lib/test_bench_isolated/test_bench/run/controls.rb +26 -0
- data/lib/test_bench_isolated/test_bench/run/events.rb +14 -0
- data/lib/test_bench_isolated/test_bench/run/executor/serial.rb +36 -0
- data/lib/test_bench_isolated/test_bench/run/executor/substitute.rb +47 -0
- data/lib/test_bench_isolated/test_bench/run/executor.rb +46 -0
- data/lib/test_bench_isolated/test_bench/run/file.rb +83 -0
- data/lib/test_bench_isolated/test_bench/run/get_files/substitute.rb +48 -0
- data/lib/test_bench_isolated/test_bench/run/get_files.rb +78 -0
- data/lib/test_bench_isolated/test_bench/run/output/file.rb +137 -0
- data/lib/test_bench_isolated/test_bench/run/output/summary/error.rb +141 -0
- data/lib/test_bench_isolated/test_bench/run/output/summary.rb +184 -0
- data/lib/test_bench_isolated/test_bench/run/run.rb +156 -0
- data/lib/test_bench_isolated/test_bench/run.rb +18 -0
- data/lib/test_bench_isolated/test_bench/session/controls/comment.rb +107 -0
- data/lib/test_bench_isolated/test_bench/session/controls/detail.rb +93 -0
- data/lib/test_bench_isolated/test_bench/session/controls/event.rb +9 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/commented.rb +112 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/context_finished.rb +72 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/context_skipped.rb +49 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/context_started.rb +66 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/detailed.rb +112 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/event_data.rb +11 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/failed.rb +49 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_finished.rb +55 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_started.rb +49 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/test_finished.rb +72 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/test_skipped.rb +49 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events/test_started.rb +66 -0
- data/lib/test_bench_isolated/test_bench/session/controls/events.rb +35 -0
- data/lib/test_bench_isolated/test_bench/session/controls/exception.rb +47 -0
- data/lib/test_bench_isolated/test_bench/session/controls/failure.rb +21 -0
- data/lib/test_bench_isolated/test_bench/session/controls/fixture.rb +21 -0
- data/lib/test_bench_isolated/test_bench/session/controls/output/detail.rb +31 -0
- data/lib/test_bench_isolated/test_bench/session/controls/output.rb +57 -0
- data/lib/test_bench_isolated/test_bench/session/controls/process_id.rb +9 -0
- data/lib/test_bench_isolated/test_bench/session/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/session/controls/result.rb +25 -0
- data/lib/test_bench_isolated/test_bench/session/controls/substitute/path.rb +35 -0
- data/lib/test_bench_isolated/test_bench/session/controls/time.rb +9 -0
- data/lib/test_bench_isolated/test_bench/session/controls/title.rb +41 -0
- data/lib/test_bench_isolated/test_bench/session/controls.rb +36 -0
- data/lib/test_bench_isolated/test_bench/session/events.rb +27 -0
- data/lib/test_bench_isolated/test_bench/session/output/get.rb +29 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive/viewport.rb +167 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive.rb +141 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer/buffer.rb +29 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer/defaults.rb +19 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer/substitute.rb +19 -0
- data/lib/test_bench_isolated/test_bench/session/output/writer.rb +97 -0
- data/lib/test_bench_isolated/test_bench/session/output.rb +377 -0
- data/lib/test_bench_isolated/test_bench/session/projection.rb +30 -0
- data/lib/test_bench_isolated/test_bench/session/session.rb +220 -0
- data/lib/test_bench_isolated/test_bench/session/store.rb +61 -0
- data/lib/test_bench_isolated/test_bench/session/substitute/path.rb +65 -0
- data/lib/test_bench_isolated/test_bench/session/substitute/sink.rb +114 -0
- data/lib/test_bench_isolated/test_bench/session/substitute.rb +120 -0
- data/lib/test_bench_isolated/test_bench/session.rb +22 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/event/event_data.rb +17 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/event/metadata.rb +72 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/event.rb +140 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/event_data.rb +131 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/file.rb +86 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/handler.rb +83 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/process_id.rb +21 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/projection/receiver.rb +33 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/projection.rb +86 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/random.rb +9 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/sink.rb +35 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls/time.rb +125 -0
- data/lib/test_bench_isolated/test_bench/telemetry/controls.rb +17 -0
- data/lib/test_bench_isolated/test_bench/telemetry/event.rb +108 -0
- data/lib/test_bench_isolated/test_bench/telemetry/event_data/serialization.rb +172 -0
- data/lib/test_bench_isolated/test_bench/telemetry/event_data.rb +15 -0
- data/lib/test_bench_isolated/test_bench/telemetry/sink/file.rb +33 -0
- data/lib/test_bench_isolated/test_bench/telemetry/sink/handler/event_registry.rb +44 -0
- data/lib/test_bench_isolated/test_bench/telemetry/sink/handler.rb +128 -0
- data/lib/test_bench_isolated/test_bench/telemetry/sink/projection.rb +134 -0
- data/lib/test_bench_isolated/test_bench/telemetry/sink.rb +13 -0
- data/lib/test_bench_isolated/test_bench/telemetry/substitute/sink.rb +85 -0
- data/lib/test_bench_isolated/test_bench/telemetry/substitute.rb +34 -0
- data/lib/test_bench_isolated/test_bench/telemetry/telemetry.rb +111 -0
- data/lib/test_bench_isolated/test_bench/telemetry.rb +17 -0
- data/lib/test_bench_isolated/test_bench/test_bench.rb +56 -0
- data/lib/test_bench_isolated/test_bench.rb +5 -0
- data/script/bench +5 -0
- metadata +156 -7
- 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,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
|