]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
metaplugin: Add error messages handling regression tests.
authorRadosław Korzeniewski <radoslaw@korzeniewski.net>
Thu, 10 Jun 2021 10:38:06 +0000 (12:38 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:02 +0000 (09:03 +0100)
bacula/src/plugins/fd/pluginlib/metaplugin.cpp
bacula/src/plugins/fd/pluginlib/test_metaplugin_backend.c
regress/scripts/kubernetes-plugin-test-bacula-dir.conf.in
regress/tests/kubernetes-plugin-protocol-test

index 59c963e360e0c3982f4507798d040dd46f8dde51..b043f9d7f47bb0244235f5869ce398e5f65f3082 100644 (file)
@@ -776,6 +776,7 @@ bRC METAPLUGIN::send_parameters(bpContext *ctx, char *command)
       "regress_backup_other_file",
       "regress_error_backup_abort",
       "regress_metadata_support",
+      "regress_standard_error_backup",
       NULL,
    };
 #endif
@@ -1126,19 +1127,6 @@ bRC METAPLUGIN::prepare_backend(bpContext *ctx, char type, char *command)
             return bRC_Error;
          }
       }
-         // if (listing != ListingNone){
-         //    DMSG0(ctx, DINFO, "Start Listing (4) ...\n");
-         //    if (send_startlisting(ctx) != bRC_OK){
-         //       backend.ctx->terminate(ctx);
-         //       return bRC_Error;
-         //    }
-         // } else {
-         //    DMSG0(ctx, DINFO, "Start Estimate (4) ...\n");
-         //    if (send_startestimate(ctx) != bRC_OK){
-         //       backend.ctx->terminate(ctx);
-         //       return bRC_Error;
-         //    }
-         // }
       break;
    case BACKEND_JOB_INFO_RESTORE:
       /* Start Restore (4) */
@@ -1338,7 +1326,7 @@ bRC METAPLUGIN::perform_read_data(bpContext *ctx, struct io_pkt *io)
    rc = backend.ctx->read_data_fixed(ctx, io->buf, io->count);
    if (rc < 0){
       io->status = rc;
-      io->io_errno = rc;
+      io->io_errno = EIO;
       return bRC_Error;
    }
    io->status = rc;
@@ -1831,6 +1819,12 @@ bRC METAPLUGIN::perform_read_pluginobject(bpContext *ctx, struct save_pkt *sp)
             sp->plugin_obj.object_size = plugin_obj_size;
             continue;
          }
+         if (scan_parameter_str(cmd, "PLUGINOBJ_COUNT:", param)){
+            uint32_t count = str_to_int64(param.c_str());
+            DMSG1(ctx, DDEBUG, "count: %lu\n", count);
+            sp->plugin_obj.count = count;
+            continue;
+         }
          /* error in protocol */
          DMSG(ctx, DERROR, "Protocol error, got unknown command: %s\n", cmd.c_str());
          JMSG(ctx, M_FATAL, "Protocol error, got unknown command: %s\n", cmd.c_str());
index 88ed8765f47e53f381671dc0b6c43538f3d4b833..e62e061ab717647bd12cf243f813ace9b3f2236c 100644 (file)
@@ -59,6 +59,7 @@ bool regress_error_listing_stderr = false;
 bool regress_error_restore_stderr = false;
 bool regress_backup_other_file = false;
 bool regress_metadata_support = false;
+bool regress_standard_error_backup = false;
 
 
 #define BUFLEN             4096
@@ -379,6 +380,26 @@ void perform_backup()
    write_plugin('C', "DATA\n");
    write_plugin('I', "TEST8Data");
 
