[Groonga-commit] groonga/groonga at 9896eb7 [master] object_remove test: add a test case for failing object_remove

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index