oklahoma_mixer 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/CHANGELOG.rdoc +7 -0
  2. data/README.rdoc +4 -0
  3. data/Rakefile +1 -1
  4. data/TODO.rdoc +2 -3
  5. data/lib/oklahoma_mixer.rb +7 -20
  6. data/lib/oklahoma_mixer/array_list.rb +21 -7
  7. data/lib/oklahoma_mixer/array_list/c.rb +9 -1
  8. data/lib/oklahoma_mixer/b_tree_database.rb +25 -9
  9. data/lib/oklahoma_mixer/b_tree_database/c.rb +5 -0
  10. data/lib/oklahoma_mixer/cursor.rb +3 -0
  11. data/lib/oklahoma_mixer/cursor/c.rb +2 -0
  12. data/lib/oklahoma_mixer/error.rb +2 -0
  13. data/lib/oklahoma_mixer/extensible_string.rb +4 -2
  14. data/lib/oklahoma_mixer/extensible_string/c.rb +2 -0
  15. data/lib/oklahoma_mixer/fixed_length_database.rb +11 -3
  16. data/lib/oklahoma_mixer/fixed_length_database/c.rb +2 -0
  17. data/lib/oklahoma_mixer/hash_database.rb +24 -7
  18. data/lib/oklahoma_mixer/hash_database/c.rb +2 -0
  19. data/lib/oklahoma_mixer/hash_map.rb +42 -0
  20. data/lib/oklahoma_mixer/hash_map/c.rb +27 -0
  21. data/lib/oklahoma_mixer/query.rb +73 -0
  22. data/lib/oklahoma_mixer/query/c.rb +51 -0
  23. data/lib/oklahoma_mixer/table_database.rb +402 -0
  24. data/lib/oklahoma_mixer/table_database/c.rb +104 -0
  25. data/lib/oklahoma_mixer/utilities.rb +26 -1
  26. data/test/{b_tree_binary_data_test.rb → b_tree_database/b_tree_binary_data_test.rb} +2 -2
  27. data/test/{b_tree_tuning_test.rb → b_tree_database/b_tree_tuning_test.rb} +2 -2
  28. data/test/{cursor_based_iteration_test.rb → b_tree_database/cursor_based_iteration_test.rb} +2 -2
  29. data/test/{duplicate_storage_test.rb → b_tree_database/duplicate_storage_test.rb} +18 -12
  30. data/test/{binary_data_test.rb → core_database/binary_data_test.rb} +2 -2
  31. data/test/{file_system_test.rb → core_database/file_system_test.rb} +0 -0
  32. data/test/{getting_and_setting_keys_test.rb → core_database/getting_and_setting_keys_test.rb} +31 -60
  33. data/test/{iteration_test.rb → core_database/iteration_test.rb} +2 -2
  34. data/test/{transactions_test.rb → core_database/transactions_test.rb} +0 -0
  35. data/test/core_database/tuning_test.rb +31 -0
  36. data/test/{fixed_length_tuning_test.rb → fixed_length_database/fixed_length_tuning_test.rb} +0 -0
  37. data/test/{getting_and_setting_by_id_test.rb → fixed_length_database/getting_and_setting_by_id_test.rb} +8 -0
  38. data/test/{shared_binary_data.rb → shared/binary_data_tests.rb} +1 -1
  39. data/test/{tuning_test.rb → shared/hash_tuning_tests.rb} +18 -42
  40. data/test/{shared_iteration.rb → shared/iteration_tests.rb} +8 -7
  41. data/test/{key_range_test.rb → shared/key_range_test.rb} +0 -0
  42. data/test/{order_test.rb → shared/order_test.rb} +0 -0
  43. data/test/shared/storage_tests.rb +65 -0
  44. data/test/{top_level_interface_test.rb → shared/top_level_interface_test.rb} +39 -2
  45. data/test/{shared_tuning.rb → shared/tuning_tests.rb} +1 -1
  46. data/test/table_database/document_iteration_test.rb +22 -0
  47. data/test/table_database/document_storage_test.rb +225 -0
  48. data/test/table_database/index_test.rb +57 -0
  49. data/test/table_database/query_test.rb +866 -0
  50. data/test/table_database/table_tuning_test.rb +56 -0
  51. data/test/test_helper.rb +27 -0
  52. metadata +35 -36
