tests: Introduce afstest_GetProgname 91/13991/2
authorAndrew Deason <adeason@sinenomine.net>
Tue, 31 Dec 2019 18:04:48 +0000 (12:04 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 10 Jan 2020 04:56:27 +0000 (23:56 -0500)
Currently, in tests/volser/vos-t.c we call afs_com_err as
"authname-t", which is clearly a mistake during some code refactoring
(introduced in commit 2ce3fdc5, "tests: Abstract out code to produce a
Ubik client").

We could just change this to "vos-t", but instead of specifying
constant strings everywhere, change this to figure out what the
current command is called, and just use that. Put this code into a new
function, afstest_GetProgname, and convert existing tests to use that
instead of hard-coding the program name given to afs_com_err.

Change-Id: I3ed02c89f93798568783c7d717e8fb2e39dcce14
Reviewed-on: https://gerrit.openafs.org/13991
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

tests/auth/Makefile.in
tests/auth/superuser-t.c
tests/common/common.h
tests/common/misc.c [new file with mode: 0644]
tests/volser/Makefile.in
tests/volser/vos-t.c

index 78bc0c8..25964d9 100644 (file)
@@ -20,11 +20,12 @@ authcon-t: authcon-t.o ../common/config.o ../common/network.o
                $(MODULE_LIBS)
 
 superuser-t: superuser-t.o ../common/config.o ../common/rxkad.o \
-            test.cs.o test.ss.o test.xdr.o ../common/network.o
+            test.cs.o test.ss.o test.xdr.o ../common/network.o \
+            ../common/misc.o
        $(LT_LDRULE_static) superuser-t.o ../common/config.o \
                ../common/rxkad.o ../common/servers.o \
                test.cs.o test.ss.o test.xdr.o ../common/network.o \
-               $(MODULE_LIBS)
+               ../common/misc.o $(MODULE_LIBS)
 
 keys-t: keys-t.o ../common/config.o ../common/network.o
        $(LT_LDRULE_static) keys-t.o ../common/config.o ../common/network.o $(MODULE_LIBS)
index bdba611..63be96a 100644 (file)
@@ -372,6 +372,7 @@ int main(int argc, char **argv)
     int serverPid, clientPid, waited, stat;
     int code;
     int ret = 0;
+    char *argv0 = afstest_GetProgname(argv);
 
     afstest_SkipTestsIfBadHostname();
 
@@ -406,7 +407,7 @@ int main(int argc, char **argv)
 
     code = afstest_AddDESKeyFile(dir);
     if (code) {
-       afs_com_err("superuser-t", code, "while adding new key\n");
+       afs_com_err(argv0, code, "while adding new key\n");
        ret = 1;
        goto out;
     }
index c9f7349..003a734 100644 (file)
@@ -55,3 +55,6 @@ extern int afstest_GetUbikClient(struct afsconf_dir *dir, char *service,
 extern int afstest_IsLoopbackNetworkDefault(void);
 extern int afstest_SkipTestsIfLoopbackNetIsDefault(void);
 extern void afstest_SkipTestsIfBadHostname(void);
+
+/* misc.c */
+extern char *afstest_GetProgname(char **argv);
diff --git a/tests/common/misc.c b/tests/common/misc.c
new file mode 100644 (file)
index 0000000..b2703d0
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Sine Nomine Associates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*!
+ * Common misc functions for testing programs
+ */
+
+#include <afsconfig.h>
+#include <afs/param.h>
+#include <roken.h>
+
+#include "common.h"
+
+char *
+afstest_GetProgname(char **argv)
+{
+    char *argv0;
+
+    /* For invocations like ./foo/bar/prog, strip out everything but the
+     * trailing 'prog'. */
+    argv0 = strrchr(argv[0], '/');
+    if (argv0 != NULL) {
+        argv0++;
+        return argv0;
+    }
+    return argv[0];
+}
index 57ddd0b..041480b 100644 (file)
@@ -15,9 +15,10 @@ MODULE_LIBS =        ../tap/libtap.a \
                $(XLIBS)
 
 vos-t: vos-t.o ../common/config.o ../common/servers.o ../common/ubik.o \
-               ../common/network.o
+               ../common/network.o ../common/misc.o
        $(LT_LDRULE_static) vos-t.o ../common/config.o ../common/servers.o \
-               ../common/ubik.o ../common/network.o $(MODULE_LIBS)
+               ../common/ubik.o ../common/network.o ../common/misc.o \
+               $(MODULE_LIBS)
 
 clean:
        $(LT_CLEAN)
index a8b8f54..ee9581d 100644 (file)
@@ -100,6 +100,7 @@ main(int argc, char **argv)
     struct rx_securityClass *secClass;
     struct ubik_client *ubikClient = NULL;
     int ret = 0;
+    char *argv0 = afstest_GetProgname(argv);
 
     /* Skip all tests if the current hostname can't be resolved */
     afstest_SkipTestsIfBadHostname();
@@ -116,14 +117,14 @@ main(int argc, char **argv)
 
     code = afstest_AddDESKeyFile(dir);
     if (code) {
-       afs_com_err("vos-t", code, "while adding test DES keyfile");
+       afs_com_err(argv0, code, "while adding test DES keyfile");
        ret = 1;
        goto out;
     }
 
     code = afstest_StartVLServer(dirname, &serverPid);
     if (code) {
-       afs_com_err("vos-t", code, "while starting the vlserver");
+       afs_com_err(argv0, code, "while starting the vlserver");
        ret = 1;
        goto out;
     }
@@ -131,7 +132,7 @@ main(int argc, char **argv)
     code = afsconf_ClientAuthSecure(dir, &secClass, &secIndex);
     is_int(code, 0, "Successfully got security class");
     if (code) {
-       afs_com_err("authname-t", code, "while getting anonymous secClass");
+       afs_com_err(argv0, code, "while getting anonymous secClass");
        ret = 1;
        goto out;
     }
@@ -140,7 +141,7 @@ main(int argc, char **argv)
                                 secClass, secIndex, &ubikClient);
     is_int(code, 0, "Successfully built ubik client structure");
     if (code) {
-       afs_com_err("vos-t", code, "while building ubik client");
+       afs_com_err(argv0, code, "while building ubik client");
        ret = 1;
        goto out;
     }