From: Simon Wilkinson Date: Mon, 30 May 2011 16:47:35 +0000 (+0100) Subject: tests: Move common code to its own directory X-Git-Tag: upstream/1.8.0_pre1^2~3655 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=799b3373ecfeebf790d71c6e5bf60b0845519b2d;p=packages%2Fo%2Fopenafs.git tests: Move common code to its own directory Move code for faking up an OpenAFS configuration directory into its own "common" directory, as it's going to be of use to more tests than just those in auth. Change-Id: I9c80dd66763e222deca98bc7744ff317111c6ed8 Reviewed-on: http://gerrit.openafs.org/4806 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- diff --git a/Makefile.in b/Makefile.in index 1fd82ecda..799f9aa21 100644 --- a/Makefile.in +++ b/Makefile.in @@ -947,6 +947,7 @@ distclean: clean tests/tap/Makefile \ tests/auth/Makefile \ tests/cmd/Makefile \ + tests/common/Makefile \ tests/util/Makefile \ src/helper-splint.sh if test -d doc/man-pages ; then \ diff --git a/configure.ac b/configure.ac index 0df22bc84..0aa3dba5f 100644 --- a/configure.ac +++ b/configure.ac @@ -245,6 +245,7 @@ src/helper-splint.sh \ tests/Makefile \ tests/auth/Makefile \ tests/cmd/Makefile \ +tests/common/Makefile \ tests/rpctestlib/Makefile \ tests/tap/Makefile \ tests/util/Makefile, diff --git a/tests/Makefile.in b/tests/Makefile.in index 3e17b5194..550312cae 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -9,7 +9,7 @@ include @TOP_OBJDIR@/src/config/Makefile.pthread MODULE_CFLAGS = -DSOURCE='"$(abs_top_srcdir)/tests"' \ -DBUILD='"$(abs_top_builddir)/tests"' -SUBDIRS = tap auth util cmd +SUBDIRS = tap common auth util cmd all: runtests @for A in $(SUBDIRS); do cd $$A && $(MAKE) $@ && cd .. || exit 1; done diff --git a/tests/auth/Makefile.in b/tests/auth/Makefile.in index e378b3c04..b6c84be39 100644 --- a/tests/auth/Makefile.in +++ b/tests/auth/Makefile.in @@ -6,7 +6,7 @@ include @TOP_OBJDIR@/src/config/Makefile.pthread TESTS = authcon-t superuser-t keys-t -MODULE_CFLAGS=-I$(srcdir)/.. +MODULE_CFLAGS=-I$(srcdir)/.. -I$(srcdir)/../common/ all check test tests: $(TESTS) @@ -17,17 +17,17 @@ MODULE_LIBS = ../tap/libtap.a \ $(LIB_rfc3961) $(LIB_roken) -lafsutil\ $(XLIBS) -authcon-t: authcon-t.o common.o - $(AFS_LDRULE) authcon-t.o common.o \ +authcon-t: authcon-t.o ../common/config.o + $(AFS_LDRULE) authcon-t.o ../common/config.o \ $(MODULE_LIBS) -superuser-t: superuser-t.o common.o test.cs.o test.ss.o test.xdr.o - $(AFS_LDRULE) superuser-t.o common.o \ +superuser-t: superuser-t.o ../common/config.o test.cs.o test.ss.o test.xdr.o + $(AFS_LDRULE) superuser-t.o ../common/config.o \ test.cs.o test.ss.o test.xdr.o \ $(MODULE_LIBS) -keys-t: keys-t.o common.o - $(AFS_LDRULE) keys-t.o common.o $(MODULE_LIBS) +keys-t: keys-t.o ../common/config.o + $(AFS_LDRULE) keys-t.o ../common/config.o $(MODULE_LIBS) writekeyfile: writekeyfile.o $(AFS_LDRULE) writekeyfile.o $(MODULE_LIBS) @@ -44,7 +44,7 @@ test.xdr.c: test.xg test.h: test.xg $(RXGEN) -A -x -h -o $@ $(srcdir)/test.xg -superuser-t.o: test.h common.h +superuser-t.o: test.h clean: rm -f *.o *.cs.c *.ss.c *.xdr.c test.h \ diff --git a/tests/auth/authcon-t.c b/tests/auth/authcon-t.c index 1552f2637..c9e968ee8 100644 --- a/tests/auth/authcon-t.c +++ b/tests/auth/authcon-t.c @@ -51,7 +51,7 @@ main(int argc, char **argv) struct afsconf_typedKey *key; plan(9); - dirname = buildTestConfig(); + dirname = afstest_BuildTestConfig(); dir = afsconf_Open(dirname); if (dir == NULL) { diff --git a/tests/auth/common.c b/tests/auth/common.c deleted file mode 100644 index fb9595571..000000000 --- a/tests/auth/common.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2010 Your File System Inc. 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 functions for building a configuration directory - */ - -#include -#include -#include - -#include - -#include "common.h" - -static FILE * -openConfigFile(char *dirname, char *filename) { - char *path = NULL; - FILE *file; - - if (asprintf(&path, "%s/%s", dirname, filename) == -1) - return NULL; - - file = fopen(path, "w"); - free(path); - return file; -} - -static void -unlinkConfigFile(char *dirname, char *filename) { - char *path; - - if (asprintf(&path, "%s/%s", dirname, filename) != -1) { - unlink(path); - free(path); - } -} - -/*! - * Build a test configuration directory, containing a CellServDB and ThisCell - * file for the "example.org" cell - * - * @return - * The path to the configuration directory. This should be freed by the caller - * using free() - * - */ - -char * -buildTestConfig(void) { - char *dir = NULL; - FILE *file; - - if (asprintf(&dir, "%s/afs_XXXXXX", gettmpdir()) == -1) - goto fail; - - if (mkdtemp(dir) == NULL) - goto fail; - - /* Create a CellServDB */ - file = openConfigFile(dir, "CellServDB"); - fprintf(file, ">example.org # An example cell\n"); - fprintf(file, "127.0.0.1 #test.example.org\n"); - fclose(file); - - /* Create a ThisCell file */ - file = openConfigFile(dir, "ThisCell"); - fprintf(file, "example.org"); - fclose(file); - - return dir; - -fail: - if (dir) - free(dir); - return NULL; -} - -/*! - * Delete at test configuration directory - */ - -void -unlinkTestConfig(char *dir) -{ - unlinkConfigFile(dir, "KeyFile"); - unlinkConfigFile(dir, "CellServDB"); - unlinkConfigFile(dir, "ThisCell"); - unlinkConfigFile(dir, "UserList"); - rmdir(dir); -} diff --git a/tests/auth/common.h b/tests/auth/common.h deleted file mode 100644 index afe0b67f0..000000000 --- a/tests/auth/common.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2010 Your File System Inc. 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. - */ - -extern char *buildTestConfig(void); -extern void unlinkTestConfig(char *); diff --git a/tests/auth/keys-t.c b/tests/auth/keys-t.c index ba7391e0a..19ab98ab8 100644 --- a/tests/auth/keys-t.c +++ b/tests/auth/keys-t.c @@ -110,7 +110,7 @@ int main(int argc, char **argv) /* Create a temporary afs configuration directory */ - dirname = buildTestConfig(); + dirname = afstest_BuildTestConfig(); if (asprintf(&keyfile, "%s/KeyFile", dirname) == -1) goto out; @@ -557,12 +557,12 @@ int main(int argc, char **argv) afsconf_Close(dir); - unlinkTestConfig(dirname); + afstest_UnlinkTestConfig(dirname); free(dirname); free(keyfile); /* Start a new test configuration */ - dirname = buildTestConfig(); + dirname = afstest_BuildTestConfig(); dir = afsconf_Open(dirname); ok(dir != NULL, "Sucessfully opened brand new config directory"); if (dir == NULL) @@ -583,7 +583,7 @@ int main(int argc, char **argv) " ... with the right key"); out: - unlinkTestConfig(dirname); + afstest_UnlinkTestConfig(dirname); return 0; } diff --git a/tests/auth/superuser-t.c b/tests/auth/superuser-t.c index c2ebbc6f1..dae89c1dc 100644 --- a/tests/auth/superuser-t.c +++ b/tests/auth/superuser-t.c @@ -457,7 +457,7 @@ int main(int argc, char **argv) /* Otherwise, do the basic configuration, then start the client and * server */ - dirname = buildTestConfig(); + dirname = afstest_BuildTestConfig(); dir = afsconf_Open(dirname); if (dir == NULL) { diff --git a/tests/common/Makefile.in b/tests/common/Makefile.in new file mode 100644 index 000000000..225d06a29 --- /dev/null +++ b/tests/common/Makefile.in @@ -0,0 +1,12 @@ + +srcdir=@srcdir@ +abs_top_builddir=@abs_top_builddir@ +include @TOP_OBJDIR@/src/config/Makefile.config +include @TOP_OBJDIR@/src/config/Makefile.pthread + +MODULE_CFLAGS=-I$(srcdir)/.. + +all check test tests: config.o + +clean: + rm -f *.o diff --git a/tests/common/common.h b/tests/common/common.h new file mode 100644 index 000000000..9f8fe2ba7 --- /dev/null +++ b/tests/common/common.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010 Your File System Inc. 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. + */ + +extern char *afstest_BuildTestConfig(void); +extern void afstest_UnlinkTestConfig(char *); diff --git a/tests/common/config.c b/tests/common/config.c new file mode 100644 index 000000000..1170240dd --- /dev/null +++ b/tests/common/config.c @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2010 Your File System Inc. 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 functions for building a configuration directory + */ + +#include +#include +#include + +#include + +#include "common.h" + +static FILE * +openConfigFile(char *dirname, char *filename) { + char *path = NULL; + FILE *file; + + if (asprintf(&path, "%s/%s", dirname, filename) == -1) + return NULL; + + file = fopen(path, "w"); + free(path); + return file; +} + +static void +unlinkConfigFile(char *dirname, char *filename) { + char *path; + + if (asprintf(&path, "%s/%s", dirname, filename) != -1) { + unlink(path); + free(path); + } +} + +/*! + * Build a test configuration directory, containing a CellServDB and ThisCell + * file for the "example.org" cell + * + * @return + * The path to the configuration directory. This should be freed by the caller + * using free() + * + */ + +char * +afstest_BuildTestConfig(void) { + char *dir = NULL; + FILE *file; + + if (asprintf(&dir, "%s/afs_XXXXXX", gettmpdir()) == -1) + goto fail; + + if (mkdtemp(dir) == NULL) + goto fail; + + /* Create a CellServDB */ + file = openConfigFile(dir, "CellServDB"); + fprintf(file, ">example.org # An example cell\n"); + fprintf(file, "127.0.0.1 #test.example.org\n"); + fclose(file); + + /* Create a ThisCell file */ + file = openConfigFile(dir, "ThisCell"); + fprintf(file, "example.org"); + fclose(file); + + return dir; + +fail: + if (dir) + free(dir); + return NULL; +} + +/*! + * Delete at test configuration directory + */ + +void +afstest_UnlinkTestConfig(char *dir) +{ + unlinkConfigFile(dir, "KeyFile"); + unlinkConfigFile(dir, "CellServDB"); + unlinkConfigFile(dir, "ThisCell"); + unlinkConfigFile(dir, "UserList"); + rmdir(dir); +}