vernier 0.7.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4988794520691870cb34178385be791e28fa4806eb1f6934b0d0abf52c8a070c
4
- data.tar.gz: b1e63c6f5398f61fb68d634f17f33dc6aa7461344cb8acf446dd75ca52395818
3
+ metadata.gz: b450ebff29010a5a95e3817bc67d925f99ecca003ceacf15bdb390805e314045
4
+ data.tar.gz: c5c2ab7f3c3e29176685db787f9d4be9acbd5f798532ea571bd8710c78e05e62
5
5
  SHA512:
6
- metadata.gz: '082561b2a381f88c540e607d1dd9c0d42d841a0de82fc61471fb2d67754ee14a4fd1e87fa71896b586077664e61fd1db623fd250cd13064d198c9dc91d3f13ed'
7
- data.tar.gz: a28c197d405e4f52d999db3ae73187047886e1fcfb7d353d13f26ad5ba4b61f0675daf617119b37d72ad3760bd0dffcae234f2dcb0a0e960a60046dfb87dd784
6
+ metadata.gz: fe6d2aaba11eb9955fa95ec2bb2d0aaf14945b0fc70184251fc46a763a45f0fa14ede8bf7e959aa43160b96531fa11efc9919a7352f2d703382d32310dd739a5
7
+ data.tar.gz: 6f0f28086118df8cefbb533a8ca822f14410f460e7fb933eed1655ecdbc07d19e823986c1035d9dfc10a728b6966fa9d90c474a60e4a2b4ac0dc9e02bda70719
data/exe/vernier CHANGED
@@ -25,6 +25,9 @@ parser = OptionParser.new(banner) do |o|
25
25
  o.on('--start-paused', "don't automatically start the profiler") do
26
26
  options[:start_paused] = true
27
27
  end
28
+ o.on('--hooks [HOOKS]', String, "Enable instrumentation hooks. Currently supported: rails") do |s|
29
+ options[:hooks] = s
30
+ end
28
31
  end
29
32
 
30
33
  parser.parse!
@@ -18,10 +18,11 @@ module Vernier
18
18
  def self.start
19
19
  interval = options.fetch(:interval, 500).to_i
20
20
  allocation_sample_rate = options.fetch(:allocation_sample_rate, 0).to_i
21
+ hooks = options.fetch(:hooks, "").split(",")
21
22
 
22
23
  STDERR.puts("starting profiler with interval #{interval}")
23
24
 
24
- @collector = Vernier::Collector.new(:wall, interval:, allocation_sample_rate:)
25
+ @collector = Vernier::Collector.new(:wall, interval:, allocation_sample_rate:, hooks:)
25
26
  @collector.start
26
27
  end
27
28
 
@@ -29,11 +29,11 @@ module Vernier
29
29
  end
30
30
 
31
31
  private def add_hook(hook)
32
- case hook
32
+ case hook.to_sym
33
33
  when :rails, :activesupport
34
34
  @hooks << Vernier::Hooks::ActiveSupport.new(self)
35
35
  else
36
- warn "Unknown hook: #{hook}"
36
+ warn "Unknown hook: #{hook.inspect}"
37
37
  end
38
38
  end
39
39
 
