]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Windows: windows-env_test created to exercice env var support
authornorbert.bizet <norbert.bizet@baculasystems.com>
Wed, 23 Feb 2022 11:19:06 +0000 (06:19 -0500)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:58 +0000 (13:56 +0200)
bacula/src/tools/windows-env-test.c [new file with mode: 0644]
bacula/src/win32/tools/Makefile

diff --git a/bacula/src/tools/windows-env-test.c b/bacula/src/tools/windows-env-test.c
new file mode 100644 (file)
index 0000000..944f9dd
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+   Bacula(R) - The Network Backup Solution
+
+   Copyright (C) 2000-2023 Kern Sibbald
+
+   The original author of Bacula is Kern Sibbald, with contributions
+   from many others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   This notice must be preserved when any source code is
+   conveyed and/or propagated.
+
+   Bacula(R) is a registered trademark of Kern Sibbald.
+*/
+
+#include "bacula.h"
+#include "lib/unittests.h"
+
+
+char *run_cmd(char *command, POOLMEM **out, char *env[])
+{
+   **out=0;
+   if (run_program_full_output(command, 0, *out, env) != 0) {
+      berrno be;
+      Dmsg1(0, "run_program_full_output done. %s", *out);
+      Jmsg(NULL, M_ERROR, 0, _("Can't run command %s. ERR=%s\n"),
+           command, be.bstrerror(errno));
+      if (**out) {
+         Dmsg1(0, "%s", *out);
+      }
+      return NULL;
+   }
+
+   strip_trailing_junk(*out);
+
+   return *out;
+}
+
+void *test1(char *env[])
+{
+   const char *ret;
+   POOLMEM *q = get_pool_memory(PM_FNAME);
+
+   run_cmd((char *)"set HY_ENV_VM_NAME", &q, env);
+   Dmsg1(0, "test1 returns %s\n", q);
+   if (strcmp(q, "HY_ENV_VM_NAME=NULL") == 0) {
+      ret = "ok";
+   } else {
+      ret = "not ok";
+   }
+   free_pool_memory(q);
+   return (void *)ret;
+}
+
+
+void *test2(char *env[])
+{
+   const char *ret;
+   POOLMEM *q = get_pool_memory(PM_FNAME);
+   
+   run_cmd((char *)"set HY_ENV_JOB_NAME", &q, env);
+   Dmsg1(0, "test2 returns %s\n", q);
+   if (strcmp(q, "HY_ENV_JOB_NAME=hyperv-backup.2022-02-18_13.42.54_15") == 0) {
+      ret = "ok";
+   } else {
+      ret = "not ok";
+   }
+   free_pool_memory(q);
+   return (void *)ret;
+}
+
+void *test3(char *env[])
+{
+   const char *ret;
+   POOLMEM *q = get_pool_memory(PM_FNAME);
+   
+   run_cmd((char *)"set HY_ENV_REF_JOB_NAME", &q, env);
+   Dmsg1(0, "test3 returns %s\n", q);
+   if (strcmp(q, "HY_ENV_REF_JOB_NAME=hyperv-backup.2022-02-17_17.58.09_21") == 0) {
+      ret = "ok";
+   } else {
+      ret = "not ok";
+   }
+   free_pool_memory(q);
+   return (void *)ret;
+}
+
+int main(int argc, char **argv)
+{
+   void *ret;
+   Unittests t("windows_env_test", true, true);
+   t.configure(TEST_QUIET);   
+   init_stack_dump();
+   my_name_is(argc, argv, "windows_env_test");
+   init_msg(NULL, NULL);
+   daemon_start_time = time(NULL);
+   setup_daemon_message_queue();
+
+   start_watchdog();
+
+   debug_level = 500;
+
+   char *_env[4];
+
+   POOLMEM *env_item1 = get_pool_memory(PM_FNAME);
+   Mmsg(env_item1, "HY_ENV_VM_NAME=NULL");
+   _env[0] = env_item1;
+
+   POOLMEM *env_item2 = get_pool_memory(PM_FNAME);
+   Mmsg(env_item2, "HY_ENV_JOB_NAME=hyperv-backup.2022-02-18_13.42.54_15");
+   _env[1] = env_item2;
+
+   POOLMEM *env_item3 = get_pool_memory(PM_FNAME);
+   Mmsg(env_item3, "HY_ENV_REF_JOB_NAME=hyperv-backup.2022-02-17_17.58.09_21");
+   _env[2] = env_item3;
+
+   _env[3] = NULL;
+
+   ret = test1(_env);
+   Dmsg1(0, "test1. ret = %s\n", (char *)ret);
+   ok(strcmp((char *)ret, "ok") == 0, "Checking test1");
+
+   ret = test2(_env);
+   ok(strcmp((char *)ret, "ok") == 0, "Checking test2");
+
+   ret = test3(_env);
+   ok(strcmp((char *)ret, "ok") == 0, "Checking test3");
+
+   free_pool_memory(env_item3);   
+   free_pool_memory(env_item2);
+   free_pool_memory(env_item1);
+
+   free_daemon_message_queue();
+   stop_watchdog();
+   term_msg();
+   close_memory_pool();
+   return report();
+}
\ No newline at end of file
index 8659d8ffdedc04427fe35b13851522b79ff9c27c..ff05222e8d4ff74062e489b99ee4bc2382aa813b 100644 (file)
@@ -46,7 +46,8 @@ ALL_OBJS = \
        $(OBJDIR)/testls.o \
        $(OBJDIR)/bregex.o \
        $(OBJDIR)/bwild.o \
-       $(OBJDIR)/bpipe-test.o
+       $(OBJDIR)/bpipe-test.o\
+       $(OBJDIR)/windows-env-test.o
 
 ##########################################################################
 
@@ -79,9 +80,10 @@ clean:
        $(call clean_exe,$(BINDIR)/thread.exe)
        $(call clean_exe,$(BINDIR)/cdp-client.exe)
        $(call clean_exe,$(BINDIR)/bpipe-test.exe)
+       $(call clean_exe,$(BINDIR)/windows-env-test.exe)
        $(ECHO_CMD)rm -rf $(OBJDIRS)
 
-tests: $(BINDIR)/bpipe-test.exe $(BINDIR)/bsock_meeting_test.exe $(BINDIR)/thread.exe 
+tests: $(BINDIR)/bpipe-test.exe $(BINDIR)/windows-env-test.exe $(BINDIR)/bsock_meeting_test.exe $(BINDIR)/thread.exe 
 
 
 #
@@ -136,6 +138,9 @@ $(BINDIR)/bsock_meeting_test.exe: $(OBJDIR)/bsock_meeting_test.o $(OBJDIR)/unitt
 $(BINDIR)/bpipe-test.exe: $(OBJDIR)/bpipe-test.o $(OBJDIR)/unittests.o $(LIBS_BACULA)
        $(call link_conapp,$(TEST_LIBS))
 
+$(BINDIR)/windows-env-test.exe: $(OBJDIR)/windows-env-test.o $(OBJDIR)/unittests.o $(LIBS_BACULA)
+       $(call link_conapp,$(TEST_LIBS))
+
 $(BINDIR)/cdp-client.exe: $(OBJDIR)/cdp-client.o $(OBJDIR)/backupservice.o $(OBJDIR)/folderwatcher.o $(OBJDIR)/journal.o $(LIBS_BACULA)
        $(call link_conapp,$(LIBS_PTHREADS))