libgfapi-ruby 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 230aca06d3347c56526f91d602b9f757f595484c
4
- data.tar.gz: 51ee11f597681f195d4c72a912e7d9a7030db541
3
+ metadata.gz: bc23e8e61cab7ae1e59207844201a7f1d3e61919
4
+ data.tar.gz: a06dd442af33340a906cac88244668b90554b585
5
5
  SHA512:
6
- metadata.gz: a4dedae2636440ed2b10f2b950f408a84d32c168798a8270606834a52df10c4e1dc4dd4d89811350203bf0eec73e137e0f47c9871daa8d3f528da16eee2ba749
7
- data.tar.gz: de709064f41c31e50943949acac787ff21ed2065dcf1d424f6718f100526d466bfbab5402712cf9b5ac3fc94f0d24d8c5f7a068250c4a8340864f395a27f6771
6
+ metadata.gz: 4483213f2ef51f6c96c225e04f6b794da819a275332e91edc8f06510ed50a18e4f3740985d3e03221369e512e2794ec400b29114d34f7c2a3e165a023f4c245e
7
+ data.tar.gz: ef0c69e51653edd3075105aa89e5a87d1da6d45401fad0d2330a0a1966400371d9330ce587920dc572c7b7f19cfb3897740daae06368b5faefedd8f4ad7443dc
data/README.md CHANGED
@@ -66,6 +66,25 @@ file.unlink
66
66
  volume.unmount
67
67
  ```
68
68
 
69
+ ## Running Specs
70
+
71
+ Run specs with `rake spec`. However, you need glusterfs-server running somewhere, and a test mount.
72
+ If you have it in the computer you want to run your tests at (Vagrant works fine), you can do this:
73
+
74
+ 1. Add `127.0.0.1 distfs` to `/etc/hosts`
75
+ 2. Run `gluster volume create dist-volume distfs:/dist1 force`
76
+ 3. Run `gluster volume start dist-volume`
77
+ 4. Run `rake spec`
78
+
79
+ Another option - use existing cluster, set following env variables before running tests:
80
+
81
+ ```bash
82
+ export GFS_VOLUME='volume-name'
83
+ export GFS_SERVER_HOST='1.2.3.4'
84
+ export GFS_SERVER_PORT=24007
85
+ rake spec
86
+ ```
87
+
69
88
  ## Contributing
70
89
 
71
90
  1. Fork it ( http://github.com/spajus/libgfapi-ruby/fork )
@@ -1,3 +1,3 @@
1
1
  module GlusterFS
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.5"
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "ruby-mass"
25
26
  end
@@ -0,0 +1,70 @@
1
+ require 'ruby-mass'
2
+ module GlusterFS
3
+
4
+ def self.mem_size
5
+ # ObjectSpace.garbage_collect
6
+ # sleep 3
7
+ _, size = `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)
8
+ size.to_i
9
+ end
10
+
11
+ describe 'memleaks' do
12
+
13
+ let(:iterations) { 10000 }
14
+
15
+ before(:all) do
16
+ puts "GC Settings"
17
+ puts "RUBY_HEAP_MIN_SLOTS=#{ENV['RUBY_HEAP_MIN_SLOTS']}"
18
+ puts "RUBY_HEAP_SLOTS_INCREMENT=#{ENV['RUBY_HEAP_SLOTS_INCREMENT']}"
19
+ puts "RUBY_HEAP_SLOTS_GROWTH_FACTOR=#{ENV['RUBY_HEAP_SLOTS_GROWTH_FACTOR']}"
20
+ puts "RUBY_GC_MALLOC_LIMIT=#{ENV['RUBY_GC_MALLOC_LIMIT']}"
21
+ puts "RUBY_FREE_MIN=#{ENV['RUBY_FREE_MIN']}"
22
+ puts "Initial memory use: #{GlusterFS.mem_size}"
23
+ Mass.print
24
+ end
25
+
26
+ let(:random_blob) do
27
+ o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
28
+ (0...15000).map { o[rand(o.length)] }.join
29
+ end
30
+ let(:volume) { Volume.new(GFS_VOLUME)
31
+ .mount(GFS_SERVER_HOST, GFS_SERVER_PORT) }
32
+ let(:root_dir) { Directory.new(volume, '/memtest-root') }
33
+
34
+ context 'create many directories' do
35
+ before { root_dir.create }
36
+ after { root_dir.delete }
37
+ specify do
38
+ puts "Iterations: #{iterations}"
39
+ mem_size_before = GlusterFS.mem_size
40
+ iterations.times do |i|
41
+ dir = Directory.new(volume, "#{root_dir.path}/subdir-#{i}")
42
+ dir.create
43
+ dir.delete
44
+ end
45
+ mem_size = GlusterFS.mem_size
46
+ puts "Mem growth: #{mem_size - mem_size_before}"
47
+ Mass.print
48
+ (mem_size - mem_size_before).should be < 10240
49
+ end
50
+ end
51
+
52
+ context 'create many files' do
53
+ before { root_dir.create }
54
+ after { root_dir.delete }
55
+ specify do
56
+ puts "Iterations: #{iterations}"
57
+ mem_size_before = GlusterFS.mem_size
58
+ iterations.times do |i|
59
+ file = File.new(volume, "#{root_dir.path}/file-#{i}")
60
+ file.write(random_blob)
61
+ file.delete
62
+ end
63
+ mem_size = GlusterFS.mem_size
64
+ puts "Mem growth: #{mem_size - mem_size_before}"
65
+ Mass.print
66
+ (mem_size - mem_size_before).should be < 10240
67
+ end
68
+ end
69
+ end
70
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libgfapi-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Varaneckas
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby-mass
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Ruby bindings for libgfapi (GlusterFS API)
70
84
  email:
71
85
  - tomas.varaneckas@gmail.com
@@ -89,6 +103,7 @@ files:
89
103
  - libgfapi-ruby.gemspec
90
104
  - spec/glusterfs/directory_spec.rb
91
105
  - spec/glusterfs/file_spec.rb
106
+ - spec/glusterfs/memleak_spec.rb
92
107
  - spec/glusterfs/volume_spec.rb
93
108
  - spec/spec_helper.rb
94
109
  homepage: https://github.com/spajus/libgfapi-ruby
@@ -118,6 +133,7 @@ summary: Ruby bindings for libgfapi (GlusterFS API)
118
133
  test_files:
119
134
  - spec/glusterfs/directory_spec.rb
120
135
  - spec/glusterfs/file_spec.rb
136
+ - spec/glusterfs/memleak_spec.rb
121
137
  - spec/glusterfs/volume_spec.rb
122
138
  - spec/spec_helper.rb
123
139
  has_rdoc: