rebar 0.2.1 → 0.3.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.
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  #!/usr/bin/env rake
2
+ require 'rake/testtask'
2
3
  require "bundler/gem_tasks"
4
+
5
+ task :default => :test
6
+ Rake::TestTask.new do |t|
7
+ t.libs << 'test'
8
+ t.pattern = 'test/**/*_test.rb'
9
+ t.warning = true
10
+ t.verbose = true
11
+ end
@@ -5,9 +5,28 @@ module Rebar
5
5
  end
6
6
 
7
7
  attr_reader :connection
8
+ attr_reader :system_cpu_time
9
+ attr_reader :user_cpu_time
10
+ attr_reader :memory_delta
8
11
 
9
12
  def build(&block)
13
+ initial_cpu_sys = connection.info['used_cpu_sys'].to_i
14
+ initial_cpu_user = connection.info['used_cpu_user'].to_i
15
+ initial_memory = connection.info['used_memory'].to_i
16
+
10
17
  Rebar::DSL::Database.new(connection).instance_eval(&block)
18
+
19
+ @system_cpu_time = connection.info['used_cpu_sys'].to_i - initial_cpu_sys
20
+ @user_cpu_time = connection.info['used_cpu_user'].to_i - initial_cpu_user
21
+ @memory_delta = connection.info['used_memory'].to_i - initial_memory
22
+
23
+ self
24
+ end
25
+
26
+ def report
27
+ STDERR.puts "System CPU: \t#{system_cpu_time}s"
28
+ STDERR.puts "User CPU: \t#{user_cpu_time}s"
29
+ STDERR.puts "Memory delta: \t#{memory_delta} bytes"
11
30
  end
12
31
 
13
32
  def clean!
@@ -16,25 +16,25 @@ module Rebar
16
16
 
17
17
  def hashes(count, &block)
18
18
  count.times do
19
- Rebar::DSL::Hash.new(connection, "rebar:hash:#{next_id(:hash)}").instance_eval(&block)
19
+ Rebar::DSL::Hash.new(connection, "rebar:hash:#{next_id(:hash)}", &block)
20
20
  end
21
21
  end
22
22
 
23
23
  def lists(count, &block)
24
24
  count.times do
25
- Rebar::DSL::List.new(connection, "rebar:list:#{next_id(:list)}").instance_eval(&block)
25
+ Rebar::DSL::List.new(connection, "rebar:list:#{next_id(:list)}", &block)
26
26
  end
27
27
  end
28
28
 
29
29
  def sets(count, &block)
30
30
  count.times do
31
- Rebar::DSL::Set.new(connection, "rebar:set:#{next_id(:set)}").instance_eval(&block)
31
+ Rebar::DSL::Set.new(connection, "rebar:set:#{next_id(:set)}", &block)
32
32
  end
33
33
  end
34
34
 
35
35
  def sorted_sets(count, &block)
36
36
  count.times do
37
- Rebar::DSL::SortedSet.new(connection, "rebar:sorted_set:#{next_id(:sorted_set)}").instance_eval(&block)
37
+ Rebar::DSL::SortedSet.new(connection, "rebar:sorted_set:#{next_id(:sorted_set)}", &block)
38
38
  end
39
39
  end
40
40
 
@@ -1,9 +1,10 @@
1
1
  module Rebar
2
2
  module DSL
3
3
  class Hash
4
- def initialize(connection, key)
4
+ def initialize(connection, key, &block)
5
5
  @connection = connection
6
6
  @key = key
7
+ instance_eval(&block) if block_given?
7
8
  end
8
9
 
9
10
  attr_reader :connection
@@ -1,9 +1,10 @@
1
1
  module Rebar
2
2
  module DSL
3
3
  class List
4
- def initialize(connection, key)
4
+ def initialize(connection, key, &block)
5
5
  @connection = connection
6
6
  @key = key
7
+ instance_eval(&block) if block_given?
7
8
  end
8
9
 
9
10
  attr_reader :connection
@@ -1,9 +1,10 @@
1
1
  module Rebar
2
2
  module DSL
3
3
  class Set
4
- def initialize(connection, key)
4
+ def initialize(connection, key, &block)
5
5
  @connection = connection
6
6
  @key = key
7
+ instance_eval(&block) if block_given?
7
8
  end
8
9
 
9
10
  attr_reader :connection
@@ -1,9 +1,10 @@
1
1
  module Rebar
2
2
  module DSL
3
3
  class SortedSet
4
- def initialize(connection, key)
4
+ def initialize(connection, key, &block)
5
5
  @connection = connection
6
6
  @key = key
7
+ instance_eval(&block) if block_given?
7
8
  end
8
9
 
9
10
  attr_reader :connection
