rspeed 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/rspeed.rb +1 -0
- data/lib/rspeed/extension.rb +3 -35
- data/lib/rspeed/observer.rb +29 -0
- data/lib/rspeed/splitter.rb +3 -1
- data/lib/rspeed/version.rb +1 -1
- data/spec/models/rspeed/observer/after_spec.rb +18 -0
- data/spec/models/rspeed/observer/before_spec.rb +17 -0
- data/spec/models/rspeed/observer/before_suite_spec.rb +15 -0
- data/spec/models/rspeed/splitter/append_spec.rb +5 -0
- data/spec/models/rspeed/splitter/split_spec.rb +3 -3
- data/spec/rails_helper.rb +23 -4
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27a64c0a7ba3f1c113bbdf8f060be44dad913a684d234663b342a537937ac7f2
|
4
|
+
data.tar.gz: 47d3a190302b361c6bb76279094a7c04982492e59d099d6acdbe92fcbd26d648
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac35df999459a32e06989e84d0e703f52a61b896e3a68ef7993c6eaf70952dd05826dffdf36f01fe5843b3916e57b24112708cbcadd19b83eb018c990f2bda4c
|
7
|
+
data.tar.gz: '09feaa28dc6a306f8ba039bcfbf02b500450b6f117160a726f326daae76c9584524825ffd693a4f3a84a61cb181fef7c00216557ce04ccaea736f42d3e9370d8'
|
data/CHANGELOG.md
CHANGED
data/lib/rspeed.rb
CHANGED
data/lib/rspeed/extension.rb
CHANGED
@@ -4,40 +4,8 @@ if ENV['RSPEED'] == 'true'
|
|
4
4
|
require 'rspec/rails'
|
5
5
|
|
6
6
|
RSpec.configure do |config|
|
7
|
-
config.before
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
config.before do |example|
|
12
|
-
example.update_inherited_metadata start_at: example.clock.now
|
13
|
-
end
|
14
|
-
|
15
|
-
config.after do |example|
|
16
|
-
file_path = example.metadata[:file_path]
|
17
|
-
time_difference = example.clock.now - example.metadata[:start_at]
|
18
|
-
|
19
|
-
File.open('rspeed.csv', 'a') do |file|
|
20
|
-
file.write "#{time_difference},#{file_path}\n"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
config.after :suite do |_example|
|
25
|
-
result = {}
|
26
|
-
|
27
|
-
CSV.read('rspeed.csv').each do |line|
|
28
|
-
result[line[1]] ||= 0
|
29
|
-
result[line[1]] += line[0].to_d
|
30
|
-
end
|
31
|
-
|
32
|
-
result = result.sort_by { |line| line[1] }.reverse
|
33
|
-
|
34
|
-
File.open('rspeed.csv', 'w') { |file| file.truncate 0 }
|
35
|
-
|
36
|
-
File.open('rspeed.csv', 'a') do |file|
|
37
|
-
result.each do |file_spec, time|
|
38
|
-
file.write "#{time},#{file_spec}\n"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
7
|
+
config.before(:suite) { RSpeed::Observer.before_suite }
|
8
|
+
config.before { |example| RSpeed::Observer.before(example) }
|
9
|
+
config.after { |example| RSpeed::Observer.after(example) }
|
42
10
|
end
|
43
11
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpeed
|
4
|
+
module Observer
|
5
|
+
module_function
|
6
|
+
|
7
|
+
def after(example)
|
8
|
+
file_path = example.metadata[:file_path]
|
9
|
+
line_number = example.metadata[:line_number]
|
10
|
+
spent_time = example.clock.now - example.metadata[:start_at]
|
11
|
+
|
12
|
+
File.open('rspeed.csv', 'a') do |file|
|
13
|
+
file.write "#{spent_time},#{file_path}:#{line_number}\n"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def before(example)
|
18
|
+
example.update_inherited_metadata(start_at: example.clock.now)
|
19
|
+
end
|
20
|
+
|
21
|
+
def before_suite
|
22
|
+
truncate_csv_file
|
23
|
+
end
|
24
|
+
|
25
|
+
def truncate_csv_file
|
26
|
+
File.open('rspeed.csv', 'w') { |file| file.truncate(0) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/rspeed/splitter.rb
CHANGED
@@ -80,7 +80,9 @@ module RSpeed
|
|
80
80
|
json["rspeed_#{index + 1}".to_sym] = { total: 0, files: [], number: index + 1 }
|
81
81
|
end
|
82
82
|
|
83
|
-
data.
|
83
|
+
sorted_data = data.sort_by { |item| item[:time] }.reverse
|
84
|
+
|
85
|
+
sorted_data.each do |record|
|
84
86
|
selected_pipe_data = json.min_by { |pipe| pipe[1][:total] }
|
85
87
|
selected_pipe = json["rspeed_#{selected_pipe_data[1][:number]}".to_sym]
|
86
88
|
time = record[:time].to_f
|
data/lib/rspeed/version.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Observer, '.after' do
|
6
|
+
let!(:now) { Time.local(2020, 1, 1, 0, 0, 1) }
|
7
|
+
let!(:clock) { class_double(RSpec::Core::Time, now: now) }
|
8
|
+
let!(:metadata) { { file_path: 'file_path', line_number: 7, start_at: now - 1 } }
|
9
|
+
let!(:example) { instance_double(RSpec::Core::Example, clock: clock, metadata: metadata) }
|
10
|
+
|
11
|
+
before { clean_csv_file }
|
12
|
+
|
13
|
+
it 'appends the time of example on csv file' do
|
14
|
+
described_class.after(example)
|
15
|
+
|
16
|
+
expect(File.open('rspeed.csv').read).to eq "1.0,file_path:7\n"
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Observer, '.before' do
|
6
|
+
let!(:now) { Time.local(2020) }
|
7
|
+
let!(:clock) { class_double(RSpec::Core::Time, now: now) }
|
8
|
+
let!(:example) { instance_double(RSpec::Core::Example, clock: clock) }
|
9
|
+
|
10
|
+
it 'saves the current time' do
|
11
|
+
allow(example).to receive(:update_inherited_metadata)
|
12
|
+
|
13
|
+
described_class.before(example)
|
14
|
+
|
15
|
+
expect(example).to have_received(:update_inherited_metadata).with(start_at: now)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
RSpec.describe RSpeed::Observer, '.before_suite' do
|
6
|
+
before { clean_csv_file }
|
7
|
+
|
8
|
+
it 'cleans the csv file' do
|
9
|
+
File.open('rspeed.csv', 'a') { |file| file.write('content') }
|
10
|
+
|
11
|
+
described_class.before_suite
|
12
|
+
|
13
|
+
expect(File.open('rspeed.csv').read).to eq ''
|
14
|
+
end
|
15
|
+
end
|
@@ -5,22 +5,22 @@ require 'rails_helper'
|
|
5
5
|
RSpec.describe RSpeed::Splitter, '.split' do
|
6
6
|
subject(:splitter) { described_class.new }
|
7
7
|
|
8
|
-
let!(:
|
8
|
+
let!(:unsorted_data) do
|
9
9
|
[
|
10
|
-
{ file: './spec/2_0_spec.rb', time: '2.0' },
|
11
10
|
{ file: './spec/1_5_spec.rb', time: '1.5' },
|
12
11
|
{ file: './spec/1_1_spec.rb', time: '1.1' },
|
13
12
|
{ file: './spec/0_7_spec.rb', time: '0.7' },
|
14
13
|
{ file: './spec/0_4_spec.rb', time: '0.4' },
|
15
14
|
{ file: './spec/0_3_spec.rb', time: '0.3' },
|
16
15
|
{ file: './spec/0_2_spec.rb', time: '0.2' },
|
16
|
+
{ file: './spec/2_0_spec.rb', time: '2.0' },
|
17
17
|
]
|
18
18
|
end
|
19
19
|
|
20
20
|
before { allow(splitter).to receive(:pipes).and_return 3 }
|
21
21
|
|
22
22
|
it 'splits the times between the pipes' do
|
23
|
-
expect(splitter.split(
|
23
|
+
expect(splitter.split(unsorted_data)).to eq(
|
24
24
|
rspeed_1: {
|
25
25
|
files: [{ file: './spec/2_0_spec.rb', time: 2.0 }],
|
26
26
|
number: 1,
|
data/spec/rails_helper.rb
CHANGED
@@ -9,14 +9,33 @@ require 'rspec'
|
|
9
9
|
require 'rspeed'
|
10
10
|
|
11
11
|
RSpec.configure do |config|
|
12
|
+
config.after do
|
13
|
+
ENV.delete('RSPEED_PIPE')
|
14
|
+
ENV.delete('RSPEED_PIPES')
|
15
|
+
end
|
16
|
+
|
12
17
|
config.disable_monkey_patching!
|
13
18
|
|
14
19
|
config.order = :random
|
20
|
+
config.profile_examples = 10
|
21
|
+
end
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
def clean_csv_file
|
24
|
+
File.open('rspeed.csv', 'w') { |file| file.truncate(0) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def populate_csv_file
|
28
|
+
data = [
|
29
|
+
'2.0,./spec/2_0_spec.rb',
|
30
|
+
'1.5,./spec/1_5_spec.rb',
|
31
|
+
'1.1,./spec/1_1_spec.rb',
|
32
|
+
'0.7,./spec/0_7_spec.rb',
|
33
|
+
'0.4,./spec/0_4_spec.rb',
|
34
|
+
'0.3,./spec/0_3_spec.rb',
|
35
|
+
'0.2,./spec/0_2_spec.rb'
|
36
|
+
].join("\n")
|
37
|
+
|
38
|
+
File.open('rspeed.csv', 'a') { |file| file.write(data) }
|
20
39
|
end
|
21
40
|
|
22
41
|
def redis_object
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspeed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -110,9 +110,13 @@ files:
|
|
110
110
|
- lib/generators/rspeed/templates/lib/tasks/rspeed.rb
|
111
111
|
- lib/rspeed.rb
|
112
112
|
- lib/rspeed/extension.rb
|
113
|
+
- lib/rspeed/observer.rb
|
113
114
|
- lib/rspeed/runner.rb
|
114
115
|
- lib/rspeed/splitter.rb
|
115
116
|
- lib/rspeed/version.rb
|
117
|
+
- spec/models/rspeed/observer/after_spec.rb
|
118
|
+
- spec/models/rspeed/observer/before_spec.rb
|
119
|
+
- spec/models/rspeed/observer/before_suite_spec.rb
|
116
120
|
- spec/models/rspeed/splitter/append_spec.rb
|
117
121
|
- spec/models/rspeed/splitter/destroy_spec.rb
|
118
122
|
- spec/models/rspeed/splitter/diff_spec.rb
|
@@ -164,4 +168,7 @@ test_files:
|
|
164
168
|
- spec/models/rspeed/splitter/diff_spec.rb
|
165
169
|
- spec/models/rspeed/splitter/split_spec.rb
|
166
170
|
- spec/models/rspeed/splitter/pipes_spec.rb
|
171
|
+
- spec/models/rspeed/observer/before_suite_spec.rb
|
172
|
+
- spec/models/rspeed/observer/before_spec.rb
|
173
|
+
- spec/models/rspeed/observer/after_spec.rb
|
167
174
|
- spec/rails_helper.rb
|