@@ -0,0 +1,56 @@
1
+ require "test_helper"
2
+ require "shared/hash_tuning_tests"
3
+
4
+ class TestTableTuning < Test::Unit::TestCase
5
+ def teardown
6
+ remove_db_files
7
+ end
8
+
9
+ include HashTuningTests
10
+
11
+ def test_records_cached_can_be_set_with_other_cache_defaults
12
+ records = rand(1_000) + 1
13
+ assert_option_calls([:setcache, records, 0, 0], :rcnum => records)
14
+ end
15
+
16
+ def test_records_cached_is_converted_to_an_int
17
+ assert_option_calls([:setcache, 42, 0, 0], :rcnum => "42")
18
+ end
19
+
20
+ def test_leaf_nodes_cached_can_be_set_with_other_cache_defaults
21
+ nodes = rand(1_000) + 1
22
+ assert_option_calls([:setcache, 0, nodes, 0], :lcnum => nodes)
23
+ end
24
+
25
+ def test_leaf_nodes_cached_is_converted_to_an_int
26
+ assert_option_calls([:setcache, 0, 42, 0], :lcnum => "42")
27
+ end
28
+
29
+ def test_non_leaf_nodes_cached_can_be_set_with_other_cache_defaults
30
+ nodes = rand(1_000) + 1
31
+ assert_option_calls([:setcache, 0, 0, nodes], :ncnum => nodes)
32
+ end
33
+
34
+ def test_non_leaf_nodes_cached_is_converted_to_an_int
35
+ assert_option_calls([:setcache, 0, 0, 42], :ncnum => "42")
36
+ end
37
+
38
+ def test_multiple_cache_parameters_can_be_set_at_the_same_time
39
+ l_nodes = rand(1_000) + 1
40
+ n_nodes = rand(1_000) + 1
41
+ assert_option_calls( [:setcache, 0, l_nodes, n_nodes],
42
+ :lcnum => l_nodes, :ncnum => n_nodes )
43
+ end
44
+
45
+ #######
46
+ private
47
+ #######
48
+
49
+ def lib
50
+ OKMixer::TableDatabase::C
51
+ end
52
+
53
+ def db(*args, &block)
54
+ tdb(*args, &block)
55
+ end
56
+ end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "rbconfig"
1
2
  require "stringio"
2
3
  require "test/unit"
3
4
 
@@ -6,6 +7,28 @@ require "rubygems" # for FFI
6
7
  require "oklahoma_mixer"
7
8
 
8
9
  module TestHelper
10
+ def run_ruby(code)
11
+ # find Ruby and OklahomaMixer
12
+ exe = File::join( *Config::CONFIG.values_at( *%w[ bindir
13
+ ruby_install_name ] ) ) <<
14
+ Config::CONFIG["EXEEXT"]
15
+ lib = File.join(File.dirname(__FILE__), *%w[.. lib])
16
+
17
+ # escape for the shell
18
+ [exe, lib].each do |path|
19
+ path.gsub!(/(?=[^a-zA-Z0-9_.\/\-\x7F-\xFF\n])/n, '\\')
20
+ path.gsub!(/\n/, "'\n'")
21
+ path.sub!(/\A\z/, "''")
22
+ end
23
+
24
+ # run the program and read the results
25
+ open("| #{exe} -I #{lib} -rubygems -r oklahoma_mixer", "r+") do |program|
26
+ program << code
27
+ program.close_write
28
+ @output = program.read.to_s
29
+ end
30
+ end
31
+
9
32
  def capture_stderr
10
33
  $stderr = StringIO.new
11
34
  yield
@@ -40,6 +63,10 @@ module TestHelper
40
63
  def fdb(*args, &block)
41
64
  OKMixer.open(db_path("tcf"), *args, &block)
42
65
  end
66
+
67
+ def tdb(*args, &block)
68
+ OKMixer.open(db_path("tct"), *args, &block)
69
+ end
43
70
 
44
71
  def remove_db_files