@@ -7,9 +7,12 @@ module Vernier
7
7
  {
8
8
  name: "sql.active_record",
9
9
  display: [ "marker-chart", "marker-table" ],
10
+ tooltipLabel: "{marker.data.name}",
11
+ chartLabel: "{marker.data.name}",
12
+ tableLabel: "{marker.data.sql}",
10
13
  data: [
11
- { key: "sql", format: "string" },
12
- { key: "name", format: "string" },
14
+ { key: "sql", format: "string", searchable: true },
15
+ { key: "name", format: "string", searchable: true },
13
16
  { key: "type_casted_binds", label: "binds", format: "string"
14
17
  }
15
18
  ]
@@ -17,25 +20,50 @@ module Vernier
17
20
  {
18
21
  name: "instantiation.active_record",
19
22
  display: [ "marker-chart", "marker-table" ],
23
+ tooltipLabel: "{marker.data.record_count} × {marker.data.class_name}",
24
+ chartLabel: "{marker.data.record_count} × {marker.data.class_name}",
25
+ tableLabel: "Instantiate {marker.data.record_count} × {marker.data.class_name}",
20
26
  data: [
21
27
  { key: "record_count", format: "integer" },
22
28
  { key: "class_name", format: "string" }
23
29
  ]
24
30
  },
31
+ {
32
+ name: "start_processing.action_controller",
33
+ display: [ "marker-chart", "marker-table" ],
34
+ tooltipLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
35
+ chartLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
36
+ tableLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
37
+ data: [
38
+ { key: "controller", format: "string" },
39
+ { key: "action", format: "string" },
40
+ { key: "status", format: "integer" },
41
+ { key: "path", format: "string" },
42
+ { key: "method", format: "string" },
43
+ { key: "format", format: "string" }
44
+ ]
45
+ },
25
46
  {
26
47
  name: "process_action.action_controller",
27
48
  display: [ "marker-chart", "marker-table" ],
49
+ tooltipLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
50
+ chartLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
51
+ tableLabel: '{marker.data.method} {marker.data.controller}#{marker.data.action}',
28
52
  data: [
29
53
  { key: "controller", format: "string" },
30
54
  { key: "action", format: "string" },
31
55
  { key: "status", format: "integer" },
32
56
  { key: "path", format: "string" },
33
- { key: "method", format: "string" }
57
+ { key: "method", format: "string" },
58
+ { key: "format", format: "string" }
34
59
  ]
35
60
  },
36
61
  {
37
62
  name: "cache_read.active_support",
38
63
  display: [ "marker-chart", "marker-table" ],
64
+ tooltipLabel: '{marker.data.super_operation} {marker.data.key}',
65
+ chartLabel: '{marker.data.super_operation} {marker.data.key}',
66
+ tableLabel: '{marker.data.super_operation} {marker.data.key}',
39
67
  data: [
40
68
  { key: "key", format: "string" },
41
69
  { key: "store", format: "string" },
@@ -55,11 +83,65 @@ module Vernier
55
83
  },
56
84
  {
57
85
  name: "cache_fetch_hit.active_support",
86
+ tooltipLabel: 'HIT {marker.data.key}',
87
+ chartLabel: 'HIT {marker.data.key}',
88
+ tableLabel: 'HIT {marker.data.key}',
58
89
  display: [ "marker-chart", "marker-table" ],
59
90
  data: [
60
91
  { key: "key", format: "string" },
61
92
  { key: "store", format: "string" }
62
93
  ]
94
+ },
95
+ {
96
+ name: "render_template.action_view",
97
+ display: [ "marker-chart", "marker-table" ],
98
+ tooltipLabel: '{marker.data.identifier}',
99
+ chartLabel: '{marker.data.identifier}',
100
+ tableLabel: '{marker.data.identifier}',
101
+ data: [
102
+ { key: "identifier", format: "string" }
103
+ ]
104
+ },
105
+ {
106
+ name: "render_layout.action_view",
107
+ display: [ "marker-chart", "marker-table" ],
108
+ tooltipLabel: '{marker.data.identifier}',
109
+ chartLabel: '{marker.data.identifier}',
110
+ tableLabel: '{marker.data.identifier}',
111
+ data: [
112
+ { key: "identifier", format: "string" }
113
+ ]
114
+ },
115
+ {
116
+ name: "render_partial.action_view",
117
+ display: [ "marker-chart", "marker-table" ],
118
+ tooltipLabel: '{marker.data.identifier}',
119
+ chartLabel: '{marker.data.identifier}',
120
+ tableLabel: '{marker.data.identifier}',
121
+ data: [
122
+ { key: "identifier", format: "string" }
123
+ ]
124
+ },
125
+ {
126
+ name: "render_collection.action_view",
127
+ display: [ "marker-chart", "marker-table" ],
128
+ tooltipLabel: '{marker.data.identifier}',
129
+ chartLabel: '{marker.data.identifier}',
130
+ tableLabel: '{marker.data.identifier}',
131
+ data: [
132
+ { key: "identifier", format: "string" },
133
+ { key: "count", format: "integer" }
134
+ ]
135
+ },
136
+ {
137
+ name: "load_config_initializer.railties",
138
+ display: [ "marker-chart", "marker-table" ],
139
+ tooltipLabel: '{marker.data.initializer}',
140
+ chartLabel: '{marker.data.initializer}',
141
+ tableLabel: '{marker.data.initializer}',
142
+ data: [
143
+ { key: "initializer", format: "string" }
144
+ ]
63
145
  }
64
146
  ])
65
147
 
@@ -152,7 +152,7 @@ module Vernier
152
152
  [
153
153
  {
154
154
  name: "THREAD_RUNNING",
155
- display: [ "marker-chart", "marker-table" ],
155
+ display: [ "marker-chart" ],
156
156
  data: [
157
157
  {
158
158
  label: "Description",
@@ -162,7 +162,7 @@ module Vernier
162
162
  },
163
163
  {
164
164
  name: "THREAD_STALLED",
165
- display: [ "marker-chart", "marker-table" ],
165
+ display: [ "marker-chart" ],
166
166
  data: [
167
167
  {
168
168
  label: "Description",
@@ -172,7 +172,7 @@ module Vernier
172
172
  },
173
173
  {
174
174
  name: "THREAD_SUSPENDED",
175
- display: [ "marker-chart", "marker-table" ],
175
+ display: [ "marker-chart" ],
176
176
  data: [
177
177
  {
178
178
  label: "Description",
@@ -35,7 +35,7 @@ module Vernier
35
35
  return name if name && !name.empty?
36
36
 
37
37
  if thread == Thread.main
38
- return "main"
38
+ return $0
39
39
  end
40
40
 
41
41
  name = Thread.instance_method(:inspect).bind_call(thread)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vernier
4
- VERSION = "0.7.0"
4
+ VERSION = "0.8.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vernier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-13 00:00:00.000000000 Z
11
+ date: 2024-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.4.19
106
+ rubygems_version: 3.5.9
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: A next generation CRuby profiler