mongodb-mongo 0.6.2 → 0.6.3

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.
Files changed (40) hide show
  1. data/README.rdoc +11 -10
  2. data/bin/run_test_script +1 -1
  3. data/bin/standard_benchmark +82 -23
  4. data/examples/info.rb +1 -1
  5. data/examples/queries.rb +1 -1
  6. data/lib/mongo/admin.rb +9 -9
  7. data/lib/mongo/collection.rb +16 -15
  8. data/lib/mongo/cursor.rb +9 -9
  9. data/lib/mongo/db.rb +36 -18
  10. data/lib/mongo/gridfs/chunk.rb +16 -0
  11. data/lib/mongo/gridfs/grid_store.rb +28 -5
  12. data/lib/mongo/gridfs.rb +15 -0
  13. data/lib/mongo/message/get_more_message.rb +16 -0
  14. data/lib/mongo/message/insert_message.rb +16 -0
  15. data/lib/mongo/message/kill_cursors_message.rb +16 -0
  16. data/lib/mongo/message/message.rb +16 -0
  17. data/lib/mongo/message/message_header.rb +16 -0
  18. data/lib/mongo/message/msg_message.rb +16 -0
  19. data/lib/mongo/message/opcodes.rb +16 -0
  20. data/lib/mongo/message/query_message.rb +16 -0
  21. data/lib/mongo/message/remove_message.rb +16 -0
  22. data/lib/mongo/message/update_message.rb +16 -0
  23. data/lib/mongo/message.rb +16 -0
  24. data/lib/mongo/mongo.rb +9 -9
  25. data/lib/mongo/query.rb +9 -9
  26. data/lib/mongo/types/binary.rb +9 -9
  27. data/lib/mongo/types/dbref.rb +9 -9
  28. data/lib/mongo/types/objectid.rb +9 -9
  29. data/lib/mongo/types/regexp_of_holding.rb +9 -9
  30. data/lib/mongo/types/undefined.rb +9 -9
  31. data/lib/mongo/util/byte_buffer.rb +9 -9
  32. data/lib/mongo/util/ordered_hash.rb +9 -9
  33. data/lib/mongo/util/xml_to_ruby.rb +9 -9
  34. data/lib/mongo.rb +7 -0
  35. data/mongo-ruby-driver.gemspec +3 -3
  36. data/tests/mongo-qa/indices +5 -2
  37. data/tests/test_bson.rb +6 -3
  38. data/tests/test_db_api.rb +11 -11
  39. data/tests/test_grid_store.rb +19 -2
  40. metadata +2 -2
@@ -1,3 +1,19 @@
1
+ # --
2
+ # Copyright (C) 2008-2009 10gen Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
1
17
  module XGen
2
18
  module Mongo
3
19
  module Driver
@@ -1,3 +1,19 @@
1
+ # --
2
+ # Copyright (C) 2008-2009 10gen Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
1
17
  require 'mongo/message/message'
2
18
  require 'mongo/message/opcodes'
3
19
  require 'mongo/util/ordered_hash'
@@ -1,3 +1,19 @@
1
+ # --
2
+ # Copyright (C) 2008-2009 10gen Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
1
17
  require 'mongo/message/message'
2
18
  require 'mongo/message/opcodes'
3
19
 
@@ -1,3 +1,19 @@
1
+ # --
2
+ # Copyright (C) 2008-2009 10gen Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
1
17
  require 'mongo/message/message'
2
18
  require 'mongo/message/opcodes'
3
19
 
