null+****@clear*****
null+****@clear*****
2011年 12月 20日 (火) 09:37:07 JST
Yoji SHIDARA 2011-12-20 00:37:07 +0000 (Tue, 20 Dec 2011) New Revision: dddd00254bdd452a9e0cb8aa5c2208d6caa60f97 Log: [test][msgpack] add HTTP schema tests for msgpack refs #915 refs #1215 refs #1210 Modified files: test/unit/http/test-http-schema.rb Modified: test/unit/http/test-http-schema.rb (+174 -76) =================================================================== --- test/unit/http/test-http-schema.rb 2011-12-19 08:49:57 +0000 (3aedaa2) +++ test/unit/http/test-http-schema.rb 2011-12-20 00:37:07 +0000 (56fb4b1) @@ -15,7 +15,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -class HTTPSchemaTest < Test::Unit::TestCase +module HTTPSchemaTests module Utils include GroongaHTTPTestUtils @@ -44,7 +44,7 @@ class HTTPSchemaTest < Test::Unit::TestCase end def assert_table_list(expected) - response = get(command_path(:table_list)) + response = get(command_path(:table_list, :output_type => output_type)) expected = expected.collect do |values| id, name, flags, domain, range = values [id, name, nil, flags, domain, range] @@ -57,7 +57,7 @@ class HTTPSchemaTest < Test::Unit::TestCase ["range", "ShortText"]], *expected], response, - :content_type => "application/json") do |actual| + :content_type => content_type) do |actual| status, result = actual header, *values = result values = values.collect do |value| @@ -69,6 +69,7 @@ class HTTPSchemaTest < Test::Unit::TestCase end def assert_column_list(expected, options) + options = options.merge(:output_type => output_type) response = get(command_path(:column_list, options)) expected = expected.collect do |values| id, name, type, flags, domain, range, source = values @@ -84,7 +85,7 @@ class HTTPSchemaTest < Test::Unit::TestCase ["source", "ShortText"]], *expected], response, - :content_type => "application/json") do |actual| + :content_type => content_type) do |actual| status, result = actual header, *values = result values = values.collect do |value| @@ -117,7 +118,7 @@ class HTTPSchemaTest < Test::Unit::TestCase :output_type => "unknown")) assert_response([[Result::UNKNOWN_ERROR, "should be implemented"]], response, - :content_type => "application/json") + :content_type => content_type) end def test_column_list_empty @@ -154,18 +155,19 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_column_list_nonexistent response = get(command_path(:column_list, - :table => "nonexistent")) + :table => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "table 'nonexistent' does not exist.", response, - :content_type => "application/json") + :content_type => content_type) end def test_column_list_without_table - response = get(command_path(:column_list)) + response = get(command_path(:column_list, :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "table '' does not exist.", response, - :content_type => "application/json") + :content_type => content_type) end def test_column_list_with_invalid_output_type @@ -176,7 +178,7 @@ class HTTPSchemaTest < Test::Unit::TestCase :output_type => "unknown")) assert_error_response(Result::UNKNOWN_ERROR, "should be implemented", response, - :content_type => "application/json") + :content_type => content_type) end def test_column_list_with_invalid_output_type_without_table @@ -185,64 +187,77 @@ class HTTPSchemaTest < Test::Unit::TestCase :output_type => "unknown")) assert_error_response(Result::UNKNOWN_ERROR, "should be implemented", response, - :content_type => "application/json") + :content_type => content_type) end def test_table_create_without_name - response = get(command_path(:table_create)) + response = get(command_path(:table_create, :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "should not create anonymous table", response, - :content_type => "application/json") + :content_type => content_type) end def test_table_create_with_dot_name - response = get(command_path(:table_create, :name => "mori.daijiro")) + response = get(command_path(:table_create, + :name => "mori.daijiro", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create]: " + "name can't start with '_' " + "and contains only 0-9, A-Z, a-z, #, - or _: " + "<mori.daijiro>", response, - :content_type => "application/json") + :content_type => content_type) end def test_table_create_with_under_score_started_name - response = get(command_path(:table_create, :name => "_mori")) + response = get(command_path(:table_create, + :name => "_mori", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create]: " + "name can't start with '_' " + "and contains only 0-9, A-Z, a-z, #, - or _: " + "<_mori>", response, - :content_type => "application/json") + :content_type => content_type) end def test_table_create_with_under_score_name - response = get(command_path(:table_create, :name => "mori_daijiro")) - assert_success_response(response, :content_type => "application/json") + response = get(command_path(:table_create, + :name => "mori_daijiro", + :output_type => output_type)) + assert_success_response(response, :content_type => content_type) end def test_table_create_with_colon_name - response = get(command_path(:table_create, :name => "daijiro:mori")) + response = get(command_path(:table_create, + :name => "daijiro:mori", + :output_type => output_type + )) assert_error_response(Result::INVALID_ARGUMENT, "[table][create]: " + "name can't start with '_' " + "and contains only 0-9, A-Z, a-z, #, - or _: " + "<daijiro:mori>", response, - :content_type => "application/json") + :content_type => content_type) end def test_table_create_with_duplicated_name - response = get(command_path(:table_create, :name => "daijiro")) - assert_success_response(response, :content_type => "application/json") - response = get(command_path(:table_create, :name => "daijiro")) + response = get(command_path(:table_create, + :name => "daijiro", + :output_type => output_type)) + assert_success_response(response, :content_type => content_type) + response = get(command_path(:table_create, + :name => "daijiro", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "already used name was assigned: <daijiro>", response, - :content_type => "application/json") + :content_type => content_type) end def test_full_text_search @@ -273,7 +288,7 @@ class HTTPSchemaTest < Test::Unit::TestCase :query => "title:@column") end - class HashCreateTest < Test::Unit::TestCase + module HashCreateTests include Utils def test_simple @@ -323,13 +338,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_big_size_key response = get(command_path(:table_create, :name => "users", - :key_type => "Text")) + :key_type => "Text", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key size too big: " + "<users> <Text>(65536) (max:4096)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -338,13 +354,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Key::SIS, - :key_type => "ShortText")) + :key_type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key with SIS isn't available " + "for hash table: <users>", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -352,13 +369,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_nonexistent_key_type response = get(command_path(:table_create, :name => "users", - :key_type => "nonexistent")) + :key_type => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key type doesn't exist: " + "<users> (nonexistent)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -366,13 +384,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_invalid_key_type response = get(command_path(:table_create, :name => "users", - :key_type => "table_create")) + :key_type => "table_create", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key type must be type or table: " + "<users> (table_create)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -389,13 +408,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_nonexistent_value_type response = get(command_path(:table_create, :name => "users", - :value_type => "nonexistent")) + :value_type => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type doesn't exist: " + "<users> (nonexistent)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -403,13 +423,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_invalid_value_type response = get(command_path(:table_create, :name => "users", - :value_type => "table_create")) + :value_type => "table_create", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type must be type or table: " + "<users> (table_create)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -417,19 +438,20 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_variable_size_value_type response = get(command_path(:table_create, :name => "users", - :value_type => "ShortText")) + :value_type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type must be fixed size: " + "<users> (ShortText)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end end - class PatriciaTrieCreateTest < Test::Unit::TestCase + module PatriciaTrieCreateTests include Utils def test_simple @@ -483,13 +505,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :key_type => "Text")) + :key_type => "Text", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key size too big: " + "<users> <Text>(65536) (max:4096)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -509,13 +532,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :key_type => "nonexistent")) + :key_type => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key type doesn't exist: " + "<users> (nonexistent)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -524,13 +548,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :key_type => "table_create")) + :key_type => "table_create", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key type must be type or table: " + "<users> (table_create)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -550,13 +575,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :value_type => "nonexistent")) + :value_type => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type doesn't exist: " + "<users> (nonexistent)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -565,13 +591,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :value_type => "table_create")) + :value_type => "table_create", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type must be type or table: " + "<users> (table_create)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -580,19 +607,20 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::PAT_KEY, - :value_type => "ShortText")) + :value_type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type must be fixed size: " + "<users> (ShortText)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end end - class ArrayCreateTest < Test::Unit::TestCase + module ArrayCreateTests include Utils def test_simple @@ -607,13 +635,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_normalize_key response = get(command_path(:table_create, :name => "users", - :flags => Table::NO_KEY | Key::NORMALIZE)) + :flags => Table::NO_KEY | Key::NORMALIZE, + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key normalization isn't available " + "for no key table: <users>", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -622,13 +651,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::NO_KEY, - :key_type => "ShortText")) + :key_type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key isn't available for no key table: " + "<users> (ShortText)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -636,13 +666,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_sis response = get(command_path(:table_create, :name => "users", - :flags => Table::NO_KEY | Key::SIS)) + :flags => Table::NO_KEY | Key::SIS, + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key with SIS isn't available " + "for no key table: <users>", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -679,19 +710,20 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::NO_KEY, - :value_type => "nonexistent")) + :value_type => "nonexistent", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value type doesn't exist: " + "<users> (nonexistent)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end end - class ViewCreateTest < Test::Unit::TestCase + module ViewCreateTests include Utils def test_simple @@ -705,13 +737,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_normalize_key response = get(command_path(:table_create, :name => "users", - :flags => Table::VIEW | Key::NORMALIZE)) + :flags => Table::VIEW | Key::NORMALIZE, + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key normalization isn't available " + "for view table: <users>", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -720,13 +753,14 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::VIEW, - :key_type => "ShortText")) + :key_type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key isn't available for view table: " + "<users> (ShortText)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -734,13 +768,14 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_sis response = get(command_path(:table_create, :name => "users", - :flags => Table::VIEW | Key::SIS)) + :flags => Table::VIEW | Key::SIS, + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "key with SIS isn't available " + "for view table: <users>", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -749,19 +784,20 @@ class HTTPSchemaTest < Test::Unit::TestCase response = get(command_path(:table_create, :name => "users", :flags => Table::VIEW, - :value_type => "Int32")) + :value_type => "Int32", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "[table][create] " + "value isn't available for view table: " + "<users> (Int32)", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end end - class SymbolFlagsTest < Test::Unit::TestCase + module SymbolFlagsTests include Utils def test_table_create_single_symbol @@ -807,11 +843,12 @@ class HTTPSchemaTest < Test::Unit::TestCase def test_table_create_invalid_symbol response = get(command_path(:table_create, :name => "books", - :flags => "INVALID_SYMBOL")) + :flags => "INVALID_SYMBOL", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "invalid flags option: INVALID_SYMBOL", response, - :content_type => "application/json") + :content_type => content_type) assert_table_list([]) end @@ -874,11 +911,12 @@ class HTTPSchemaTest < Test::Unit::TestCase :table => "books", :name => "name", :flags => "INVALID_SYMBOL", - :type => "ShortText")) + :type => "ShortText", + :output_type => output_type)) assert_error_response(Result::INVALID_ARGUMENT, "invalid flags option: INVALID_SYMBOL", response, - :content_type => "application/json") + :content_type => content_type) assert_column_list([], :table => "books") end @@ -894,3 +932,63 @@ class HTTPSchemaTest < Test::Unit::TestCase end end end + +class JSONHTTPSchemaTests < Test::Unit::TestCase + include HTTPSchemaTests + include Format::JSON + + class JSONHashCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::HashCreateTests + include Format::JSON + end + + class JSONPatriciaTrieCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::PatriciaTrieCreateTests + include Format::JSON + end + + class JSONArrayCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::ArrayCreateTests + include Format::JSON + end + + class JSONViewCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::ViewCreateTests + include Format::JSON + end + + class JSONSymbolFlagsTest < Test::Unit::TestCase + include HTTPSchemaTests::SymbolFlagsTests + include Format::JSON + end +end + +class MessagePackHTTPSchemaTests < Test::Unit::TestCase + include HTTPSchemaTests + include Format::MessagePack + + class MessagePackHashCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::HashCreateTests + include Format::MessagePack + end + + class MessagePackPatriciaTrieCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::PatriciaTrieCreateTests + include Format::MessagePack + end + + class MessagePackArrayCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::ArrayCreateTests + include Format::MessagePack + end + + class MessagePackViewCreateTest < Test::Unit::TestCase + include HTTPSchemaTests::ViewCreateTests + include Format::MessagePack + end + + class MessagePackSymbolFlagsTest < Test::Unit::TestCase + include HTTPSchemaTests::SymbolFlagsTests + include Format::MessagePack + end +end