perf_check 0.7.5 → 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 +4 -4
- data/bin/perf_check +1 -1
- data/lib/perf_check/git.rb +1 -1
- data/lib/perf_check/middleware.rb +19 -12
- data/lib/perf_check/railtie.rb +1 -1
- data/lib/perf_check/test_case.rb +1 -1
- data/lib/perf_check.rb +7 -7
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0d9ae6fc8c0d7d6581b8c8202f82bd7b2cf6f1e
|
4
|
+
data.tar.gz: cdec3df9f3dc51ad2b329c652dffe1154f0f80a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcb0b85c4ff22bb9dd0cd7084b513b55942e74d2a18c24fd009cab27d7f0bbd95d241119e48679ce0f9becf96abaf9da6bbb9b74305017ea3eb210a06ffe0eb5
|
7
|
+
data.tar.gz: 3647a68aac43d4bd6f63678c988988de348c69ea276288d5966caef248ebe82f8226690e1d3ad0385df8bfc8cc4d5b8ab3dd56d3eff33d4b276003f7f7ef7297
|
data/bin/perf_check
CHANGED
@@ -18,7 +18,7 @@ app_root =
|
|
18
18
|
|
19
19
|
|
20
20
|
if File.exists?("#{app_root}/tmp/pids/server.pid")
|
21
|
-
abort("It looks like a rails server is already running. Shut it down before continuing with perf_check.")
|
21
|
+
abort("It looks like a rails server is already running. Shut it down or remove the pid in tmp/pids/server.pid before continuing with perf_check.")
|
22
22
|
end
|
23
23
|
|
24
24
|
perf_check = PerfCheck.new(app_root).tap(&:load_config)
|
data/lib/perf_check/git.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
1
3
|
class PerfCheck
|
2
4
|
class Middleware
|
3
5
|
attr_reader :app
|
@@ -17,21 +19,26 @@ class PerfCheck
|
|
17
19
|
|
18
20
|
begin
|
19
21
|
status, headers, body = app.call(env)
|
20
|
-
rescue
|
21
|
-
|
22
|
-
"/trace-#{SecureRandom.hex(16)}.txt"
|
23
|
-
FileUtils.mkdir_p(File.dirname(trace_file))
|
24
|
-
|
25
|
-
File.open(trace_file, 'w') do |f|
|
26
|
-
f.puts("#{e.class}: #{e.message}")
|
27
|
-
f.write(e.backtrace.join("\n"))
|
28
|
-
end
|
29
|
-
status, headers, body = 500, {"X-PerfCheck-StackTrace" => trace_file}, ['']
|
22
|
+
rescue => error
|
23
|
+
status, headers, body = 500, { "X-PerfCheck-StackTrace" => stacktrace_for(error) }, ['']
|
30
24
|
end
|
31
|
-
|
32
25
|
headers['X-PerfCheck-Query-Count'] = query_count.to_s
|
33
|
-
|
34
26
|
[status, headers, body]
|
35
27
|
end
|
28
|
+
|
29
|
+
# These files are used by the perf_check daemon app
|
30
|
+
def stacktrace_for(e)
|
31
|
+
trace_file = "#{Rails.root}/tmp/perf_check_traces" <<
|
32
|
+
"/trace-#{SecureRandom.hex(16)}.txt"
|
33
|
+
FileUtils.mkdir_p(File.dirname(trace_file))
|
34
|
+
|
35
|
+
File.open(trace_file, 'w') do |f|
|
36
|
+
f.puts("#{e.class}: #{e.message}")
|
37
|
+
f.write(e.backtrace.join("\n"))
|
38
|
+
end
|
39
|
+
trace_file
|
40
|
+
end
|
41
|
+
|
42
|
+
|
36
43
|
end
|
37
44
|
end
|
data/lib/perf_check/railtie.rb
CHANGED
data/lib/perf_check/test_case.rb
CHANGED
data/lib/perf_check.rb
CHANGED
@@ -13,7 +13,7 @@ class PerfCheck
|
|
13
13
|
attr_reader :app_root, :options, :git, :server, :test_cases
|
14
14
|
attr_accessor :logger
|
15
15
|
|
16
|
-
def initialize(app_root
|
16
|
+
def initialize(app_root)
|
17
17
|
@app_root = app_root
|
18
18
|
|
19
19
|
@options = OpenStruct.new(
|
@@ -31,7 +31,7 @@ class PerfCheck
|
|
31
31
|
json: false
|
32
32
|
)
|
33
33
|
|
34
|
-
@logger = Logger.new(
|
34
|
+
@logger = Logger.new(STDERR).tap do |logger|
|
35
35
|
logger.formatter = proc do |severity, datetime, progname, msg|
|
36
36
|
"[#{datetime.strftime("%Y-%m-%d %H:%M:%S")}] #{msg}\n"
|
37
37
|
end
|
@@ -51,7 +51,7 @@ class PerfCheck
|
|
51
51
|
begin
|
52
52
|
Dir.chdir(app_root)
|
53
53
|
load "#{app_root}/config/perf_check.rb"
|
54
|
-
rescue
|
54
|
+
rescue LoadError => e
|
55
55
|
error = ConfigLoadError.new(e.message)
|
56
56
|
error.set_backtrace(e.backtrace)
|
57
57
|
raise error
|
@@ -84,14 +84,14 @@ class PerfCheck
|
|
84
84
|
(git.pop rescue nil) if git.stashed?
|
85
85
|
end
|
86
86
|
|
87
|
-
|
87
|
+
callbacks = {}
|
88
88
|
|
89
89
|
if $!
|
90
|
-
|
91
|
-
|
90
|
+
callbacks[:error_message] = "#{$!.class}: #{$!.message}\n"
|
91
|
+
callbacks[:error_message] << $!.backtrace.map{|x| "\t#{x}"}.join("\n")
|
92
92
|
end
|
93
93
|
|
94
|
-
trigger_when_finished_callbacks(
|
94
|
+
trigger_when_finished_callbacks(callbacks)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perf_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rubytune
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -42,30 +42,44 @@ dependencies:
|
|
42
42
|
name: colorize
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: diffy
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
executables:
|
@@ -103,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
117
|
version: '0'
|
104
118
|
requirements: []
|
105
119
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
120
|
+
rubygems_version: 2.6.11
|
107
121
|
signing_key:
|
108
122
|
specification_version: 4
|
109
123
|
summary: PERF CHECKKK!
|