From 2ce3fdc5dc888693c8a7698aae7805a7d4dee145 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Fri, 20 Apr 2012 15:34:26 +0100 Subject: [PATCH] tests: Abstract out code to produce a Ubik client Abstract out the code which the volser test uses to produce a ubik client so that it can be used to test other ubik services Change-Id: I800fda9e53ad45c91f3de8eceea387cc011dda3c Reviewed-on: http://gerrit.openafs.org/7257 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- tests/common/Makefile.in | 2 +- tests/common/common.h | 8 +++++++ tests/common/ubik.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/volser/Makefile.in | 4 ++-- tests/volser/vos-t.c | 27 +++++++-------------- 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 tests/common/ubik.c diff --git a/tests/common/Makefile.in b/tests/common/Makefile.in index 29b33e3..7c6c9ab 100644 --- a/tests/common/Makefile.in +++ b/tests/common/Makefile.in @@ -6,7 +6,7 @@ include @TOP_OBJDIR@/src/config/Makefile.pthread MODULE_CFLAGS=-I$(srcdir)/.. -all check test tests: config.o servers.o +all check test tests: config.o servers.o ubik.o clean: rm -f *.o diff --git a/tests/common/common.h b/tests/common/common.h index 6109b19..fcc4113 100644 --- a/tests/common/common.h +++ b/tests/common/common.h @@ -33,3 +33,11 @@ extern int afstest_AddDESKeyFile(struct afsconf_dir *dir); extern int afstest_StartVLServer(char *dirname, pid_t *serverPid); extern int afstest_StopVLServer(pid_t serverPid); + +/* ubik.c */ +struct ubik_client; +extern int afstest_GetUbikClient(struct afsconf_dir *dir, char *service, + int serviceId, + struct rx_securityClass *secClass, + int secIndex, + struct ubik_client **ubikClient); diff --git a/tests/common/ubik.c b/tests/common/ubik.c new file mode 100644 index 0000000..fcb1923 --- /dev/null +++ b/tests/common/ubik.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012 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. + */ + +#include +#include + +#include + +#include +#include + +#include "common.h" + +int +afstest_GetUbikClient(struct afsconf_dir *dir, char *service, + int serviceId, + struct rx_securityClass *secClass, int secIndex, + struct ubik_client **ubikClient) +{ + int code, i; + struct afsconf_cell info; + struct rx_connection *serverconns[MAXSERVERS]; + + code = afsconf_GetCellInfo(dir, NULL, service, &info); + if (code) + return code; + + for (i = 0; i < info.numServers; i++) { + serverconns[i] = rx_NewConnection(info.hostAddr[i].sin_addr.s_addr, + info.hostAddr[i].sin_port, + serviceId, + secClass, secIndex); + } + + serverconns[i] = NULL; + + *ubikClient = NULL; + + return ubik_ClientInit(serverconns, ubikClient); + +} diff --git a/tests/volser/Makefile.in b/tests/volser/Makefile.in index dc495f7..15f9def 100644 --- a/tests/volser/Makefile.in +++ b/tests/volser/Makefile.in @@ -24,9 +24,9 @@ MODULE_LIBS = ../tap/libtap.a \ $(LIB_rfc3961) $(LIB_roken) -lafsutil\ $(XLIBS) -vos-t: vos-t.o ../common/config.o ../common/servers.o +vos-t: vos-t.o ../common/config.o ../common/servers.o ../common/ubik.o $(AFS_LDRULE) vos-t.o ../common/config.o ../common/servers.o \ - $(MODULE_LIBS) + ../common/ubik.o $(MODULE_LIBS) clean: rm -f *.o $(TESTS) diff --git a/tests/volser/vos-t.c b/tests/volser/vos-t.c index e64e300..a247e0e 100644 --- a/tests/volser/vos-t.c +++ b/tests/volser/vos-t.c @@ -81,14 +81,10 @@ main(int argc, char **argv) { char *dirname; struct afsconf_dir *dir; - struct afsconf_cell info; - int code; - int i; + int code, secIndex; pid_t serverPid; struct rx_securityClass *secClass; - struct rx_connection *serverconns[MAXSERVERS]; struct ubik_client *ubikClient = NULL; - int secIndex; plan(6); @@ -112,27 +108,20 @@ main(int argc, char **argv) /* Let it figure itself out ... */ sleep(5); - code = afsconf_ClientAuthSecure(dir, &secClass, &secIndex); + is_int(code, 0, "Successfully got security class"); if (code) { - afs_com_err("vos-t", code, "while getting a fake token"); - exit(1); + afs_com_err("authname-t", code, "while getting anonymous secClass"); + exit(1); } - code = afsconf_GetCellInfo(dir, NULL, AFSCONF_VLDBSERVICE, &info); + code = afstest_GetUbikClient(dir, AFSCONF_VLDBSERVICE, USER_SERVICE_ID, + secClass, secIndex, &ubikClient); + is_int(code, 0, "Successfully built ubik client structure"); if (code) { - afs_com_err("vos-t", code, " while getting addresses from cellservdb"); + afs_com_err("vos-t", code, "while building ubik client"); exit(1); } - ok(info.numServers < MAXSERVERS, "Number of servers is within range"); - - for (i = 0; i < info.numServers; i++) - serverconns[i] = rx_NewConnection(info.hostAddr[i].sin_addr.s_addr, - info.hostAddr[i].sin_port, - USER_SERVICE_ID, - secClass, secIndex); - - code = ubik_ClientInit(serverconns, &ubikClient); TestListAddrs(ubikClient, dirname); -- 1.9.4