data/lib/mongo/message.rb CHANGED
@@ -1,3 +1,19 @@
1
+ # --
2
+ # Copyright (C) 2008-2009 10gen Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
1
17
  %w(get_more_message insert_message kill_cursors_message message_header
2
18
  msg_message query_message remove_message update_message).each { |f|
3
19
  require "mongo/message/#{f}"
data/lib/mongo/mongo.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  require 'mongo/db'
data/lib/mongo/query.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  require 'mongo/collection'
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  require 'mongo/util/byte_buffer'
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  module XGen
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  require 'mutex_m'
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  module XGen
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  module XGen
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  # A byte buffer.
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  # A hash in which the order of keys are preserved.
@@ -1,17 +1,17 @@
1
1
  # --
2
2
  # Copyright (C) 2008-2009 10gen Inc.
3
3
  #
4
- # This program is free software: you can redistribute it and/or modify it
5
- # under the terms of the GNU Affero General Public License, version 3, as
6
- # published by the Free Software Foundation.
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
7
  #
8
- # This program is distributed in the hope that it will be useful, but WITHOUT
9
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
11
- # for more details.
8
+ # http://www.apache.org/licenses/LICENSE-2.0
12
9
  #
13
- # You should have received a copy of the GNU Affero General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
15
  # ++
16
16
 
17
17
  require 'rexml/document'
data/lib/mongo.rb CHANGED
@@ -10,3 +10,10 @@ require 'mongo/db'
10
10
  require 'mongo/cursor'
11
11
  require 'mongo/collection'
12
12
  require 'mongo/admin'
13
+
14
+ module XGen
15
+ module Mongo
16
+ ASCENDING = 1
17
+ DESCENDING = -1
18
+ end
19
+ end
@@ -74,16 +74,16 @@ TEST_FILES = ['tests/mongo-qa/_common.rb',
74
74
 
75
75
  Gem::Specification.new do |s|
76
76
  s.name = 'mongo'
77
- s.version = '0.6.2'
77
+ s.version = '0.6.3'
78
78
  s.platform = Gem::Platform::RUBY
79
79
  s.summary = 'Simple pure-Ruby driver for the 10gen Mongo DB'
80
80
  s.description = 'A pure-Ruby driver for the 10gen Mongo DB. For more information about Mongo, see http://www.mongodb.org.'
81
81
 
82
82
  s.require_paths = ['lib']
83
-
83
+
84
84
  s.files = PACKAGE_FILES
85
85
  s.test_files = TEST_FILES
86
-
86
+
87
87
  s.has_rdoc = true
88
88
  s.rdoc_options = ['--main', 'README.rdoc', '--inline-source']
89
89
  s.extra_rdoc_files = ['README.rdoc']
@@ -1,6 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require File.join(File.dirname(__FILE__), '_common.rb')
4
+
5
+ include XGen::Mongo
6
+
4
7
  db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
5
8
  x = db.collection('x')
6
9
  y = db.collection('y')
@@ -41,6 +44,6 @@ raise "\n#{err.join("\n")}" unless err == ['', '']
41
44
  x.drop_index('field1_1')
42
45
  sorted_index_info(x).each { |info| puts sorted_info_keys(info) }
43
46
 
44
- y.create_index('abc', ['a', 'b', 'c'])
45
- y.create_index('d', ['d'])
47
+ y.create_index([['a', ASCENDING], ['b', ASCENDING], ['c', ASCENDING]])
48
+ y.create_index('d')
46
49
  sorted_index_info(y).each { |info| puts sorted_info_keys(info) }
data/tests/test_bson.rb CHANGED
@@ -16,6 +16,9 @@ class BSONTest < Test::Unit::TestCase
16
16
  def test_string
17
17
  doc = {'doc' => 'hello, world'}
18
18
  @b.serialize(doc)
19
+ assert_equal @b.to_a, [0x1b, 0x00, 0x00, 0x00, 0x02, ?d, ?o, ?c, 0x00, 0x0D,
20
+ 0x00, 0x00, 0x00, ?h, ?e, ?l, ?l, ?o, ","[0], " "[0],
21
+ ?w, ?o, ?r, ?l, ?d, 0x00, 0x00]
19
22
  assert_equal doc, @b.deserialize
20
23
  end
21
24
 
@@ -90,9 +93,8 @@ class BSONTest < Test::Unit::TestCase
90
93
  doc = {'date' => Time.now}
91
94
  @b.serialize(doc)
92
95
  doc2 = @b.deserialize
93
- # Mongo only stores seconds, so comparing raw Time objects will fail
94
- # because the fractional seconds will be different.
95
- assert_equal doc['date'].to_i, doc2['date'].to_i
96
+ # Mongo only stores up to the millisecond
97
+ assert_in_delta doc['date'], doc2['date'], 0.001
96
98
  end
97
99
 
98
100
  def test_dbref
@@ -122,6 +124,7 @@ class BSONTest < Test::Unit::TestCase
122
124
  bin2 = doc2['bin']
123
125
  assert_kind_of Binary, bin2
124
126
  assert_equal 'binstring', bin2.to_s
127
+ assert_equal Binary::SUBTYPE_BYTES, bin2.subtype
125
128
  end
126
129
 
127
130
  def test_binary_type
data/tests/test_db_api.rb CHANGED
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
 
5
5
  # NOTE: assumes Mongo is running
6
6
  class DBAPITest < Test::Unit::TestCase
7
-
7
+ include XGen::Mongo
8
8
  include XGen::Mongo::Driver
9
9
 
10
10
  @@db = Mongo.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost',
@@ -275,28 +275,30 @@ class DBAPITest < Test::Unit::TestCase
275
275
  end
276
276
 
277
277
  def test_index_information
278
- @@db.create_index(@@coll.name, 'index_name', ['a'])
278
+ name = @@db.create_index(@@coll.name, 'a')
279
279
  list = @@db.index_information(@@coll.name)
280
280
  assert_equal 1, list.length
281
281
 
282
282
  info = list[0]
283
- assert_equal 'index_name', info[:name]
283
+ assert_equal name, 'a_1'
284
+ assert_equal name, info[:name]
284
285
  assert_equal 1, info[:keys]['a']
285
286
  ensure
286
- @@db.drop_index(@@coll.name, 'index_name')
287
+ @@db.drop_index(@@coll.name, name)
287
288
  end
288
289
 
289
290
  def test_multiple_index_cols
290
- @@db.create_index(@@coll.name, 'index_name', ['a', 'b', 'c'])
291
+ name = @@db.create_index(@@coll.name, [['a', DESCENDING], ['b', ASCENDING], ['c', DESCENDING]])
291
292
  list = @@db.index_information(@@coll.name)
292
293
  assert_equal 1, list.length
293
294
 
294
295
  info = list[0]
295
- assert_equal 'index_name', info[:name]
296
+ assert_equal name, 'a_-1_b_1_c_-1'
297
+ assert_equal name, info[:name]
296
298
  keys = info[:keys].keys
297
299
  assert_equal ['a', 'b', 'c'], keys.sort
298
300
  ensure
299
- @@db.drop_index(@@coll.name, 'index_name')
301
+ @@db.drop_index(@@coll.name, name)
300
302
  end
301
303
 
302
304
  def test_array
@@ -403,7 +405,7 @@ class DBAPITest < Test::Unit::TestCase
403
405
  end
404
406
 
405
407
  def test_hint
406
- @@coll.create_index('test_a_index', 'a')
408
+ name = @@coll.create_index('a')
407
409
  begin
408
410
  assert_nil @@coll.hint
409
411
  assert_equal 1, @@coll.find({'a' => 1}, :hint => 'a').to_a.size
@@ -425,10 +427,8 @@ class DBAPITest < Test::Unit::TestCase
425
427
  @@coll.hint = nil
426
428
  assert_nil @@coll.hint
427
429
  assert_equal 1, @@coll.find('a' => 1).to_a.size
428
- rescue => ex
429
- fail ex.to_s
430
430
  ensure
431
- @@coll.drop_index('test_a_index')
431
+ @@coll.drop_index(name)
432
432
  end
433
433
  end
434
434
 
@@ -10,8 +10,8 @@ class GridStoreTest < Test::Unit::TestCase
10
10
 
11
11
  @@db = Mongo.new(ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost',
12
12
  ENV['MONGO_RUBY_DRIVER_PORT'] || Mongo::DEFAULT_PORT).db('ruby-mongo-test')
13
- @@files = @@db.collection('gridfs.files')
14
- @@chunks = @@db.collection('gridfs.chunks')
13
+ @@files = @@db.collection('fs.files')
14
+ @@chunks = @@db.collection('fs.chunks')
15
15
 
16
16
  def setup
17
17
  @@chunks.clear
@@ -208,6 +208,23 @@ class GridStoreTest < Test::Unit::TestCase
208
208
  }
209
209
  end
210
210
 
211
+ def test_md5
212
+ GridStore.open(@@db, 'new-file', 'w') { |f| f.write("hello world\n")}
213
+ GridStore.open(@@db, 'new-file', 'r') { |f|
214
+ assert f.md5 == '6f5902ac237024bdd0c176cb93063dc4'
215
+ begin
216
+ f.md5 = 'cant do this'
217
+ fail "should have seen error"
218
+ rescue => ex
219
+ true
220
+ end
221
+ }
222
+ GridStore.open(@@db, 'new-file', 'w') {}
223
+ GridStore.open(@@db, 'new-file', 'r') { |f|
224
+ assert f.md5 == 'd41d8cd98f00b204e9800998ecf8427e'
225
+ }
226
+ end
227
+
211
228
  def test_upload_date
212
229
  now = Time.now
213
230
  orig_file_upload_date = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongodb-mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Menard
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-05 00:00:00 -08:00
12
+ date: 2009-02-25 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15