45
72
  Dir.glob(db_path("*")) do |file|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oklahoma_mixer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Edward Gray II
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-09 00:00:00 -06:00
12
+ date: 2010-02-09 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -63,27 +63,40 @@ files:
63
63
  - lib/oklahoma_mixer/fixed_length_database.rb
64
64
  - lib/oklahoma_mixer/hash_database/c.rb
65
65
  - lib/oklahoma_mixer/hash_database.rb
66
+ - lib/oklahoma_mixer/hash_map/c.rb
67
+ - lib/oklahoma_mixer/hash_map.rb
68
+ - lib/oklahoma_mixer/query/c.rb
69
+ - lib/oklahoma_mixer/query.rb
70
+ - lib/oklahoma_mixer/table_database/c.rb
71
+ - lib/oklahoma_mixer/table_database.rb
66
72
  - lib/oklahoma_mixer/utilities.rb
67
73
  - lib/oklahoma_mixer.rb
68
- - test/b_tree_binary_data_test.rb
69
- - test/b_tree_tuning_test.rb
70
- - test/binary_data_test.rb
71
- - test/cursor_based_iteration_test.rb
72
- - test/duplicate_storage_test.rb
73
- - test/file_system_test.rb
74
- - test/fixed_length_tuning_test.rb
75
- - test/getting_and_setting_by_id_test.rb
76
- - test/getting_and_setting_keys_test.rb
77
- - test/iteration_test.rb
78
- - test/key_range_test.rb
79
- - test/order_test.rb
80
- - test/shared_binary_data.rb
81
- - test/shared_iteration.rb
82
- - test/shared_tuning.rb
74
+ - test/b_tree_database/b_tree_binary_data_test.rb
75
+ - test/b_tree_database/b_tree_tuning_test.rb
76
+ - test/b_tree_database/cursor_based_iteration_test.rb
77
+ - test/b_tree_database/duplicate_storage_test.rb
78
+ - test/core_database/binary_data_test.rb
79
+ - test/core_database/file_system_test.rb
80
+ - test/core_database/getting_and_setting_keys_test.rb
81
+ - test/core_database/iteration_test.rb
82
+ - test/core_database/transactions_test.rb
83
+ - test/core_database/tuning_test.rb
84
+ - test/fixed_length_database/fixed_length_tuning_test.rb
85
+ - test/fixed_length_database/getting_and_setting_by_id_test.rb
86
+ - test/shared/binary_data_tests.rb
87
+ - test/shared/hash_tuning_tests.rb
88
+ - test/shared/iteration_tests.rb
89
+ - test/shared/key_range_test.rb
90
+ - test/shared/order_test.rb
91
+ - test/shared/storage_tests.rb
92
+ - test/shared/top_level_interface_test.rb
93
+ - test/shared/tuning_tests.rb
94
+ - test/table_database/document_iteration_test.rb
95
+ - test/table_database/document_storage_test.rb
96
+ - test/table_database/index_test.rb
97
+ - test/table_database/query_test.rb
98
+ - test/table_database/table_tuning_test.rb
83
99
  - test/test_helper.rb
84
- - test/top_level_interface_test.rb
85
- - test/transactions_test.rb
86
- - test/tuning_test.rb
87
100
  - AUTHORS.rdoc
88
101
  - CHANGELOG.rdoc
89
102
  - INSTALL.rdoc
@@ -122,19 +135,5 @@ rubygems_version: 1.3.5
122
135
  signing_key:
123
136
  specification_version: 3
124
137
  summary: An full featured and robust FFI interface to Tokyo Cabinet.
125
- test_files:
126
- - test/b_tree_binary_data_test.rb
127
- - test/b_tree_tuning_test.rb
128
- - test/binary_data_test.rb
129
- - test/cursor_based_iteration_test.rb
130
- - test/duplicate_storage_test.rb
131
- - test/file_system_test.rb
132
- - test/fixed_length_tuning_test.rb
133
- - test/getting_and_setting_by_id_test.rb
134
- - test/getting_and_setting_keys_test.rb
135
- - test/iteration_test.rb
136
- - test/key_range_test.rb
137
- - test/order_test.rb
138
- - test/top_level_interface_test.rb
139
- - test/transactions_test.rb
140
- - test/tuning_test.rb
138
+ test_files: []
139
+