riddle 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +8 -5
- data/Gemfile +10 -0
- data/HISTORY +4 -0
- data/README.markdown +1 -1
- data/lib/riddle.rb +1 -0
- data/lib/riddle/0.9.9/configuration/searchd.rb +1 -1
- data/lib/riddle/client.rb +4 -1
- data/lib/riddle/client/message.rb +15 -14
- data/lib/riddle/configuration/parser.rb +1 -0
- data/lib/riddle/configuration/section.rb +9 -9
- data/lib/riddle/configuration/source.rb +5 -5
- data/lib/riddle/query/select.rb +3 -2
- data/riddle.gemspec +2 -4
- metadata +4 -329
- data/spec/fixtures/.gitignore +0 -2
- data/spec/fixtures/data/0.9.9/anchor.bin +0 -0
- data/spec/fixtures/data/0.9.9/any.bin +0 -0
- data/spec/fixtures/data/0.9.9/boolean.bin +0 -0
- data/spec/fixtures/data/0.9.9/comment.bin +0 -0
- data/spec/fixtures/data/0.9.9/distinct.bin +0 -0
- data/spec/fixtures/data/0.9.9/field_weights.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_array.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_boolean.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_floats.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_range.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/group.bin +0 -0
- data/spec/fixtures/data/0.9.9/index.bin +0 -0
- data/spec/fixtures/data/0.9.9/index_weights.bin +0 -0
- data/spec/fixtures/data/0.9.9/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/0.9.9/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/0.9.9/overrides.bin +0 -0
- data/spec/fixtures/data/0.9.9/phrase.bin +0 -0
- data/spec/fixtures/data/0.9.9/rank_mode.bin +0 -0
- data/spec/fixtures/data/0.9.9/select.bin +0 -0
- data/spec/fixtures/data/0.9.9/simple.bin +0 -0
- data/spec/fixtures/data/0.9.9/sort.bin +0 -0
- data/spec/fixtures/data/0.9.9/update_simple.bin +0 -0
- data/spec/fixtures/data/0.9.9/weights.bin +0 -0
- data/spec/fixtures/data/1.10/anchor.bin +0 -0
- data/spec/fixtures/data/1.10/any.bin +0 -0
- data/spec/fixtures/data/1.10/boolean.bin +0 -0
- data/spec/fixtures/data/1.10/comment.bin +0 -0
- data/spec/fixtures/data/1.10/distinct.bin +0 -0
- data/spec/fixtures/data/1.10/field_weights.bin +0 -0
- data/spec/fixtures/data/1.10/filter.bin +0 -0
- data/spec/fixtures/data/1.10/filter_array.bin +0 -0
- data/spec/fixtures/data/1.10/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/filter_boolean.bin +0 -0
- data/spec/fixtures/data/1.10/filter_floats.bin +0 -0
- data/spec/fixtures/data/1.10/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/filter_range.bin +0 -0
- data/spec/fixtures/data/1.10/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/group.bin +0 -0
- data/spec/fixtures/data/1.10/index.bin +0 -0
- data/spec/fixtures/data/1.10/index_weights.bin +0 -0
- data/spec/fixtures/data/1.10/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/1.10/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/1.10/overrides.bin +0 -0
- data/spec/fixtures/data/1.10/phrase.bin +0 -0
- data/spec/fixtures/data/1.10/rank_mode.bin +0 -0
- data/spec/fixtures/data/1.10/select.bin +0 -0
- data/spec/fixtures/data/1.10/simple.bin +0 -0
- data/spec/fixtures/data/1.10/sort.bin +0 -0
- data/spec/fixtures/data/1.10/update_simple.bin +0 -0
- data/spec/fixtures/data/1.10/weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/anchor.bin +0 -0
- data/spec/fixtures/data/2.0.1/any.bin +0 -0
- data/spec/fixtures/data/2.0.1/boolean.bin +0 -0
- data/spec/fixtures/data/2.0.1/comment.bin +0 -0
- data/spec/fixtures/data/2.0.1/distinct.bin +0 -0
- data/spec/fixtures/data/2.0.1/field_weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_array.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_boolean.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_floats.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_range.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/group.bin +0 -0
- data/spec/fixtures/data/2.0.1/index.bin +0 -0
- data/spec/fixtures/data/2.0.1/index_weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/2.0.1/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/2.0.1/overrides.bin +0 -0
- data/spec/fixtures/data/2.0.1/phrase.bin +0 -0
- data/spec/fixtures/data/2.0.1/rank_mode.bin +0 -0
- data/spec/fixtures/data/2.0.1/select.bin +0 -0
- data/spec/fixtures/data/2.0.1/simple.bin +0 -0
- data/spec/fixtures/data/2.0.1/sort.bin +0 -0
- data/spec/fixtures/data/2.0.1/update_simple.bin +0 -0
- data/spec/fixtures/data/2.0.1/weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/anchor.bin +0 -0
- data/spec/fixtures/data/2.1.0/any.bin +0 -0
- data/spec/fixtures/data/2.1.0/boolean.bin +0 -0
- data/spec/fixtures/data/2.1.0/comment.bin +0 -0
- data/spec/fixtures/data/2.1.0/distinct.bin +0 -0
- data/spec/fixtures/data/2.1.0/field_weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_array.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_boolean.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_floats.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_range.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/group.bin +0 -0
- data/spec/fixtures/data/2.1.0/index.bin +0 -0
- data/spec/fixtures/data/2.1.0/index_weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/2.1.0/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/2.1.0/overrides.bin +0 -0
- data/spec/fixtures/data/2.1.0/phrase.bin +0 -0
- data/spec/fixtures/data/2.1.0/rank_mode.bin +0 -0
- data/spec/fixtures/data/2.1.0/select.bin +0 -0
- data/spec/fixtures/data/2.1.0/simple.bin +0 -0
- data/spec/fixtures/data/2.1.0/sort.bin +0 -0
- data/spec/fixtures/data/2.1.0/update_simple.bin +0 -0
- data/spec/fixtures/data/2.1.0/weights.bin +0 -0
- data/spec/fixtures/data_generator.0.9.8.php +0 -208
- data/spec/fixtures/data_generator.0.9.9.php +0 -5
- data/spec/fixtures/data_generator.1.10.php +0 -5
- data/spec/fixtures/data_generator.2.0.1.php +0 -5
- data/spec/fixtures/data_generator.2.1.0.php +0 -5
- data/spec/fixtures/data_generator.php +0 -223
- data/spec/fixtures/sphinxapi.0.9.8.php +0 -1228
- data/spec/fixtures/sphinxapi.0.9.9.php +0 -1646
- data/spec/fixtures/sphinxapi.1.10.php +0 -1728
- data/spec/fixtures/sphinxapi.2.0.1.php +0 -1731
- data/spec/fixtures/sphinxapi.2.1.0.php +0 -1752
- data/spec/fixtures/sql/conf.example.yml +0 -3
- data/spec/fixtures/sql/data.sql +0 -25000
- data/spec/fixtures/sql/data.tsv +0 -25000
- data/spec/fixtures/sql/structure.sql +0 -16
- data/spec/functional/connection_spec.rb +0 -64
- data/spec/functional/escaping_spec.rb +0 -49
- data/spec/functional/excerpt_spec.rb +0 -139
- data/spec/functional/keywords_spec.rb +0 -40
- data/spec/functional/persistance_spec.rb +0 -17
- data/spec/functional/search_spec.rb +0 -67
- data/spec/functional/status_spec.rb +0 -21
- data/spec/functional/update_spec.rb +0 -41
- data/spec/riddle/auto_version_spec.rb +0 -95
- data/spec/riddle/client_spec.rb +0 -11
- data/spec/riddle/configuration_spec.rb +0 -28
- data/spec/riddle/controller_spec.rb +0 -39
- data/spec/riddle/query/delete_spec.rb +0 -18
- data/spec/riddle/query/insert_spec.rb +0 -25
- data/spec/riddle/query/select_spec.rb +0 -226
- data/spec/riddle/query_spec.rb +0 -97
- data/spec/riddle_spec.rb +0 -27
- data/spec/spec_helper.rb +0 -34
- data/spec/support/binary_fixtures.rb +0 -18
- data/spec/support/sphinx.rb +0 -137
- data/spec/unit/client_spec.rb +0 -290
- data/spec/unit/configuration/common_spec.rb +0 -60
- data/spec/unit/configuration/distributed_index_spec.rb +0 -58
- data/spec/unit/configuration/index_spec.rb +0 -124
- data/spec/unit/configuration/indexer_spec.rb +0 -73
- data/spec/unit/configuration/realtime_index_spec.rb +0 -65
- data/spec/unit/configuration/searchd_spec.rb +0 -228
- data/spec/unit/configuration/source_spec.rb +0 -5
- data/spec/unit/configuration/sql_source_spec.rb +0 -137
- data/spec/unit/configuration/template_index_spec.rb +0 -91
- data/spec/unit/configuration/tsv_source_spec.rb +0 -53
- data/spec/unit/configuration/xml_source_spec.rb +0 -51
- data/spec/unit/configuration_spec.rb +0 -25
- data/spec/unit/filter_spec.rb +0 -38
- data/spec/unit/message_spec.rb +0 -94
- data/spec/unit/response_spec.rb +0 -64
- data/spec/unit/riddle_spec.rb +0 -17
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::Common do
|
4
|
-
it "should always be valid" do
|
5
|
-
common = Riddle::Configuration::Common.new
|
6
|
-
common.should be_valid
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should support Sphinx's common settings" do
|
10
|
-
settings = %w( lemmatizer_base on_json_attr_error json_autoconv_numbers
|
11
|
-
json_autoconv_keynames rlp_root rlp_environment rlp_max_batch_size
|
12
|
-
rlp_max_batch_docs )
|
13
|
-
common = Riddle::Configuration::Common.new
|
14
|
-
|
15
|
-
settings.each do |setting|
|
16
|
-
common.should respond_to(setting.to_sym)
|
17
|
-
common.should respond_to("#{setting}=".to_sym)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should render a correct configuration" do
|
22
|
-
common = Riddle::Configuration::Common.new
|
23
|
-
common.common_sphinx_configuration = true
|
24
|
-
|
25
|
-
common.render.should == <<-COMMON
|
26
|
-
common
|
27
|
-
{
|
28
|
-
}
|
29
|
-
COMMON
|
30
|
-
|
31
|
-
common.lemmatizer_base = "/tmp"
|
32
|
-
common.render.should == <<-COMMON
|
33
|
-
common
|
34
|
-
{
|
35
|
-
lemmatizer_base = /tmp
|
36
|
-
}
|
37
|
-
COMMON
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should not be present when common_sphinx_configuration is not set" do
|
41
|
-
common = Riddle::Configuration::Common.new
|
42
|
-
common.render.should be_nil
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should not be present when common_sphinx_configuration is false" do
|
46
|
-
common = Riddle::Configuration::Common.new
|
47
|
-
common.common_sphinx_configuration = false
|
48
|
-
common.render.should be_nil
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should render when common_sphinx_configuration is true" do
|
52
|
-
common = Riddle::Configuration::Common.new
|
53
|
-
common.common_sphinx_configuration = true
|
54
|
-
common.render.should == <<-COMMON
|
55
|
-
common
|
56
|
-
{
|
57
|
-
}
|
58
|
-
COMMON
|
59
|
-
end
|
60
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::DistributedIndex do
|
4
|
-
it "should not be valid without any indices" do
|
5
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
6
|
-
index.should_not be_valid
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should be valid with just local indices" do
|
10
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
11
|
-
index.local_indices << "local_one"
|
12
|
-
index.should be_valid
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should be valid with just remote indices" do
|
16
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
17
|
-
index.remote_indices << Riddle::Configuration::RemoteIndex.new("local", 3312, "remote_one")
|
18
|
-
index.should be_valid
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should be of type 'distributed'" do
|
22
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
23
|
-
index.type.should == 'distributed'
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should raise a ConfigurationError if rendering when not valid" do
|
27
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
28
|
-
lambda { index.render }.should raise_error(Riddle::Configuration::ConfigurationError)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should render correctly if supplied settings are valid" do
|
32
|
-
index = Riddle::Configuration::DistributedIndex.new("dist1")
|
33
|
-
|
34
|
-
index.local_indices << "test1" << "test1stemmed"
|
35
|
-
index.remote_indices <<
|
36
|
-
Riddle::Configuration::RemoteIndex.new("localhost", 3313, "remote1") <<
|
37
|
-
Riddle::Configuration::RemoteIndex.new("localhost", 3314, "remote2") <<
|
38
|
-
Riddle::Configuration::RemoteIndex.new("localhost", 3314, "remote3")
|
39
|
-
index.agent_blackhole << "testbox:3312:testindex1,testindex2"
|
40
|
-
|
41
|
-
index.agent_connect_timeout = 1000
|
42
|
-
index.agent_query_timeout = 3000
|
43
|
-
|
44
|
-
index.render.should == <<-DISTINDEX
|
45
|
-
index dist1
|
46
|
-
{
|
47
|
-
type = distributed
|
48
|
-
local = test1
|
49
|
-
local = test1stemmed
|
50
|
-
agent = localhost:3313:remote1
|
51
|
-
agent = localhost:3314:remote2,remote3
|
52
|
-
agent_blackhole = testbox:3312:testindex1,testindex2
|
53
|
-
agent_connect_timeout = 1000
|
54
|
-
agent_query_timeout = 3000
|
55
|
-
}
|
56
|
-
DISTINDEX
|
57
|
-
end
|
58
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::DistributedIndex do
|
4
|
-
it "should be invalid without a name, sources or path if there's no parent" do
|
5
|
-
index = Riddle::Configuration::Index.new(nil)
|
6
|
-
index.should_not be_valid
|
7
|
-
|
8
|
-
index.name = "test1"
|
9
|
-
index.should_not be_valid
|
10
|
-
|
11
|
-
index.sources << Riddle::Configuration::SQLSource.new("source", "mysql")
|
12
|
-
index.should_not be_valid
|
13
|
-
|
14
|
-
index.path = "a/path"
|
15
|
-
index.should be_valid
|
16
|
-
|
17
|
-
index.name = nil
|
18
|
-
index.should_not be_valid
|
19
|
-
|
20
|
-
index.name = "test1"
|
21
|
-
index.sources.clear
|
22
|
-
index.should_not be_valid
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should be invalid without a name but not sources or path if it has a parent" do
|
26
|
-
index = Riddle::Configuration::Index.new(nil)
|
27
|
-
index.should_not be_valid
|
28
|
-
|
29
|
-
index.name = "test1stemmed"
|
30
|
-
index.should_not be_valid
|
31
|
-
|
32
|
-
index.parent = "test1"
|
33
|
-
index.should be_valid
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should raise a ConfigurationError if rendering when not valid" do
|
37
|
-
index = Riddle::Configuration::Index.new("test1")
|
38
|
-
lambda { index.render }.should raise_error(Riddle::Configuration::ConfigurationError)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should render correctly if supplied settings are valid" do
|
42
|
-
source = Riddle::Configuration::XMLSource.new("src1", "xmlpipe")
|
43
|
-
source.xmlpipe_command = "ls /dev/null"
|
44
|
-
|
45
|
-
index = Riddle::Configuration::Index.new("test1", source)
|
46
|
-
index.path = "/var/data/test1"
|
47
|
-
index.docinfo = "extern"
|
48
|
-
index.mlock = 0
|
49
|
-
index.morphologies << "stem_en" << "stem_ru" << "soundex"
|
50
|
-
index.min_stemming_len = 1
|
51
|
-
index.stopword_files << "/var/data/stopwords.txt" << "/var/data/stopwords2.txt"
|
52
|
-
index.wordform_files << "/var/data/wordforms.txt"
|
53
|
-
index.exception_files << "/var/data/exceptions.txt"
|
54
|
-
index.min_word_len = 1
|
55
|
-
index.charset_type = "utf-8"
|
56
|
-
index.charset_table = "0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F"
|
57
|
-
index.ignore_characters << "U+00AD"
|
58
|
-
index.min_prefix_len = 0
|
59
|
-
index.min_infix_len = 0
|
60
|
-
index.prefix_field_names << "filename"
|
61
|
-
index.infix_field_names << "url" << "domain"
|
62
|
-
index.enable_star = true
|
63
|
-
index.ngram_len = 1
|
64
|
-
index.ngram_characters << "U+3000..U+2FA1F"
|
65
|
-
index.phrase_boundaries << "." << "?" << "!" << "U+2026"
|
66
|
-
index.phrase_boundary_step = 100
|
67
|
-
index.html_strip = 0
|
68
|
-
index.html_index_attrs = "img=alt,title; a=title"
|
69
|
-
index.html_remove_element_tags << "style" << "script"
|
70
|
-
index.preopen = 1
|
71
|
-
index.ondisk_dict = 1
|
72
|
-
index.inplace_enable = 1
|
73
|
-
index.inplace_hit_gap = 0
|
74
|
-
index.inplace_docinfo_gap = 0
|
75
|
-
index.inplace_reloc_factor = 0.1
|
76
|
-
index.inplace_write_factor = 0.1
|
77
|
-
index.index_exact_words = 1
|
78
|
-
|
79
|
-
index.render.should == <<-INDEX
|
80
|
-
source src1
|
81
|
-
{
|
82
|
-
type = xmlpipe
|
83
|
-
xmlpipe_command = ls /dev/null
|
84
|
-
}
|
85
|
-
|
86
|
-
index test1
|
87
|
-
{
|
88
|
-
path = /var/data/test1
|
89
|
-
docinfo = extern
|
90
|
-
mlock = 0
|
91
|
-
morphology = stem_en, stem_ru, soundex
|
92
|
-
min_stemming_len = 1
|
93
|
-
stopwords = /var/data/stopwords.txt /var/data/stopwords2.txt
|
94
|
-
wordforms = /var/data/wordforms.txt
|
95
|
-
exceptions = /var/data/exceptions.txt
|
96
|
-
min_word_len = 1
|
97
|
-
charset_type = utf-8
|
98
|
-
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
|
99
|
-
ignore_chars = U+00AD
|
100
|
-
min_prefix_len = 0
|
101
|
-
min_infix_len = 0
|
102
|
-
prefix_fields = filename
|
103
|
-
infix_fields = url, domain
|
104
|
-
enable_star = 1
|
105
|
-
ngram_len = 1
|
106
|
-
ngram_chars = U+3000..U+2FA1F
|
107
|
-
phrase_boundary = ., ?, !, U+2026
|
108
|
-
phrase_boundary_step = 100
|
109
|
-
html_strip = 0
|
110
|
-
html_index_attrs = img=alt,title; a=title
|
111
|
-
html_remove_elements = style, script
|
112
|
-
preopen = 1
|
113
|
-
ondisk_dict = 1
|
114
|
-
inplace_enable = 1
|
115
|
-
inplace_hit_gap = 0
|
116
|
-
inplace_docinfo_gap = 0
|
117
|
-
inplace_reloc_factor = 0.1
|
118
|
-
inplace_write_factor = 0.1
|
119
|
-
index_exact_words = 1
|
120
|
-
source = src1
|
121
|
-
}
|
122
|
-
INDEX
|
123
|
-
end
|
124
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::Indexer do
|
4
|
-
it "should always be valid" do
|
5
|
-
indexer = Riddle::Configuration::Indexer.new
|
6
|
-
indexer.should be_valid
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should support Sphinx's indexer settings" do
|
10
|
-
settings = %w( mem_limit max_iops max_iosize )
|
11
|
-
indexer = Riddle::Configuration::Indexer.new
|
12
|
-
|
13
|
-
settings.each do |setting|
|
14
|
-
indexer.should respond_to(setting.to_sym)
|
15
|
-
indexer.should respond_to("#{setting}=".to_sym)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should render a correct configuration" do
|
20
|
-
indexer = Riddle::Configuration::Indexer.new
|
21
|
-
|
22
|
-
indexer.render.should == <<-INDEXER
|
23
|
-
indexer
|
24
|
-
{
|
25
|
-
}
|
26
|
-
INDEXER
|
27
|
-
|
28
|
-
indexer.mem_limit = "32M"
|
29
|
-
indexer.render.should == <<-INDEXER
|
30
|
-
indexer
|
31
|
-
{
|
32
|
-
mem_limit = 32M
|
33
|
-
}
|
34
|
-
INDEXER
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should render shared settings when common_sphinx_configuration is not set" do
|
38
|
-
indexer = Riddle::Configuration::Indexer.new
|
39
|
-
indexer.rlp_root = '/tmp'
|
40
|
-
|
41
|
-
indexer.render.should == <<-INDEXER
|
42
|
-
indexer
|
43
|
-
{
|
44
|
-
rlp_root = /tmp
|
45
|
-
}
|
46
|
-
INDEXER
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should render shared settings when common_sphinx_configuration is false" do
|
50
|
-
indexer = Riddle::Configuration::Indexer.new
|
51
|
-
indexer.common_sphinx_configuration = false
|
52
|
-
indexer.rlp_root = '/tmp'
|
53
|
-
|
54
|
-
indexer.render.should == <<-INDEXER
|
55
|
-
indexer
|
56
|
-
{
|
57
|
-
rlp_root = /tmp
|
58
|
-
}
|
59
|
-
INDEXER
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should not render shared settings when common_sphinx_configuration is true" do
|
63
|
-
indexer = Riddle::Configuration::Indexer.new
|
64
|
-
indexer.common_sphinx_configuration = true
|
65
|
-
indexer.rlp_root = '/tmp'
|
66
|
-
|
67
|
-
indexer.render.should == <<-INDEXER
|
68
|
-
indexer
|
69
|
-
{
|
70
|
-
}
|
71
|
-
INDEXER
|
72
|
-
end
|
73
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::RealtimeIndex do
|
4
|
-
let(:index) { Riddle::Configuration::RealtimeIndex.new('rt1') }
|
5
|
-
|
6
|
-
describe '#valid?' do
|
7
|
-
it "should not be valid without a name" do
|
8
|
-
index.name = nil
|
9
|
-
index.path = 'foo'
|
10
|
-
index.should_not be_valid
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should not be valid without a path" do
|
14
|
-
index.path = nil
|
15
|
-
index.should_not be_valid
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should be valid with a name and path" do
|
19
|
-
index.path = 'foo'
|
20
|
-
index.should be_valid
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#type' do
|
25
|
-
it "should be 'rt'" do
|
26
|
-
index.type.should == 'rt'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe '#render' do
|
31
|
-
it "should raise a ConfigurationError if rendering when not valid" do
|
32
|
-
lambda {
|
33
|
-
index.render
|
34
|
-
}.should raise_error(Riddle::Configuration::ConfigurationError)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should render correctly if supplied settings are valid" do
|
38
|
-
index.path = '/var/data/rt'
|
39
|
-
index.rt_mem_limit = '512M'
|
40
|
-
index.rt_field << 'title' << 'content'
|
41
|
-
|
42
|
-
index.rt_attr_uint << 'gid'
|
43
|
-
index.rt_attr_bigint << 'guid'
|
44
|
-
index.rt_attr_float << 'gpa'
|
45
|
-
index.rt_attr_timestamp << 'ts_added'
|
46
|
-
index.rt_attr_string << 'author'
|
47
|
-
|
48
|
-
index.render.should == <<-RTINDEX
|
49
|
-
index rt1
|
50
|
-
{
|
51
|
-
type = rt
|
52
|
-
path = /var/data/rt
|
53
|
-
rt_mem_limit = 512M
|
54
|
-
rt_field = title
|
55
|
-
rt_field = content
|
56
|
-
rt_attr_uint = gid
|
57
|
-
rt_attr_bigint = guid
|
58
|
-
rt_attr_float = gpa
|
59
|
-
rt_attr_timestamp = ts_added
|
60
|
-
rt_attr_string = author
|
61
|
-
}
|
62
|
-
RTINDEX
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,228 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Riddle::Configuration::Searchd do
|
4
|
-
if Riddle.loaded_version.to_f >= 0.9
|
5
|
-
it "should be invalid without a listen or pid_file" do
|
6
|
-
searchd = Riddle::Configuration::Searchd.new
|
7
|
-
searchd.should_not be_valid
|
8
|
-
|
9
|
-
searchd.port = 3312
|
10
|
-
searchd.should_not be_valid
|
11
|
-
|
12
|
-
searchd.pid_file = "file.pid"
|
13
|
-
searchd.should be_valid
|
14
|
-
|
15
|
-
searchd.port = nil
|
16
|
-
searchd.listen = nil
|
17
|
-
searchd.should_not be_valid
|
18
|
-
|
19
|
-
searchd.listen = "localhost:3312"
|
20
|
-
searchd.should be_valid
|
21
|
-
end
|
22
|
-
else
|
23
|
-
it "should be invalid without a port or pid_file" do
|
24
|
-
searchd = Riddle::Configuration::Searchd.new
|
25
|
-
searchd.should_not be_valid
|
26
|
-
|
27
|
-
searchd.port = 3312
|
28
|
-
searchd.should_not be_valid
|
29
|
-
|
30
|
-
searchd.pid_file = "file.pid"
|
31
|
-
searchd.should be_valid
|
32
|
-
|
33
|
-
searchd.port = nil
|
34
|
-
searchd.should_not be_valid
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should raise a ConfigurationError if rendering but not valid" do
|
39
|
-
searchd = Riddle::Configuration::Searchd.new
|
40
|
-
searchd.should_not be_valid
|
41
|
-
lambda { searchd.render }.should raise_error(Riddle::Configuration::ConfigurationError)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should support Sphinx's searchd settings" do
|
45
|
-
settings = %w( listen address port log query_log read_timeout
|
46
|
-
client_timeout max_children pid_file max_matches seamless_rotate
|
47
|
-
preopen_indexes unlink_old attr_flush_period ondisk_dict_default
|
48
|
-
max_packet_size mva_updates_pool crash_log_path max_filters
|
49
|
-
max_filter_values )
|
50
|
-
searchd = Riddle::Configuration::Searchd.new
|
51
|
-
|
52
|
-
settings.each do |setting|
|
53
|
-
searchd.should respond_to(setting.to_sym)
|
54
|
-
searchd.should respond_to("#{setting}=".to_sym)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should support setting listen to a port number" do
|
59
|
-
searchd = Riddle::Configuration::Searchd.new
|
60
|
-
searchd.port = 3312
|
61
|
-
searchd.pid_file = "file.pid"
|
62
|
-
searchd.listen = 3312
|
63
|
-
|
64
|
-
if Riddle.loaded_version.to_f >= 0.9
|
65
|
-
searchd.render.should == <<-SEARCHD
|
66
|
-
searchd
|
67
|
-
{
|
68
|
-
listen = 3312
|
69
|
-
pid_file = file.pid
|
70
|
-
}
|
71
|
-
SEARCHD
|
72
|
-
else
|
73
|
-
searchd.render.should == <<-SEARCHD
|
74
|
-
searchd
|
75
|
-
{
|
76
|
-
port = 3312
|
77
|
-
pid_file = file.pid
|
78
|
-
}
|
79
|
-
SEARCHD
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should render a correct configuration with valid settings" do
|
84
|
-
searchd = Riddle::Configuration::Searchd.new
|
85
|
-
searchd.port = 3312
|
86
|
-
searchd.pid_file = "file.pid"
|
87
|
-
|
88
|
-
if Riddle.loaded_version.to_f >= 0.9
|
89
|
-
searchd.render.should == <<-SEARCHD
|
90
|
-
searchd
|
91
|
-
{
|
92
|
-
listen = 3312
|
93
|
-
pid_file = file.pid
|
94
|
-
}
|
95
|
-
SEARCHD
|
96
|
-
else
|
97
|
-
searchd.render.should == <<-SEARCHD
|
98
|
-
searchd
|
99
|
-
{
|
100
|
-
port = 3312
|
101
|
-
pid_file = file.pid
|
102
|
-
}
|
103
|
-
SEARCHD
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should render with a client key if one is provided" do
|
108
|
-
searchd = Riddle::Configuration::Searchd.new
|
109
|
-
searchd.port = 3312
|
110
|
-
searchd.pid_file = 'file.pid'
|
111
|
-
searchd.client_key = 'secret'
|
112
|
-
|
113
|
-
if Riddle.loaded_version.to_f >= 0.9
|
114
|
-
searchd.render.should == <<-SEARCHD
|
115
|
-
searchd
|
116
|
-
{
|
117
|
-
listen = 3312
|
118
|
-
pid_file = file.pid
|
119
|
-
client_key = secret
|
120
|
-
}
|
121
|
-
SEARCHD
|
122
|
-
else
|
123
|
-
searchd.render.should == <<-SEARCHD
|
124
|
-
searchd
|
125
|
-
{
|
126
|
-
port = 3312
|
127
|
-
pid_file = file.pid
|
128
|
-
client_key = secret
|
129
|
-
}
|
130
|
-
SEARCHD
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
if Riddle.loaded_version.to_f >= 0.9
|
135
|
-
it "should render with mysql41 on the default port if true" do
|
136
|
-
searchd = Riddle::Configuration::Searchd.new
|
137
|
-
searchd.mysql41 = true
|
138
|
-
searchd.pid_file = 'file.pid'
|
139
|
-
|
140
|
-
searchd.render.should == <<-SEARCHD
|
141
|
-
searchd
|
142
|
-
{
|
143
|
-
listen = 9306:mysql41
|
144
|
-
pid_file = file.pid
|
145
|
-
}
|
146
|
-
SEARCHD
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should render with mysql41 on a given port" do
|
150
|
-
searchd = Riddle::Configuration::Searchd.new
|
151
|
-
searchd.mysql41 = 9307
|
152
|
-
searchd.pid_file = 'file.pid'
|
153
|
-
|
154
|
-
searchd.render.should == <<-SEARCHD
|
155
|
-
searchd
|
156
|
-
{
|
157
|
-
listen = 9307:mysql41
|
158
|
-
pid_file = file.pid
|
159
|
-
}
|
160
|
-
SEARCHD
|
161
|
-
end
|
162
|
-
|
163
|
-
it "allows for both normal and mysql41 connections" do
|
164
|
-
searchd = Riddle::Configuration::Searchd.new
|
165
|
-
searchd.mysql41 = true
|
166
|
-
searchd.port = 9312
|
167
|
-
searchd.pid_file = 'file.pid'
|
168
|
-
|
169
|
-
searchd.render.should == <<-SEARCHD
|
170
|
-
searchd
|
171
|
-
{
|
172
|
-
listen = 9312
|
173
|
-
listen = 9306:mysql41
|
174
|
-
pid_file = file.pid
|
175
|
-
}
|
176
|
-
SEARCHD
|
177
|
-
end
|
178
|
-
|
179
|
-
it "uses given address for mysql41 connections" do
|
180
|
-
searchd = Riddle::Configuration::Searchd.new
|
181
|
-
searchd.mysql41 = true
|
182
|
-
searchd.address = '127.0.0.1'
|
183
|
-
searchd.pid_file = 'file.pid'
|
184
|
-
|
185
|
-
searchd.render.should == <<-SEARCHD
|
186
|
-
searchd
|
187
|
-
{
|
188
|
-
listen = 127.0.0.1:9306:mysql41
|
189
|
-
pid_file = file.pid
|
190
|
-
}
|
191
|
-
SEARCHD
|
192
|
-
end
|
193
|
-
|
194
|
-
it "applies the given address to both normal and mysql41 connections" do
|
195
|
-
searchd = Riddle::Configuration::Searchd.new
|
196
|
-
searchd.mysql41 = true
|
197
|
-
searchd.port = 9312
|
198
|
-
searchd.address = 'sphinx.server.local'
|
199
|
-
searchd.pid_file = 'file.pid'
|
200
|
-
|
201
|
-
searchd.render.should == <<-SEARCHD
|
202
|
-
searchd
|
203
|
-
{
|
204
|
-
listen = sphinx.server.local:9312
|
205
|
-
listen = sphinx.server.local:9306:mysql41
|
206
|
-
pid_file = file.pid
|
207
|
-
}
|
208
|
-
SEARCHD
|
209
|
-
end
|
210
|
-
|
211
|
-
it 'maintains the address and port settings without rendering them' do
|
212
|
-
searchd = Riddle::Configuration::Searchd.new
|
213
|
-
searchd.port = 9312
|
214
|
-
searchd.address = 'sphinx.server.local'
|
215
|
-
searchd.pid_file = 'file.pid'
|
216
|
-
|
217
|
-
searchd.render.should == <<-SEARCHD
|
218
|
-
searchd
|
219
|
-
{
|
220
|
-
listen = sphinx.server.local:9312
|
221
|
-
pid_file = file.pid
|
222
|
-
}
|
223
|
-
SEARCHD
|
224
|
-
searchd.address.should == 'sphinx.server.local'
|
225
|
-
searchd.port.should == 9312
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|