+   if (regress_standard_error_backup)
+   {
+      // next file
+      snprintf(buf, BIGBUFLEN, "FNAME:%s/bucket/%d/standard-error-file\n", PLUGINPREFIX, mypid);
+      write_plugin('C', buf);
+      write_plugin('C', "STAT:F 1048576 200 200 100640 1\n");
+      write_plugin('C', "TSTAMP:1504271937 1504271937 1504271937\n");
+      signal_eod();
+      write_plugin('I', "TEST8-Error-Start");
+      /* here comes a file data contents */
+      write_plugin('E', "TEST8-Error: Standard IO Error goes Here");
+      // write_plugin('C', "DATA\n");
+      // write_plugin('D', "/* here comes a file data contents */");
+      // write_plugin('D', "/* here comes another file line    */");
+      // write_plugin('D', "/* here comes another file line    */");
+      // write_plugin('D', "/* here comes another file line    */");
+      write_plugin('I', "TEST8-Error-End");
+      // signal_eod();
+   }
+
    if (regress_backup_plugin_objects)
    {
       // test Plugin Objects interface
@@ -435,6 +456,26 @@ void perform_backup()
    write_plugin('D', "/* here comes another file line    */");
    signal_eod();
 
+   if (regress_standard_error_backup)
+   {
+      // next file
+      snprintf(buf, BIGBUFLEN, "FNAME:%s/bucket/%d/standard-error-file2\n", PLUGINPREFIX, mypid);
+      write_plugin('C', buf);
+      write_plugin('C', "STAT:F 1048576 200 200 100640 1\n");
+      write_plugin('C', "TSTAMP:1504271937 1504271937 1504271937\n");
+      signal_eod();
+      write_plugin('I', "TEST8-Error-Start");
+      /* here comes a file data contents */
+      write_plugin('C', "DATA\n");
+      write_plugin('D', "/* here comes a file data contents */");
+      write_plugin('D', "/* here comes another file line    */");
+      write_plugin('D', "/* here comes another file line    */");
+      write_plugin('D', "/* here comes another file line    */");
+      write_plugin('E', "TEST8-Error: Standard IO Error goes Here");
+      write_plugin('I', "TEST8-Error-End");
+      // signal_eod();
+   }
+
    const int bigfileblock = 100000;
    const int bigfilesize = bigfileblock * 5;
    snprintf(buf, BIGBUFLEN, "FNAME:%s/bucket/%d/bigfile.raw\n", PLUGINPREFIX, mypid);
@@ -947,6 +988,7 @@ int main(int argc, char** argv) {
       // "regress_error_restore_stderr",
       // "regress_backup_plugin_objects",
       // "regress_error_backup_abort",
+      // "regress_standard_error_backup",
       if (strcmp(buf, "regress_error_plugin_params=1\n") == 0){
          regress_error_plugin_params = true;
          continue;
@@ -991,6 +1033,10 @@ int main(int argc, char** argv) {
          regress_metadata_support = true;
          continue;
       }
+      if (strcmp(buf, "regress_standard_error_backup=1\n") == 0){
+         regress_standard_error_backup = true;
+         continue;
+      }
       if (sscanf(buf, "listing=%s\n", buf) == 1){
          strcpy(listing, buf);
          continue;
index 8fc6944c88e366744e958f362d30adb6a9cf63d4..357d243b5d2c986f164003797c9657f896f21af9 100644 (file)
@@ -95,6 +95,34 @@ FileSet {
   }
 }
 
+Job {
+  Name = "PluginK8STestProtocol5"
+  JobDefs = "BackupJob"
+  FileSet="TestPluginK8SSetProtocol5"
+}
+
+FileSet {
+  Name = "TestPluginK8SSetProtocol5"
+  Include {
+    Options { signature=MD5 }
+    Plugin = "kubernetes: regress_metadata_support"
+  }
+}
+
+Job {
+  Name = "PluginK8STestProtocol6"
+  JobDefs = "BackupJob"
+  FileSet="TestPluginK8SSetProtocol6"
+}
+
+FileSet {
+  Name = "TestPluginK8SSetProtocol6"
+  Include {
+    Options { signature=MD5 }
+    Plugin = "kubernetes: regress_standard_error_backup"
+  }
+}
+
 FileSet {
   Name = "TestPluginKubernetesSet"
   Include { Options { signature=SHA1 }
index 6f6574f893c87415ea7913beb3a1167303a4a913..d42b4d576c6fe31b8c05f101fa25ad33ea1f5bf1 100755 (executable)
@@ -10,6 +10,8 @@ FilesetBackup1="TestPluginK8SSetProtocol1"
 JobBackup2="PluginK8STestProtocol2"
 JobBackup3="PluginK8STestProtocol3"
 JobBackup4="PluginK8STestProtocol4"
+JobBackup5="PluginK8STestProtocol5"
+JobBackup6="PluginK8STestProtocol6"
 Plugin="kubernetes:"
 
 . scripts/functions