benelux 0.3.2 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +15 -0
- data/README.rdoc +1 -1
- data/benelux.gemspec +15 -4
- data/lib/benelux.rb +141 -172
- data/lib/benelux/count.rb +29 -0
- data/lib/benelux/mark.rb +2 -11
- data/lib/benelux/mixins/symbol.rb +8 -0
- data/lib/benelux/mixins/thread.rb +1 -1
- data/lib/benelux/packer.rb +138 -0
- data/lib/benelux/range.rb +2 -2
- data/lib/benelux/reporter.rb +89 -0
- data/lib/benelux/stats.rb +70 -47
- data/lib/benelux/timeline.rb +45 -35
- data/lib/benelux/track.rb +20 -0
- data/lib/selectable.rb +72 -0
- data/lib/selectable/global.rb +63 -0
- data/lib/selectable/object.rb +42 -0
- data/lib/{benelux → selectable}/tags.rb +19 -45
- data/tryouts/10_stats_tryouts.rb +21 -4
- data/tryouts/{11_tags_tryouts.rb → 11_selectable_tryouts.rb} +38 -2
- data/tryouts/12_selectable_global_tryouts.rb +23 -0
- data/tryouts/20_tracks_tryouts.rb +106 -0
- data/tryouts/30_reporter_tryouts.rb +34 -0
- data/tryouts/30_timeline_tryouts.rb +38 -3
- data/tryouts/proofs/array_performance.rb +33 -0
- metadata +16 -5
- data/tryouts/20_class_methods_tryouts.rb +0 -69
@@ -2,8 +2,42 @@
|
|
2
2
|
group "Benelux"
|
3
3
|
|
4
4
|
library :benelux, 'lib'
|
5
|
+
tryouts "Selectable" do
|
6
|
+
set :base, SelectableArray.new
|
7
|
+
|
8
|
+
setup do
|
9
|
+
class ::TaggedItems
|
10
|
+
include Selectable::Object
|
11
|
+
end
|
12
|
+
10.times { |i|
|
13
|
+
obj = TaggedItems.new
|
14
|
+
obj.add_tags :index => i, :even => (i%2 == 0)
|
15
|
+
base << obj
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
dream :class, SelectableArray
|
20
|
+
dream :size, 5
|
21
|
+
drill "filter returns a new instance of the same object" do
|
22
|
+
base.filter(:even => true)
|
23
|
+
end
|
24
|
+
|
25
|
+
drill "[] and filter are the same", true do
|
26
|
+
base.filter(:even => false) == base.filter(:even => false)
|
27
|
+
end
|
28
|
+
|
29
|
+
dream :class, SelectableArray
|
30
|
+
dream :object_id, base.object_id
|
31
|
+
dream :size, 5
|
32
|
+
drill "filter! makes permanent changes to itself" do
|
33
|
+
base.filter! :even => true
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
|
5
39
|
tryouts "Tags" do
|
6
|
-
set :base,
|
40
|
+
set :base, Selectable::Tags[:a => 1, :b => 2]
|
7
41
|
|
8
42
|
drill "Can equal a Hash with the same keys/values", true do
|
9
43
|
base == {:a => 1, :b => 2}
|
@@ -57,4 +91,6 @@ tryouts "Tags" do
|
|
57
91
|
base <= [2, 1]
|
58
92
|
end
|
59
93
|
|
60
|
-
end
|
94
|
+
end
|
95
|
+
|
96
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# group "Benelux"
|
3
|
+
#
|
4
|
+
# library :benelux, 'lib'
|
5
|
+
# tryouts "Selectable::Global" do
|
6
|
+
# set :bast, Benelux::Counts.new
|
7
|
+
# setup do
|
8
|
+
#
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# dream :class, Benelux::Counts
|
12
|
+
# dream :names, [:group1, :group2]
|
13
|
+
# drill "Add groups" do
|
14
|
+
# bast.add_group :group1, :group2
|
15
|
+
# bast
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# drill "Add objects to groups", true do
|
19
|
+
# bast.send(:group1).class
|
20
|
+
# bast.class.group_class
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
group "Benelux"
|
2
|
+
|
3
|
+
library :benelux, 'lib'
|
4
|
+
tryouts "Tracks" do
|
5
|
+
|
6
|
+
dream [:track1, :track1]
|
7
|
+
drill "Can specify current track" do
|
8
|
+
Benelux.current_track :track1
|
9
|
+
[Thread.current.track_name, Benelux.current_track.name]
|
10
|
+
end
|
11
|
+
|
12
|
+
dream :class, Benelux::Timeline
|
13
|
+
drill "Track has a timeline" do
|
14
|
+
Benelux.current_track.timeline
|
15
|
+
end
|
16
|
+
|
17
|
+
dream :exception, Benelux::UnknownTrack
|
18
|
+
drill "raises exception when unknown track specified" do
|
19
|
+
Benelux.track :name
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
__END__
|
25
|
+
# OLD (0.3):
|
26
|
+
|
27
|
+
tryouts "Essentials" do
|
28
|
+
|
29
|
+
setup do
|
30
|
+
class ::Sleeper
|
31
|
+
def do_something() sleep rand/3 end
|
32
|
+
def another_method(t) t*2 end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
drill "Add timers to existing objects", true do
|
37
|
+
Benelux.add_timer Sleeper, :do_something
|
38
|
+
Sleeper.new.respond_to? :timeline
|
39
|
+
end
|
40
|
+
|
41
|
+
dream :class, SelectableArray
|
42
|
+
dream :size, 1
|
43
|
+
dream :proc, lambda { |obj|
|
44
|
+
pm = obj.first
|
45
|
+
pm.class == Benelux::MethodTimer &&
|
46
|
+
pm.meth == :do_something &&
|
47
|
+
pm.klass == Sleeper
|
48
|
+
}
|
49
|
+
drill "Keeps a list of modified methods" do
|
50
|
+
Benelux.packed_methods
|
51
|
+
end
|
52
|
+
|
53
|
+
drill "Knows what a timer has been defined", true do
|
54
|
+
Benelux.timed_method? :Sleeper, :do_something
|
55
|
+
end
|
56
|
+
|
57
|
+
drill "Knows what a timer has not been defined", false do
|
58
|
+
Benelux.timed_method? :Sleeper, :no_such_method
|
59
|
+
end
|
60
|
+
|
61
|
+
dream :class, SelectableArray
|
62
|
+
drill "A Benelux object has a timed_methods method" do
|
63
|
+
s = Sleeper.new
|
64
|
+
s.do_something
|
65
|
+
s.timed_methods
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
tryouts "Counters" do
|
71
|
+
setup do
|
72
|
+
class ::Sleeper
|
73
|
+
def do_something() sleep rand/3 end
|
74
|
+
def another_method(t) t*2 end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
drill "Add timers to existing objects", true do
|
78
|
+
Benelux.add_counter Sleeper, :another_method do |args,ret|
|
79
|
+
ret
|
80
|
+
end
|
81
|
+
Sleeper.new.respond_to? :timeline
|
82
|
+
end
|
83
|
+
dream :kind_of?, Benelux::MethodPacker
|
84
|
+
drill "Can get specific packed method" do
|
85
|
+
Benelux.packed_method Sleeper, :another_method
|
86
|
+
end
|
87
|
+
|
88
|
+
dream :class, Benelux::Count
|
89
|
+
dream :name, :another_method
|
90
|
+
dream :to_i, 2000
|
91
|
+
drill "Run counter" do
|
92
|
+
a = Sleeper.new
|
93
|
+
a.another_method(1000)
|
94
|
+
pm = Benelux.packed_method Sleeper, :another_method
|
95
|
+
Benelux.thread_timeline.counts.first
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
xtryouts "Not supported" do
|
100
|
+
|
101
|
+
dream :exception, Benelux::NotSupported
|
102
|
+
drill "Class is not supported" do
|
103
|
+
Benelux.add_timer Class, :new
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
group "Benelux"
|
2
|
+
|
3
|
+
library :benelux, 'lib'
|
4
|
+
tryouts "Reporter" do
|
5
|
+
set :reporter, Benelux::Reporter.new
|
6
|
+
|
7
|
+
drill "1", true do
|
8
|
+
p Benelux
|
9
|
+
end
|
10
|
+
|
11
|
+
dream :exception, Benelux::BadRecursion
|
12
|
+
xdrill "will not report on itself" do
|
13
|
+
reporter.add_threads Thread.current
|
14
|
+
end
|
15
|
+
|
16
|
+
dream :class, ThreadsWait
|
17
|
+
dream :empty?, false
|
18
|
+
xdrill "can add threads" do
|
19
|
+
2.times {
|
20
|
+
t = Thread.new do
|
21
|
+
3.times { sleep 1; }
|
22
|
+
end
|
23
|
+
reporter.add_thread t
|
24
|
+
}
|
25
|
+
reporter.thwait
|
26
|
+
end
|
27
|
+
|
28
|
+
dream true
|
29
|
+
xdrill "will wait for known threads" do
|
30
|
+
reporter.start
|
31
|
+
reporter
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -1,19 +1,40 @@
|
|
1
1
|
|
2
|
+
|
3
|
+
__END__
|
4
|
+
# OLD (0.3):
|
5
|
+
|
2
6
|
group "Benelux"
|
3
7
|
|
4
8
|
library :benelux, 'lib'
|
5
9
|
tryouts "Timelines" do
|
6
10
|
set :tl, Benelux::Timeline.new
|
7
11
|
|
12
|
+
setup do
|
13
|
+
class ::Sleeper
|
14
|
+
def do_something() sleep rand/3 end
|
15
|
+
def another_method(t) t*2 end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
drill "Can set thread track", :track1 do
|
20
|
+
Benelux.current_track :track1
|
21
|
+
# Thread.current.track
|
22
|
+
end
|
23
|
+
|
24
|
+
drill "Add timers to existing objects", true do
|
25
|
+
Benelux.add_timer Sleeper, :do_something
|
26
|
+
Sleeper.new.respond_to? :timeline
|
27
|
+
end
|
28
|
+
|
8
29
|
dream :class, Benelux::Timeline
|
9
30
|
dream :size, 3
|
10
31
|
drill "create timeline with marks" do
|
11
32
|
tl.add_default_tags :a => :frog
|
12
|
-
tl.add_mark(:one)
|
33
|
+
tl.add_mark(:one)
|
13
34
|
tl.add_default_tags :b => :rest
|
14
|
-
tl.add_mark(:two)
|
35
|
+
tl.add_mark(:two)
|
15
36
|
tl.add_default_tags :c => :tilt
|
16
|
-
tl.add_mark(:three)
|
37
|
+
tl.add_mark(:three)
|
17
38
|
tl.marks
|
18
39
|
end
|
19
40
|
|
@@ -22,4 +43,18 @@ tryouts "Timelines" do
|
|
22
43
|
tl[:frog][:b => :rest]
|
23
44
|
end
|
24
45
|
|
46
|
+
dream :class, Benelux::Timeline
|
47
|
+
dream :size, 10 # 5 * 2 = 10
|
48
|
+
drill "Creates a timeline for the thread" do
|
49
|
+
sleeper = Sleeper.new
|
50
|
+
5.times { sleeper.do_something }
|
51
|
+
Benelux.thread_timeline
|
52
|
+
end
|
53
|
+
|
54
|
+
dream :class, Benelux::Timeline
|
55
|
+
dream :size, 10
|
56
|
+
drill "Creates a global timeline" do
|
57
|
+
Benelux.update_all_track_timelines
|
58
|
+
Benelux.timeline
|
59
|
+
end
|
25
60
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
tryouts "Array speed", :benchmark do
|
3
|
+
set :base, []
|
4
|
+
|
5
|
+
drill "Populate array" do
|
6
|
+
10_000_000.times { base << 1 }
|
7
|
+
end
|
8
|
+
|
9
|
+
drill "with <<" do
|
10
|
+
a = []
|
11
|
+
base.each { |v|
|
12
|
+
a << v
|
13
|
+
}
|
14
|
+
a.flatten!
|
15
|
+
end
|
16
|
+
|
17
|
+
# SLOOOOOWWWWW (b/c it creates a new Array every iteration)
|
18
|
+
xdrill "with +=" do
|
19
|
+
a = []
|
20
|
+
base.each {|v|
|
21
|
+
a += [v]
|
22
|
+
}
|
23
|
+
a
|
24
|
+
end
|
25
|
+
|
26
|
+
drill "with select" do
|
27
|
+
a = base.select { |v|
|
28
|
+
true
|
29
|
+
}
|
30
|
+
Array.new(a)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benelux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delano Mandelbaum
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-06 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -39,17 +39,28 @@ files:
|
|
39
39
|
- Rakefile
|
40
40
|
- benelux.gemspec
|
41
41
|
- lib/benelux.rb
|
42
|
+
- lib/benelux/count.rb
|
42
43
|
- lib/benelux/mark.rb
|
44
|
+
- lib/benelux/mixins/symbol.rb
|
43
45
|
- lib/benelux/mixins/thread.rb
|
46
|
+
- lib/benelux/packer.rb
|
44
47
|
- lib/benelux/range.rb
|
48
|
+
- lib/benelux/reporter.rb
|
45
49
|
- lib/benelux/stats.rb
|
46
|
-
- lib/benelux/tags.rb
|
47
50
|
- lib/benelux/timeline.rb
|
51
|
+
- lib/benelux/track.rb
|
52
|
+
- lib/selectable.rb
|
53
|
+
- lib/selectable/global.rb
|
54
|
+
- lib/selectable/object.rb
|
55
|
+
- lib/selectable/tags.rb
|
48
56
|
- tryouts/10_stats_tryouts.rb
|
49
|
-
- tryouts/
|
50
|
-
- tryouts/
|
57
|
+
- tryouts/11_selectable_tryouts.rb
|
58
|
+
- tryouts/12_selectable_global_tryouts.rb
|
59
|
+
- tryouts/20_tracks_tryouts.rb
|
60
|
+
- tryouts/30_reporter_tryouts.rb
|
51
61
|
- tryouts/30_timeline_tryouts.rb
|
52
62
|
- tryouts/proofs/alias_performance.rb
|
63
|
+
- tryouts/proofs/array_performance.rb
|
53
64
|
- tryouts/proofs/timer_threading.rb
|
54
65
|
has_rdoc: true
|
55
66
|
homepage: http://github.com/delano/benelux
|
@@ -1,69 +0,0 @@
|
|
1
|
-
|
2
|
-
group "Benelux"
|
3
|
-
|
4
|
-
library :benelux, 'lib'
|
5
|
-
|
6
|
-
tryouts "Basics" do
|
7
|
-
|
8
|
-
setup do
|
9
|
-
class ::Sleeper
|
10
|
-
def do_something() sleep rand/3 end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
drill "Add timers to existing objects", true do
|
15
|
-
Benelux.add_timer Sleeper, :do_something
|
16
|
-
Sleeper.new.respond_to? :timeline
|
17
|
-
end
|
18
|
-
|
19
|
-
dream :class, Hash
|
20
|
-
dream { Hash[ Sleeper => [:do_something] ] }
|
21
|
-
drill "Benelux keeps track of timed objects" do
|
22
|
-
Benelux.timed_methods
|
23
|
-
end
|
24
|
-
|
25
|
-
dream [:do_something]
|
26
|
-
drill "A Benelux object has a benelux_timers method" do
|
27
|
-
Sleeper.new.benelux_timers
|
28
|
-
end
|
29
|
-
|
30
|
-
dream :class, Benelux::Timeline
|
31
|
-
dream :size, 10 # 5 * 2 = 10 (marks are stored for the method start and end)
|
32
|
-
drill "Creates a timeline" do
|
33
|
-
sleeper = Sleeper.new
|
34
|
-
5.times { sleeper.do_something }
|
35
|
-
sleeper.timeline
|
36
|
-
end
|
37
|
-
|
38
|
-
dream :size, 4
|
39
|
-
drill "Timelines are stored per object" do
|
40
|
-
sleeper = Sleeper.new
|
41
|
-
Thread.new do
|
42
|
-
2.times { sleeper.do_something }
|
43
|
-
end.join
|
44
|
-
sleeper.timeline
|
45
|
-
end
|
46
|
-
|
47
|
-
dream :class, Benelux::Timeline
|
48
|
-
dream :size, 10
|
49
|
-
drill "Creates a timeline for the thread" do
|
50
|
-
Benelux.thread_timeline
|
51
|
-
end
|
52
|
-
|
53
|
-
dream :class, Benelux::Timeline
|
54
|
-
dream :size, 14
|
55
|
-
drill "Creates a global timeline" do
|
56
|
-
Benelux.timeline
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
tryouts "Not supported" do
|
63
|
-
|
64
|
-
dream :exception, Benelux::NotSupported
|
65
|
-
drill "Class is not supported" do
|
66
|
-
Benelux.add_timer Class, :new
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|