From 799b3373ecfeebf790d71c6e5bf60b0845519b2d Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Mon, 30 May 2011 17:47:35 +0100 Subject: [PATCH] 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 --- Makefile.in | 1 + configure.ac | 1 + tests/Makefile.in | 2 +- tests/auth/Makefile.in | 16 +++---- tests/auth/authcon-t.c | 2 +- tests/auth/common.c | 112 ----------------------------------------------- tests/auth/common.h | 26 ----------- tests/auth/keys-t.c | 8 ++-- tests/auth/superuser-t.c | 2 +- tests/common/Makefile.in | 12 +++++ tests/common/common.h | 26 +++++++++++ tests/common/config.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 167 insertions(+), 153 deletions(-) delete mode 100644 tests/auth/common.c delete mode 100644 tests/auth/common.h create mode 100644 tests/common/Makefile.in create mode 100644 tests/common/common.h create mode 100644 tests/common/config.c diff --git a/Makefile.in b/Makefile.in index 1fd82ec..799f9aa 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 0df22bc..0aa3dba 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 3e17b51..550312c 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 e378b3c..b6c84be 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 1552f26..c9e968e 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 fb95955..0000000 --- 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 afe0b67..0000000 --- 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 ba7391e..19ab98a 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 c2ebbc6..dae89c1 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 0000000..225d06a --- /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 0000000..9f8fe2b --- /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 0000000..1170240 --- /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); +} -- 1.9.4