Kouhei Sutou
null+****@clear*****
Wed Feb 10 15:12:36 JST 2016
Kouhei Sutou 2016-02-10 15:12:36 +0900 (Wed, 10 Feb 2016) New Revision: 9896eb7acacaa8beaa225a5e2a8760d07876a0e4 https://github.com/groonga/groonga/commit/9896eb7acacaa8beaa225a5e2a8760d07876a0e4 Message: object_remove test: add a test case for failing object_remove It's a segment size is 0 case. Added files: test/command/fixture/object_remove/zero_segment_size test/command/suite/object_remove/broken/zero_segment_size.expected test/command/suite/object_remove/broken/zero_segment_size.test test/command/suite/object_remove/broken/zero_segment_size_force.expected test/command/suite/object_remove/broken/zero_segment_size_force.test Modified files: lib/io.c Modified: lib/io.c (+11 -7) =================================================================== --- lib/io.c 2016-02-10 15:02:50 +0900 (6a63521) +++ lib/io.c 2016-02-10 15:12:36 +0900 (bf881c2) @@ -576,19 +576,23 @@ grn_io_open(grn_ctx *ctx, const char *path, grn_io_mode mode) grn_close(fd); return NULL; } - if (!memcmp(h.idstr, GRN_IO_IDSTR, GRN_IO_IDSTR_LEN)) { - header_size = h.header_size; - segment_size = h.segment_size; - max_segment = h.max_segment; - flags = h.flags; - } else { + if (memcmp(h.idstr, GRN_IO_IDSTR, GRN_IO_IDSTR_LEN) != 0) { ERR(GRN_INCOMPATIBLE_FILE_FORMAT, "failed to open: format ID is different: <%s>: <%.*s>", path, (int)GRN_IO_IDSTR_LEN, GRN_IO_IDSTR); + grn_close(fd); + return NULL; } + header_size = h.header_size; + segment_size = h.segment_size; + max_segment = h.max_segment; + flags = h.flags; grn_close(fd); - if (!segment_size) { return NULL; } + if (segment_size == 0) { + ERR(GRN_INCOMPATIBLE_FILE_FORMAT, "failed to open: segment size is 0"); + return NULL; + } } b = grn_io_compute_base(header_size); bs = grn_io_compute_base_segment(b, segment_size); Added: test/command/fixture/object_remove/zero_segment_size (+0 -0) 100644 =================================================================== (Binary files differ) Added: test/command/suite/object_remove/broken/zero_segment_size.expected (+20 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/object_remove/broken/zero_segment_size.expected 2016-02-10 15:12:36 +0900 (1106ea1) @@ -0,0 +1,20 @@ +table_create Users TABLE_HASH_KEY ShortText +[[0,0.0,0.0],true] +database_unmap +[[0,0.0,0.0],true] +object_remove Users +[ + [ + [ + -22, + 0.0, + 0.0 + ], + "[object][remove] failed to open the target object: <Users>" + ], + false +] +#|e| failed to open: segment size is 0 +#|e| [object][remove] failed to open the target object: <Users> +object_exist Users +[[0,0.0,0.0],true] Added: test/command/suite/object_remove/broken/zero_segment_size.test (+10 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/object_remove/broken/zero_segment_size.test 2016-02-10 15:12:36 +0900 (2667d33) @@ -0,0 +1,10 @@ +table_create Users TABLE_HASH_KEY ShortText + +#@disable-logging +thread_limit 1 +#@enable-logging +database_unmap +#@copy-path fixture/object_remove/zero_segment_size #{db_path}.0000100 + +object_remove Users +object_exist Users Added: test/command/suite/object_remove/broken/zero_segment_size_force.expected (+9 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/object_remove/broken/zero_segment_size_force.expected 2016-02-10 15:12:36 +0900 (e8b621b) @@ -0,0 +1,9 @@ +table_create Users TABLE_HASH_KEY ShortText +[[0,0.0,0.0],true] +database_unmap +[[0,0.0,0.0],true] +object_remove Users --force yes +[[[-65,0.0,0.0],"failed to open: segment size is 0"],false] +#|e| failed to open: segment size is 0 +object_exist Users +[[0,0.0,0.0],false] Added: test/command/suite/object_remove/broken/zero_segment_size_force.test (+10 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/object_remove/broken/zero_segment_size_force.test 2016-02-10 15:12:36 +0900 (cf8c4b1) @@ -0,0 +1,10 @@ +table_create Users TABLE_HASH_KEY ShortText + +#@disable-logging +thread_limit 1 +#@enable-logging +database_unmap +#@copy-path fixture/object_remove/zero_segment_size #{db_path}.0000100 + +object_remove Users --force yes +object_exist Users -------------- next part -------------- HTML����������������������������...Download