@@ -1,3 +1,3 @@
1
1
  module Rebar
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class BuilderTest < Test::Unit::TestCase
4
+ def test_clean_should_remove_all_keys
5
+ connection.set('rebar:foo', 'bar')
6
+ Rebar::Builder.new(connection).clean!
7
+ assert_equal 0, connection.keys('rebar:*').length
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class HashesTest < Test::Unit::TestCase
4
+ def test_creates_hashes
5
+ Rebar.build(connection) do
6
+ hashes(5) do
7
+ keys(10)
8
+ end
9
+ end
10
+
11
+ keys = connection.keys('rebar:hash:*')
12
+ assert_equal 5, keys.length, "Created incorrect number of hashes"
13
+
14
+ keys.each do |key|
15
+ assert_equal 10, connection.hkeys(key).length, "Created incorrect number of keys in hash #{key}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class ListsTest < Test::Unit::TestCase
4
+ def test_creates_lists
5
+ Rebar.build(connection) do
6
+ lists(5) do
7
+ elements(10)
8
+ end
9
+ end
10
+
11
+ keys = connection.keys('rebar:list:*')
12
+ assert_equal 5, keys.length, "Created incorrect number of lists"
13
+
14
+ keys.each do |key|
15
+ assert_equal 10, connection.llen(key), "Created incorrect number of elements in set #{key}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class SetsTest < Test::Unit::TestCase
4
+ def test_creates_sets
5
+ Rebar.build(connection) do
6
+ sets(5) do
7
+ members(10)
8
+ end
9
+ end
10
+
11
+ keys = connection.keys('rebar:set:*')
12
+ assert_equal 5, keys.length, "Created incorrect number of sets"
13
+
14
+ keys.each do |key|
15
+ assert_equal 10, connection.smembers(key).length, "Created incorrect number of members in set #{key}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class SortedSetsTest < Test::Unit::TestCase
4
+ def test_creates_sorted_sets
5
+ Rebar.build(connection) do
6
+ sorted_sets(5) do
7
+ members(10)
8
+ end
9
+ end
10
+
11
+ keys = connection.keys('rebar:sorted_set:*')
12
+ assert_equal 5, keys.length, "Created incorrect number of sorted sets"
13
+
14
+ keys.each do |key|
15
+ assert_equal 10, connection.zrange(key, 0, -1).length, "Created incorrect number of members in sorted set #{key}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class StringsTest < Test::Unit::TestCase
4
+ def test_creates_strings
5
+ Rebar.build(connection) do
6
+ strings(5)
7
+ end
8
+
9
+ keys = connection.keys('rebar:string:*')
10
+ assert_equal 5, keys.length, "Created incorrect number of strings"
11
+ end
12
+ end
@@ -0,0 +1,23 @@
1
+ $:.unshift File.expand_path('../lib', File.dirname(__FILE__))
2
+
3
+ require 'test/unit'
4
+ require 'redis'
5
+ require 'rebar'
6
+
7
+
8
+ begin
9
+ require 'ruby-debug'
10
+ rescue LoadError
11
+ end
12
+
13
+ class Test::Unit::TestCase
14
+ def connection
15
+ @connection ||= Redis.new(:db => 15).tap do |connection|
16
+ connection.flushdb
17
+ end
18
+ end
19
+
20
+ def teardown
21
+ connection.flushdb
22
+ end
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rebar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-14 00:00:00.000000000 Z
12
+ date: 2012-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &70328361538880 !ruby/object:Gem::Requirement
16
+ requirement: &70260397074220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '2.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70328361538880
24
+ version_requirements: *70260397074220
25
25
  description: ''
26
26
  email: paul.rosania@gmail.com
27
27
  executables: []
@@ -44,6 +44,13 @@ files:
44
44
  - lib/rebar/random.rb
45
45
  - lib/rebar/version.rb
46
46
  - rebar.gemspec
47
+ - test/builder_test.rb
48
+ - test/hashes_test.rb
49
+ - test/lists_test.rb
50
+ - test/sets_test.rb
51
+ - test/sorted_sets_test.rb
52
+ - test/strings_test.rb
53
+ - test/test_helper.rb
47
54
  homepage: https://github.com/paulrosania/rebar
48
55
  licenses:
49
56
  - MIT
@@ -69,4 +76,11 @@ rubygems_version: 1.8.11
69
76
  signing_key:
70
77
  specification_version: 3
71
78
  summary: A simple stress testing tool for Redis
72
- test_files: []
79
+ test_files:
80
+ - test/builder_test.rb
81
+ - test/hashes_test.rb
82
+ - test/lists_test.rb
83
+ - test/sets_test.rb
84
+ - test/sorted_sets_test.rb
85
+ - test/strings_test.rb
86
+ - test/test_helper.rb