mongo 0.0.1
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/README.rdoc +134 -0
- data/Rakefile +86 -0
- data/bin/mongo_console +21 -0
- data/lib/mongo.rb +7 -0
- data/lib/mongo/admin.rb +86 -0
- data/lib/mongo/collection.rb +136 -0
- data/lib/mongo/cursor.rb +180 -0
- data/lib/mongo/db.rb +307 -0
- data/lib/mongo/message.rb +4 -0
- data/lib/mongo/message/get_more_message.rb +21 -0
- data/lib/mongo/message/insert_message.rb +19 -0
- data/lib/mongo/message/kill_cursors_message.rb +20 -0
- data/lib/mongo/message/message.rb +68 -0
- data/lib/mongo/message/message_header.rb +34 -0
- data/lib/mongo/message/msg_message.rb +17 -0
- data/lib/mongo/message/opcodes.rb +16 -0
- data/lib/mongo/message/query_message.rb +45 -0
- data/lib/mongo/message/remove_message.rb +20 -0
- data/lib/mongo/message/update_message.rb +21 -0
- data/lib/mongo/mongo.rb +52 -0
- data/lib/mongo/objectid.rb +107 -0
- data/lib/mongo/query.rb +103 -0
- data/lib/mongo/util/bson.rb +339 -0
- data/lib/mongo/util/byte_buffer.rb +163 -0
- data/lib/mongo/util/ordered_hash.rb +54 -0
- data/tests/test_admin.rb +59 -0
- data/tests/test_bson.rb +79 -0
- data/tests/test_byte_buffer.rb +69 -0
- data/tests/test_db_api.rb +357 -0
- data/tests/test_db_connection.rb +17 -0
- data/tests/test_message.rb +35 -0
- data/tests/test_objectid.rb +68 -0
- data/tests/test_ordered_hash.rb +82 -0
- metadata +85 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'mongo'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
# NOTE: assumes Mongo is running
|
6
|
+
class DBConnectionTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include XGen::Mongo::Driver
|
9
|
+
|
10
|
+
def test_no_exceptions
|
11
|
+
host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
12
|
+
port = ENV['MONGO_RUBY_DRIVER_PORT'] || Mongo::DEFAULT_PORT
|
13
|
+
db = Mongo.new(host, port).db('ruby-mongo-demo')
|
14
|
+
coll = db.collection('test')
|
15
|
+
coll.clear
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'mongo'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class MessageTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include XGen::Mongo::Driver
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@msg = Message.new(42)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initial_info
|
14
|
+
assert_equal Message::HEADER_SIZE, @msg.buf.length
|
15
|
+
@msg.write_long(1029)
|
16
|
+
@msg.buf.rewind
|
17
|
+
assert_equal Message::HEADER_SIZE + 8, @msg.buf.get_int
|
18
|
+
@msg.buf.get_int # skip message id
|
19
|
+
assert_equal 0, @msg.buf.get_int
|
20
|
+
assert_equal 42, @msg.buf.get_int
|
21
|
+
assert_equal 1029, @msg.buf.get_long
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_update_length
|
25
|
+
@msg.update_message_length
|
26
|
+
@msg.buf.rewind
|
27
|
+
assert_equal Message::HEADER_SIZE, @msg.buf.get_int
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_long_length
|
31
|
+
@msg.write_long(1027)
|
32
|
+
assert_equal Message::HEADER_SIZE + 8, @msg.buf.length
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'mongo'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class ObjectIDTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include XGen::Mongo::Driver
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@t = 42
|
11
|
+
@o = ObjectID.new(nil, @t)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_index_for_time
|
15
|
+
t = 99
|
16
|
+
assert_equal 0, @o.index_for_time(t)
|
17
|
+
assert_equal 1, @o.index_for_time(t)
|
18
|
+
assert_equal 2, @o.index_for_time(t)
|
19
|
+
t = 100
|
20
|
+
assert_equal 0, @o.index_for_time(t)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_time_bytes
|
24
|
+
a = @o.to_a
|
25
|
+
assert_equal @t, a[0]
|
26
|
+
3.times { |i| assert_equal 0, a[i+1] }
|
27
|
+
|
28
|
+
t = 43
|
29
|
+
o = ObjectID.new(nil, t)
|
30
|
+
a = o.to_a
|
31
|
+
assert_equal t, a[0]
|
32
|
+
3.times { |i| assert_equal 0, a[i+1] }
|
33
|
+
assert_equal 1, o.index_for_time(t) # 0 was used for o
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_different
|
37
|
+
o2 = ObjectID.new(nil, @t)
|
38
|
+
assert @o.to_a != o2.to_a
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_eql?
|
42
|
+
o2 = ObjectID.new(@o.to_a)
|
43
|
+
assert @o.eql?(o2)
|
44
|
+
assert @o == o2
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_to_s
|
48
|
+
s = @o.to_s
|
49
|
+
assert_equal 24, s.length
|
50
|
+
s =~ /^([0-9a-f]+)$/
|
51
|
+
assert_equal 24, $1.length
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_save_and_restore
|
55
|
+
host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
56
|
+
port = ENV['MONGO_RUBY_DRIVER_PORT'] || Mongo::DEFAULT_PORT
|
57
|
+
db = Mongo.new(host, port).db('ruby-mongo-test')
|
58
|
+
coll = db.collection('test')
|
59
|
+
|
60
|
+
coll.clear
|
61
|
+
coll << {'a' => 1, '_id' => @o}
|
62
|
+
|
63
|
+
row = coll.find().collect.first
|
64
|
+
assert_equal 1, row['a']
|
65
|
+
assert_equal @o, row['_id']
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
require 'mongo/util/ordered_hash'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
# NOTE: assumes Mongo is running
|
6
|
+
class OrderedHashTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@oh = OrderedHash.new
|
10
|
+
@oh['c'] = 1
|
11
|
+
@oh['a'] = 2
|
12
|
+
@oh['z'] = 3
|
13
|
+
@ordered_keys = %w(c a z)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_empty
|
17
|
+
assert_equal [], OrderedHash.new.keys
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_order_preserved
|
21
|
+
assert_equal @ordered_keys, @oh.keys
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_order_preserved_after_replace
|
25
|
+
@oh['a'] = 42
|
26
|
+
assert_equal @ordered_keys, @oh.keys
|
27
|
+
@oh['c'] = 'foobar'
|
28
|
+
assert_equal @ordered_keys, @oh.keys
|
29
|
+
@oh['z'] = /huh?/
|
30
|
+
assert_equal @ordered_keys, @oh.keys
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_each
|
34
|
+
keys = []
|
35
|
+
@oh.each { |k, v| keys << k }
|
36
|
+
assert_equal keys, @oh.keys
|
37
|
+
|
38
|
+
@oh['z'] = 42
|
39
|
+
assert_equal keys, @oh.keys
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_values
|
43
|
+
assert_equal [1, 2, 3], @oh.values
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_merge
|
47
|
+
other = OrderedHash.new
|
48
|
+
other['f'] = 'foo'
|
49
|
+
noob = @oh.merge(other)
|
50
|
+
assert_equal @ordered_keys + ['f'], noob.keys
|
51
|
+
assert_equal [1, 2, 3, 'foo'], noob.values
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_merge_bang
|
55
|
+
other = OrderedHash.new
|
56
|
+
other['f'] = 'foo'
|
57
|
+
@oh.merge!(other)
|
58
|
+
assert_equal @ordered_keys + ['f'], @oh.keys
|
59
|
+
assert_equal [1, 2, 3, 'foo'], @oh.values
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_merge_bang_with_overlap
|
63
|
+
other = OrderedHash.new
|
64
|
+
other['a'] = 'apple'
|
65
|
+
other['c'] = 'crab'
|
66
|
+
other['f'] = 'foo'
|
67
|
+
@oh.merge!(other)
|
68
|
+
assert_equal @ordered_keys + ['f'], @oh.keys
|
69
|
+
assert_equal ['crab', 'apple', 3, 'foo'], @oh.values
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_merge_bang_with_hash_with_overlap
|
73
|
+
other = Hash.new
|
74
|
+
other['a'] = 'apple'
|
75
|
+
other['c'] = 'crab'
|
76
|
+
other['f'] = 'foo'
|
77
|
+
@oh.merge!(other)
|
78
|
+
assert_equal @ordered_keys + ['f'], @oh.keys
|
79
|
+
assert_equal ['crab', 'apple', 3, 'foo'], @oh.values
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mongo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jim Menard
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-08 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: This is a simple pure-Ruby driver for the 10gen Mongo DB. For more information about Mongo, see http://www.mongodb.org.
|
17
|
+
email: jimm@io.com
|
18
|
+
executables:
|
19
|
+
- mongo_console
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- bin/mongo_console
|
26
|
+
- lib/mongo/admin.rb
|
27
|
+
- lib/mongo/collection.rb
|
28
|
+
- lib/mongo/cursor.rb
|
29
|
+
- lib/mongo/db.rb
|
30
|
+
- lib/mongo/message/get_more_message.rb
|
31
|
+
- lib/mongo/message/insert_message.rb
|
32
|
+
- lib/mongo/message/kill_cursors_message.rb
|
33
|
+
- lib/mongo/message/message.rb
|
34
|
+
- lib/mongo/message/message_header.rb
|
35
|
+
- lib/mongo/message/msg_message.rb
|
36
|
+
- lib/mongo/message/opcodes.rb
|
37
|
+
- lib/mongo/message/query_message.rb
|
38
|
+
- lib/mongo/message/remove_message.rb
|
39
|
+
- lib/mongo/message/update_message.rb
|
40
|
+
- lib/mongo/message.rb
|
41
|
+
- lib/mongo/mongo.rb
|
42
|
+
- lib/mongo/objectid.rb
|
43
|
+
- lib/mongo/query.rb
|
44
|
+
- lib/mongo/util/bson.rb
|
45
|
+
- lib/mongo/util/byte_buffer.rb
|
46
|
+
- lib/mongo/util/ordered_hash.rb
|
47
|
+
- lib/mongo.rb
|
48
|
+
- tests/test_admin.rb
|
49
|
+
- tests/test_bson.rb
|
50
|
+
- tests/test_byte_buffer.rb
|
51
|
+
- tests/test_db_api.rb
|
52
|
+
- tests/test_db_connection.rb
|
53
|
+
- tests/test_message.rb
|
54
|
+
- tests/test_objectid.rb
|
55
|
+
- tests/test_ordered_hash.rb
|
56
|
+
- Rakefile
|
57
|
+
- README.rdoc
|
58
|
+
has_rdoc: true
|
59
|
+
homepage: http://www.mongodb.org
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
version:
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: "0"
|
76
|
+
version:
|
77
|
+
requirements: []
|
78
|
+
|
79
|
+
rubyforge_project: mongo
|
80
|
+
rubygems_version: 1.3.1
|
81
|
+
signing_key:
|
82
|
+
specification_version: 2
|
83
|
+
summary: Simple pure-Ruby driver for the 10gen Mongo DB
|
84
|
+
test_files: []
|
85
|
+
|