rroonga 3.0.9 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -172,7 +172,14 @@ class DatabaseTest < Test::Unit::TestCase
172
172
  @database.tables.collect(&:name).sort)
173
173
  end
174
174
 
175
- class TestRemove < self
175
+ def test_plugin_paths
176
+ setup_database
177
+ context.register_plugin("query_expanders/tsv")
178
+ assert_equal(["query_expanders/tsv#{Groonga::Plugin.suffix}"],
179
+ @database.plugin_paths)
180
+ end
181
+
182
+ class RemoveTest < self
176
183
  setup :setup_database
177
184
 
178
185
  def test_referenced_table
@@ -245,4 +252,21 @@ class DatabaseTest < Test::Unit::TestCase
245
252
  assert_false(File.exist?(path))
246
253
  end
247
254
  end
255
+
256
+ class DiskUsageTest < self
257
+ setup :setup_database
258
+
259
+ def test_empty
260
+ paths = [
261
+ @database.path,
262
+ "#{@database.path}.001",
263
+ "#{@database.path}.0000000",
264
+ ]
265
+ expected_usage = paths.inject(0) do |previous, path|
266
+ previous + File.size(path)
267
+ end
268
+ assert_equal(expected_usage,
269
+ @database.disk_usage)
270
+ end
271
+ end
248
272
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ #
2
3
  # Copyright (C) 2009-2012 Kouhei Sutou <kou@clear-code.com>
3
4
  #
4
5
  # This library is free software; you can redistribute it and/or
@@ -141,4 +141,77 @@ class ExpressionTest < Test::Unit::TestCase
141
141
  assert_equal("TODO: Change me to expression", variable.value)
142
142
  end
143
143
  end
144
+
145
+ class ParseTest < self
146
+ setup
147
+ def setup_schema
148
+ Groonga::Schema.define do |schema|
149
+ schema.create_table("Users") do
150
+ end
151
+ end
152
+ end
153
+
154
+ setup
155
+ def setup_expression
156
+ @expression = Groonga::Expression.new
157
+ @variable = @expression.define_variable
158
+ @variable.value = Groonga["Users"].add
159
+ end
160
+
161
+ class DefaultOperatorTest < self
162
+ def test_nil
163
+ assert_equal("AND", parse(nil))
164
+ end
165
+
166
+ def test_name
167
+ assert_equal("OR", parse("or"))
168
+ end
169
+
170
+ def test_name_symbol
171
+ assert_equal("OR", parse(:or))
172
+ end
173
+
174
+ def test_symbol
175
+ assert_equal("OR", parse("||"))
176
+ end
177
+
178
+ def test_integer
179
+ assert_equal("ADJUST", parse(Groonga::Operator::ADJUST))
180
+ end
181
+
182
+ private
183
+ def parse(default_operator)
184
+ @expression.parse("_id:1 _id:2", :default_operator => default_operator)
185
+ operator = @expression.inspect[/\d([a-zA-Z_-]+)}/, 1]
186
+ operator
187
+ end
188
+ end
189
+
190
+ class DefaultModeTest < self
191
+ def test_nil
192
+ assert_equal("MATCH", parse(nil))
193
+ end
194
+
195
+ def test_name
196
+ assert_equal("EQUAL", parse("equal"))
197
+ end
198
+
199
+ def test_symbol
200
+ assert_equal("EQUAL", parse(:equal))
201
+ end
202
+
203
+ def test_integer
204
+ assert_equal("EQUAL", parse(Groonga::Operator::EQUAL))
205
+ end
206
+
207
+ private
208
+ def parse(default_mode)
209
+ @expression.parse("query",
210
+ :default_column => "_id",
211
+ :default_mode => default_mode)
212
+ operator = @expression.inspect[/\d([a-zA-Z_-]+)}/, 1]
213
+ operator
214
+ end
215
+ end
216
+ end
144
217
  end
@@ -342,4 +342,27 @@ class IndexColumnTest < Test::Unit::TestCase
342
342
  end
343
343
  end
344
344
  end
345
+
346
+ class DiskUsageTest < self
347
+ def setup
348
+ setup_database
349
+ setup_index
350
+ end
351
+
352
+ def setup_index
353
+ articles = Groonga::Array.create(:name => "Articles")
354
+ articles.define_column("content", "Text")
355
+
356
+ terms = Groonga::Hash.create(:name => "Terms",
357
+ :key_type => "ShortText",
358
+ :default_tokenizer => "TokenBigram")
359
+ @index = terms.define_index_column("content", articles,
360
+ :with_section => true)
361
+ end
362
+
363
+ def test_disk_usage
364
+ assert_equal(File.size(@index.path) + File.size("#{@index.path}.c"),
365
+ @index.disk_usage)
366
+ end
367
+ end
345
368
  end
