allotment 1.0.1 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +141 -0
- data/allotment.gemspec +27 -0
- data/lib/allotment.rb +4 -3
- data/lib/allotment/version.rb +4 -0
- data/spec/allotment_spec.rb +2 -2
- metadata +50 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6417cf65f6cb61d3ea29b4270ad1c98e66d4945
|
4
|
+
data.tar.gz: 9948aa7f2e371bc100081451ce46607db0c09d69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b285e0947b4a97ef2578cfd9706e17f2f480b65b3436d0e8c8593c921b4b34cedfc42f9b014ad6c451c1bc2d0b0ec69cb5156327686133c02ab075c5c07a6f6
|
7
|
+
data.tar.gz: 53f7a0b502ac4d7ee3b5371893c2785c2fdd85e58b10f124338942d657d0f1675d3cfe92e0290f5074b615330f4ec351618a2be7f6a51488fae331832f1c3677
|
data/README.md
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
# Allotment
|
2
|
+
|
3
|
+
[![Code Climate](https://codeclimate.com/github/benSlaughter/allotment.png)](https://codeclimate.com/github/benSlaughter/allotment)
|
4
|
+
[![Build Status](https://travis-ci.org/benSlaughter/allotment.png?branch=master)](https://travis-ci.org/benSlaughter/allotment)
|
5
|
+
[![Dependency Status](https://gemnasium.com/benSlaughter/allotment.png)](https://gemnasium.com/benSlaughter/allotment)
|
6
|
+
[![Coverage Status](https://coveralls.io/repos/benSlaughter/allotment/badge.png?branch=master)](https://coveralls.io/r/benSlaughter/allotment)
|
7
|
+
[![Gem Version](https://badge.fury.io/rb/allotment.png)](http://badge.fury.io/rb/allotment)
|
8
|
+
|
9
|
+
Allotment is a performance rubygem that records and stores the performance timing of running a block of code,
|
10
|
+
or from a from a chosen point, until a task or action is complete.
|
11
|
+
|
12
|
+
Each performance recording is stored with a recording name,
|
13
|
+
each following recording is added so that multiple recordings can be queried and assesed.
|
14
|
+
|
15
|
+
Allotment also stores all the results so that they can be easily accessed at any time.
|
16
|
+
|
17
|
+
## Setup
|
18
|
+
|
19
|
+
Allotment has been tested with Ruby 1.9.2 and later.
|
20
|
+
To install, type:
|
21
|
+
|
22
|
+
```bash
|
23
|
+
gem install allotment
|
24
|
+
```
|
25
|
+
|
26
|
+
## Using Allotment with Cucumber
|
27
|
+
|
28
|
+
If you are using Cucumber you can record each scenario, and report the results to the console, add this line into your env.rb file:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require 'allotment/cucumber'
|
32
|
+
```
|
33
|
+
|
34
|
+
## Using Allotment
|
35
|
+
|
36
|
+
Allotments main features are: the ability to record performance of ruby blocks; and record from point to point.
|
37
|
+
|
38
|
+
Require Allotment at the start of your code:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
require 'allotment'
|
42
|
+
```
|
43
|
+
|
44
|
+
### Recording a Block
|
45
|
+
|
46
|
+
The basic way of recording a block is as follows:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
Allotment.record_event('my_recording') { # code here }
|
50
|
+
```
|
51
|
+
```ruby
|
52
|
+
Allotment.record_event('my_recording') do
|
53
|
+
# code here
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
57
|
+
When an event has been completed the performance timing is returned by the method:
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
performance = Allotment.record_event { # code here }
|
61
|
+
```
|
62
|
+
```ruby
|
63
|
+
performance = Allotment.record_event do
|
64
|
+
# code here
|
65
|
+
end
|
66
|
+
```
|
67
|
+
|
68
|
+
### Record point to point:
|
69
|
+
|
70
|
+
The basic way of recording point to point is as follows:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
require 'allotment'
|
74
|
+
|
75
|
+
Allotment.start_recording 'my_recording'
|
76
|
+
# code here
|
77
|
+
Allotment.stop_recording 'my_recording'
|
78
|
+
```
|
79
|
+
|
80
|
+
When stop recording is called the performance timing is returned by the method:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
performance = Allotment.stop_recording 'my_recording'
|
84
|
+
```
|
85
|
+
|
86
|
+
When start recording is called the timing stopwatch is returned by the method:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
stopwatch = Allotment.start_recording 'my_recording'
|
90
|
+
```
|
91
|
+
|
92
|
+
_More on [stopwatches](#allotment-stopwatches)_
|
93
|
+
|
94
|
+
If a recording name does not exists, then a NameError shall be raised.
|
95
|
+
|
96
|
+
### Accessing performance results
|
97
|
+
|
98
|
+
Performance recordings are stored within a hash. The reperformance results are logged to an array under the recording name.
|
99
|
+
They can be access from Allotment at any time:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
hash = Allotment.results
|
103
|
+
```
|
104
|
+
```ruby
|
105
|
+
array = Allotment.results["my_recording"]
|
106
|
+
```
|
107
|
+
```ruby
|
108
|
+
result = Allotment.results["my_recording"].first
|
109
|
+
```
|
110
|
+
```ruby
|
111
|
+
result = Allotment.results["my_recording"].average
|
112
|
+
```
|
113
|
+
|
114
|
+
### Allotment Stopwatches
|
115
|
+
|
116
|
+
TODO
|
117
|
+
|
118
|
+
## Release Notes
|
119
|
+
### Version 1.0.0
|
120
|
+
###### Major: Inital release version.
|
121
|
+
* Allotment has the ablility to record blocks and procs, and to record from two separate points within the code.
|
122
|
+
* Stopwatch has been completed and can start, stop, split, lap and restart.
|
123
|
+
* There is an extention of Array for an average.
|
124
|
+
* There is Cucumber support, a cucumber file has been included that will record scenario and test time.
|
125
|
+
|
126
|
+
### Version 1.0.1
|
127
|
+
###### Patch: Added instance methods
|
128
|
+
* Added instance methods so that the module can be included into a class and allotment does not need to be called every time.
|
129
|
+
* Cleaned up stopwatch so that it had lap and split
|
130
|
+
|
131
|
+
## Version 1.0.2
|
132
|
+
###### Patch: Results returned as Hashie::Mash
|
133
|
+
* results methods now return results as a Hashie::Mash
|
134
|
+
|
135
|
+
## Planned Releases
|
136
|
+
### Version 1.1.0
|
137
|
+
###### Minor: Improvements to recording events and stopwatch management
|
138
|
+
* Rescue within an event to ensure that the timing is stopped in the event of a failure
|
139
|
+
* Complete the readme with updated information on using stopwatches
|
140
|
+
* A complete record of all spawned stopwatches
|
141
|
+
|
data/allotment.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'allotment/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'allotment'
|
7
|
+
spec.summary = 'Allotment: Performance recording'
|
8
|
+
spec.description = 'Simple performance recordings of blocks, procs or point to point'
|
9
|
+
spec.homepage = 'http://benslaughter.github.io/allotment/'
|
10
|
+
spec.version = Allotment::VERSION
|
11
|
+
spec.date = Allotment::DATE
|
12
|
+
spec.license = 'MIT'
|
13
|
+
|
14
|
+
spec.author = 'Ben Slaughter'
|
15
|
+
spec.email = 'b.p.slaughter@gmail.com'
|
16
|
+
|
17
|
+
spec.add_development_dependency 'rspec'
|
18
|
+
spec.add_development_dependency 'coveralls'
|
19
|
+
spec.add_runtime_dependency 'hashie'
|
20
|
+
|
21
|
+
spec.files = ['README.md', 'allotment.gemspec']
|
22
|
+
spec.files += Dir.glob("lib/**/*.rb")
|
23
|
+
spec.files += Dir.glob("spec/**/*")
|
24
|
+
spec.test_files = Dir.glob("spec/**/*")
|
25
|
+
spec.require_path = 'lib'
|
26
|
+
|
27
|
+
end
|
data/lib/allotment.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'allotment/array'
|
2
2
|
require 'allotment/stopwatch'
|
3
3
|
require 'json'
|
4
|
+
require 'hashie'
|
4
5
|
|
5
6
|
module Allotment
|
6
7
|
class << self
|
@@ -11,7 +12,7 @@ module Allotment
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def start_recording name = 'unnamed'
|
14
|
-
@watches ||=
|
15
|
+
@watches ||= Hashie::Mash.new
|
15
16
|
@watches[name] = Stopwatch.new name
|
16
17
|
end
|
17
18
|
|
@@ -20,9 +21,9 @@ module Allotment
|
|
20
21
|
result = watch.stop
|
21
22
|
|
22
23
|
# Dealing with the results
|
23
|
-
@results ||=
|
24
|
+
@results ||= Hashie::Mash.new
|
24
25
|
@results[name] ||= Array.new
|
25
|
-
@results[name]
|
26
|
+
@results[name] << result
|
26
27
|
|
27
28
|
return result
|
28
29
|
end
|
data/spec/allotment_spec.rb
CHANGED
@@ -152,7 +152,7 @@ describe Allotment do
|
|
152
152
|
describe ".results" do
|
153
153
|
it "returns a hash" do
|
154
154
|
Allotment.record_event('my_recording4') { sleep 0.01 }
|
155
|
-
Allotment.results.class.should eq
|
155
|
+
Allotment.results.class.should eq Hashie::Mash
|
156
156
|
end
|
157
157
|
|
158
158
|
it "returns a hash with the event in" do
|
@@ -180,7 +180,7 @@ describe Allotment do
|
|
180
180
|
|
181
181
|
it "returns a hash" do
|
182
182
|
@dummy_class.record_event('my_recording4') { sleep 0.01 }
|
183
|
-
@dummy_class.results.class.should eq
|
183
|
+
@dummy_class.results.class.should eq Hashie::Mash
|
184
184
|
end
|
185
185
|
|
186
186
|
it "returns a hash with the event in" do
|
metadata
CHANGED
@@ -1,25 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allotment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Slaughter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
11
|
+
date: 2013-08-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: coveralls
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hashie
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Simple performance recordings of blocks, procs or point to point
|
15
56
|
email: b.p.slaughter@gmail.com
|
16
57
|
executables: []
|
17
58
|
extensions: []
|
18
59
|
extra_rdoc_files: []
|
19
60
|
files:
|
61
|
+
- README.md
|
62
|
+
- allotment.gemspec
|
20
63
|
- lib/allotment/array.rb
|
21
64
|
- lib/allotment/cucumber.rb
|
22
65
|
- lib/allotment/stopwatch.rb
|
66
|
+
- lib/allotment/version.rb
|
23
67
|
- lib/allotment.rb
|
24
68
|
- spec/allotment_spec.rb
|
25
69
|
- spec/helper.rb
|
@@ -48,7 +92,7 @@ rubyforge_project:
|
|
48
92
|
rubygems_version: 2.0.3
|
49
93
|
signing_key:
|
50
94
|
specification_version: 4
|
51
|
-
summary: Performance recording
|
95
|
+
summary: 'Allotment: Performance recording'
|
52
96
|
test_files:
|
53
97
|
- spec/allotment_spec.rb
|
54
98
|
- spec/helper.rb
|