jruby-bloomfilter 1.0.5 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.1.2)
5
- jets3t-rb (1.0.1)
5
+ jets3t-rb (1.0.2)
6
6
  rspec (2.5.0)
7
7
  rspec-core (~> 2.5.0)
8
8
  rspec-expectations (~> 2.5.0)
@@ -6,19 +6,19 @@ Dir['ext/*.jar'].each { |jar| require jar }
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = 'jruby-bloomfilter'
9
- s.version = '1.0.5'
9
+ s.version = '1.0.10'
10
10
  s.platform = Gem::Platform::RUBY
11
- s.authors = ['Daniel Gaiottino']
12
- s.email = ['daniel@burtcorp.com']
11
+ s.authors = ['Daniel Gaiottino', 'David Tollmyr']
12
+ s.email = ['daniel@burtcorp.com', 'david@burtcorp.com']
13
13
  s.homepage = 'http://github.com/gaiottino/bloomfilter'
14
14
  s.summary = %q{JRuby wrapper for java-bloomfilter}
15
15
  s.description = %q{JRuby wrapper (+ some extra functionality) to http://code.google.com/p/java-bloomfilter}
16
16
 
17
17
  s.rubyforge_project = 'jruby-bloomfilter'
18
- s.add_dependency 'jets3t-rb'
18
+ s.add_dependency 'jets3t-rb', '>= 1.0.2'
19
19
 
20
20
  s.files = `git ls-files`.split("\n")
21
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ #s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
23
  s.require_paths = %w(lib)
24
24
  end
@@ -1,15 +1,25 @@
1
+ require 'fileutils'
2
+
1
3
  module Bloomfilter
2
4
  module Serialization
3
5
  class File
4
6
  def store(path, filter)
5
7
  dir = ::File.dirname(path)
6
8
  unless ::File.directory?(dir)
7
- %x(mkdir -p #{dir})
9
+ begin
10
+ FileUtils.mkdir_p(dir)
11
+ rescue => e
12
+ $stderr.puts "Exception raised when trying to create directory: #{path} - #{e.message}"
13
+ end
8
14
  end
9
15
 
10
16
  unless ::File.directory?(dir)
11
17
  $stderr.puts "Unable to create the directory #{dir}. Trying again."
12
- %x(mkdir -p #{dir})
18
+ begin
19
+ FileUtils.mkdir_p(dir)
20
+ rescue => e
21
+ $stderr.puts "Exception raised when trying to create directory: #{path} - #{e.message}"
22
+ end
13
23
  end
14
24
 
15
25
  unless ::File.directory?(dir)
@@ -25,8 +35,13 @@ module Bloomfilter
25
35
  return nil unless ::File.exist?(path)
26
36
 
27
37
  ::File.open(path, 'r') do |f|
28
- return Marshal.load(f)
38
+ begin
39
+ @loaded_file = Marshal.load(f) unless f.size == 0
40
+ rescue => e
41
+ @loaded_file = nil
42
+ end
29
43
  end
44
+ @loaded_file
30
45
  end
31
46
 
32
47
  private
@@ -12,19 +12,32 @@ module Bloomfilter
12
12
  @bucket = s3_service.bucket(bucket_name)
13
13
  end
14
14
 
15
+ def store_file(path, file_path)
16
+ begin
17
+ file = ::File.new(file_path)
18
+ path.slice!(0) if path[0] == '/'
19
+ @bucket.put(path, file)
20
+ rescue Exception => e
21
+ $stderr.puts "Exception when storing to S3 #{e.message}"
22
+ $stderr.puts e.backtrace
23
+ end
24
+ end
25
+
15
26
  def store(path, filter)
16
- tmp = Tempfile.new(TEMP_FILE_PREFIX)
17
- @file_serializer.store(tmp.path, filter)
18
- @bucket.put(path, tmp)
27
+ begin
28
+ data = Marshal.dump(filter).to_java_bytes
29
+ @bucket.put_data(path, data)
30
+ end
19
31
  end
20
32
 
21
33
  def load(path)
22
34
  s3_object = @bucket.get(path)
23
- tmp = Tempfile.new(TEMP_FILE_PREFIX)
24
- ::File.open(tmp.path, 'w') do |f|
25
- f << s3_object.data
35
+ return nil if s3_object.nil?
36
+ begin
37
+ @loaded_file = Marshal.load(s3_object.data)
38
+ rescue Exception => e
39
+ nil
26
40
  end
27
- @file_serializer.load(tmp.path)
28
41
  end
29
42
  end
30
43
  end
@@ -5,7 +5,7 @@ module Bloomfilter
5
5
  class Serializer
6
6
 
7
7
  def self.s3(access_key, secret_key, bucket_name)
8
- credentials = JetS3t::AWSCredentials.new(access_key_id, secret_access_key)
8
+ credentials = JetS3t::AWSCredentials.new(access_key, secret_key)
9
9
  s3_service = JetS3t::RestS3Service.new(credentials)
10
10
  return Serialization::S3.new(s3_service, bucket_name)
11
11
  end
@@ -11,12 +11,14 @@ module Bloomfilter
11
11
  @filter << 'hello'
12
12
  @filter << 'world'
13
13
  @path = Tempfile.new('bloomfilter').path
14
+ %x(rm -rf /tmp/bloomfilter_spec)
15
+ @path2 = "/tmp/bloomfilter_spec/test1/test2/test3"
14
16
  end
15
17
 
16
18
  context 'File' do
17
19
  it 'should be possible to store a filter to a file' do
18
20
  Serializer.file.store(@path, @filter)
19
- File.new(@path).size.should == 1612
21
+ File.new(@path).size.should > 0
20
22
  end
21
23
 
22
24
  it 'should be possible to load a filter from a file' do
@@ -26,9 +28,19 @@ module Bloomfilter
26
28
  filter.include?('world').should be_true
27
29
  filter.include?('bloomfilter').should be_false
28
30
  end
31
+
32
+ it 'should create a recursive directory for storing stuff' do
33
+ 1000.times do | i |
34
+ filename = @path2 + "/test#{i}/staticdir/filter"
35
+ Serializer.file.store(filename, @filter)
36
+ f = File.new(filename)
37
+ f.size.should > 0
38
+ end
39
+ end
40
+
29
41
  end
30
42
 
31
- context 'S3' do
43
+ context 'S3 stubbed' do
32
44
  before do
33
45
  bucket_name = 'test-bucket'
34
46
  s3_service = stub('s3_service')
@@ -38,17 +50,40 @@ module Bloomfilter
38
50
  @s3 = Serialization::S3.new(s3_service, bucket_name)
39
51
  end
40
52
 
41
- it 'should be possible to store a filter to S3' do
42
- @bucket.should_receive(:put).with('/some/path', anything)
53
+ it 'should send serialized file to S3 and strip leading /' do
54
+ @bucket.should_receive(:put).with('some/path', anything)
43
55
  @s3.store('/some/path', @filter)
44
56
  end
45
57
 
46
- it 'should be possible to load a filter from S3' do
58
+ it 'should try and get serialized file from S3' do
47
59
  s3_object = stub('s3_object')
48
60
  @bucket.should_receive(:get).with('/some/path').and_return(s3_object)
49
61
  s3_object.should_receive(:data).and_return(Marshal.dump(@filter))
50
62
  @s3.load('/some/path')
51
63
  end
52
64
  end
65
+
66
+ context 'S3' do
67
+ before do
68
+ aws_secret_path = '~/.awssecret'.freeze
69
+ raise "#{aws_secret_path} not found" unless File.exist?(File.expand_path(aws_secret_path))
70
+ access_key_id, secret_access_key = File.readlines(File.expand_path(aws_secret_path)).map(&:chomp)
71
+ @bucket_name = 'test-bucket-12345'
72
+ credentials = JetS3t::AWSCredentials.new(access_key_id, secret_access_key)
73
+ s3_service = JetS3t::RestS3Service.new(credentials)
74
+ @s3 = Serialization::S3.new(s3_service, @bucket_name)
75
+ @store_path = "/path/rspec_store_test.bin"
76
+ bucket = s3_service.bucket(@bucket_name)
77
+ bucket.delete(@store_path)
78
+ end
79
+
80
+ it 'should be possible to store and load a filter from S3' do
81
+ @s3.store(@store_path, @filter)
82
+ filter = @s3.load(@store_path)
83
+ filter.include?('hello').should be_true
84
+ filter.include?('world').should be_true
85
+ filter.include?('bloomfilter').should be_false
86
+ end
87
+ end
53
88
  end
54
89
  end
metadata CHANGED
@@ -2,15 +2,16 @@
2
2
  name: jruby-bloomfilter
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.5
5
+ version: 1.0.10
6
6
  platform: ruby
7
7
  authors:
8
8
  - Daniel Gaiottino
9
+ - David Tollmyr
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2011-07-14 00:00:00 Z
14
+ date: 2011-08-04 00:00:00 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: jets3t-rb
@@ -20,12 +21,13 @@ dependencies:
20
21
  requirements:
21
22
  - - ">="
22
23
  - !ruby/object:Gem::Version
23
- version: "0"
24
+ version: 1.0.2
24
25
  type: :runtime
25
26
  version_requirements: *id001
26
27
  description: JRuby wrapper (+ some extra functionality) to http://code.google.com/p/java-bloomfilter
27
28
  email:
28
29
  - daniel@burtcorp.com
30
+ - david@burtcorp.com
29
31
  executables: []
30
32
 
31
33
  extensions: []
@@ -75,7 +77,5 @@ rubygems_version: 1.8.5
75
77
  signing_key:
76
78
  specification_version: 3
77
79
  summary: JRuby wrapper for java-bloomfilter
78
- test_files:
79
- - spec/bloomfilter_spec.rb
80
- - spec/serialization_spec.rb
81
- - spec/spec_helper.rb
80
+ test_files: []
81
+