@@ -0,0 +1,55 @@
1
+ # Copyright (C) 2013 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License version 2.1 as published by the Free Software Foundation.
6
+ #
7
+ # This library is distributed in the hope that it will be useful,
8
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10
+ # Lesser General Public License for more details.
11
+ #
12
+ # You should have received a copy of the GNU Lesser General Public
13
+ # License along with this library; if not, write to the Free Software
14
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
+
16
+ class StatisticMeasurerTest < Test::Unit::TestCase
17
+ include GroongaTestUtils
18
+
19
+ def setup
20
+ @measurer = Groonga::StatisticMeasurer.new
21
+ end
22
+
23
+ class DiskUsageTest < self
24
+ def test_nil
25
+ assert_equal(0, disk_usage(nil))
26
+ end
27
+
28
+ def test_path_only
29
+ size = 5
30
+ path = File.join(@tmp_dir, "db")
31
+ write(path, "X" * size)
32
+ assert_equal(size, disk_usage(path))
33
+ end
34
+
35
+ def test_additional_path
36
+ size_per_file = 5
37
+ path = File.join(@tmp_dir, "db")
38
+ write(path, "X" * size_per_file)
39
+ write("#{path}.001", "X" * size_per_file)
40
+ write("#{path}.002", "X" * size_per_file)
41
+ assert_equal(3 * size_per_file, disk_usage(path))
42
+ end
43
+
44
+ private
45
+ def disk_usage(path)
46
+ @measurer.measure_disk_usage(path)
47
+ end
48
+
49
+ def write(path, content)
50
+ File.open(path, "w") do |file|
51
+ file.write(content)
52
+ end
53
+ end
54
+ end
55
+ end
data/test/test-table.rb CHANGED
@@ -837,6 +837,46 @@ class TableTest < Test::Unit::TestCase
837
837
  end
838
838
  end
839
839
 
840
+ class DiskUsageTest < self
841
+ def test_array
842
+ Groonga::Schema.create_table("Users", :type => :array)
843
+ users = Groonga["Users"]
844
+ users.add
845
+ assert_equal(File.size(users.path),
846
+ users.disk_usage)
847
+ end
848
+
849
+ def test_hash
850
+ Groonga::Schema.create_table("Users",
851
+ :type => :hash,
852
+ :key_type => "ShortText")
853
+ users = Groonga["Users"]
854
+ users.add("mori")
855
+ assert_equal(File.size(users.path),
856
+ users.disk_usage)
857
+ end
858
+
859
+ def test_patricia_trie
860
+ Groonga::Schema.create_table("Users",
861
+ :type => :patricia_trie,
862
+ :key_type => "ShortText")
863
+ users = Groonga["Users"]
864
+ users.add("mori")
865
+ assert_equal(File.size(users.path),
866
+ users.disk_usage)
867
+ end
868
+
869
+ def test_double_array_trie
870
+ Groonga::Schema.create_table("Users",
871
+ :type => :double_array_trie,
872
+ :key_type => "ShortText")
873
+ users = Groonga["Users"]
874
+ users.add("mori")
875
+ assert_equal(File.size(users.path) + File.size("#{users.path}.001"),
876
+ users.disk_usage)
877
+ end
878
+ end
879
+
840
880
  private
841
881
  def create_bookmarks
842
882
  bookmarks = Groonga::Array.create(:name => "Bookmarks")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rroonga
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.9
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-10-29 00:00:00.000000000 Z
15
+ date: 2013-11-29 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: pkg-config
@@ -183,9 +183,9 @@ dependencies:
183
183
  - !ruby/object:Gem::Version
184
184
  version: '0'
185
185
  description: |-
186
- rroonga is an extension library to use groonga's DB-API
187
- layer. rroonga provides Rubyish readable and writable API
188
- not C like API. You can use groonga's fast and highly
186
+ Rroonga is an extension library to use Groonga's DB-API
187
+ layer. Rroonga provides Rubyish readable and writable API
188
+ not C like API. You can use Groonga's fast and highly
189
189
  functional features from Ruby with Rubyish form.
190
190
  email:
191
191
  - kou@clear-code.com
@@ -194,6 +194,7 @@ email:
194
194
  - y.hayamizu@gmail.com
195
195
  - dara@shidara.net
196
196
  executables:
197
+ - groonga-database-inspect
197
198
  - groonga-index-dump
198
199
  - grntest-log-analyze
199
200
  - grndump
@@ -218,15 +219,18 @@ files:
218
219
  - lib/groonga/sub-records.rb
219
220
  - lib/groonga/pagination.rb
220
221
  - lib/groonga/index-column.rb
221
- - lib/groonga/view-record.rb
222
222
  - lib/groonga/patricia-trie.rb
223
+ - lib/groonga/database-inspector.rb
223
224
  - lib/groonga/context/command-executor.rb
225
+ - lib/groonga/statistic-measurer.rb
224
226
  - lib/groonga/grntest-log.rb
225
227
  - lib/groonga/dumper.rb
226
228
  - lib/groonga/posting.rb
227
229
  - lib/groonga/memory-pool.rb
230
+ - lib/groonga/table.rb
228
231
  - lib/groonga/query-logger.rb
229
232
  - lib/groonga/context.rb
233
+ - lib/groonga/column.rb
230
234
  - lib/groonga/record.rb
231
235
  - lib/groonga/expression-builder.rb
232
236
  - lib/groonga/logger.rb
@@ -288,6 +292,7 @@ files:
288
292
  - test/test-vector-column.rb
289
293
  - test/test-schema-dumper.rb
290
294
  - test/run-test.rb
295
+ - test/test-database-inspector.rb
291
296
  - test/test-procedure.rb
292
297
  - test/test-hash.rb
293
298
  - test/test-expression.rb
@@ -298,6 +303,7 @@ files:
298
303
  - test/test-sub-records.rb
299
304
  - test/test-encoding.rb
300
305
  - test/test-snippet.rb
306
+ - test/test-statistic-measurer.rb
301
307
  - test/test-index-cursor.rb
302
308
  - test/test-type.rb
303
309
  - test/test-table-dumper.rb
@@ -333,6 +339,7 @@ files:
333
339
  - test/test-database.rb
334
340
  - test/test-double-array-trie.rb
335
341
  - test/test-record.rb
342
+ - bin/groonga-database-inspect
336
343
  - bin/groonga-index-dump
337
344
  - bin/grntest-log-analyze
338
345
  - bin/grndump
@@ -357,10 +364,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
357
364
  version: '0'
358
365
  requirements: []
359
366
  rubyforge_project: groonga
360
- rubygems_version: 2.0.7
367
+ rubygems_version: 2.0.13
361
368
  signing_key:
362
369
  specification_version: 4
363
- summary: Ruby bindings for groonga that provide full text search and column store
370
+ summary: Ruby bindings for Groonga that provide full text search and column store
364
371
  features.
365
372
  test_files:
366
373
  - test/test-normalizer.rb
@@ -368,6 +375,7 @@ test_files:
368
375
  - test/test-vector-column.rb
369
376
  - test/test-schema-dumper.rb
370
377
  - test/run-test.rb
378
+ - test/test-database-inspector.rb
371
379
  - test/test-procedure.rb
372
380
  - test/test-hash.rb
373
381
  - test/test-expression.rb
@@ -378,6 +386,7 @@ test_files:
378
386
  - test/test-sub-records.rb
379
387
  - test/test-encoding.rb
380
388
  - test/test-snippet.rb
389
+ - test/test-statistic-measurer.rb
381
390
  - test/test-index-cursor.rb
382
391
  - test/test-type.rb
383
392
  - test/test-table-dumper.rb
@@ -1,50 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
4
- #
5
- # This library is free software; you can redistribute it and/or
6
- # modify it under the terms of the GNU Lesser General Public
7
- # License version 2.1 as published by the Free Software Foundation.
8
- #
9
- # This library is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
- # Lesser General Public License for more details.
13
- #
14
- # You should have received a copy of the GNU Lesser General Public
15
- # License along with this library; if not, write to the Free Software
16
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
-
18
- module Groonga
19
- class ViewRecord
20
- # レコードが所属するビュー
21
- attr_reader :view
22
- # レコードのID
23
- attr_reader :id
24
-
25
- # _table_ の _id_ に対応するレコードを作成する。
26
- def initialize(view, id)
27
- @view = view
28
- @id = id
29
- end
30
-
31
- # _record_ と _other_ が同じgroongaのレコードなら +true+ を返し、
32
- # そうでなければ +false+ を返す。
33
- def ==(other)
34
- self.class == other.class and
35
- [view, id] == [other.view, other.id]
36
- end
37
-
38
- # このレコードの _column_name_ で指定されたカラムの値を返す。
39
- def [](column_name)
40
- @view.column_value(@id, column_name)
41
- end
42
-
43
- private
44
- def method_missing(name, *args, &block)
45
- return super if /(?:=|\?)\z/ =~ name.to_s
46
- return super unless args.empty?
47
- self[name.to_s]
48
- end
49
- end
50
- end