struct afsconf_typedKey *key;
int code = 0;
struct afsconf_bsso_info bsso;
+ struct afstest_configinfo bct;
memset(&bsso, 0, sizeof(bsso));
+ memset(&bct, 0, sizeof(bct));
afstest_SkipTestsIfBadHostname();
plan(8);
- dirname = afstest_BuildTestConfig();
+
+ bct.skipkeys = 1;
+ dirname = afstest_BuildTestConfig(&bct);
dir = afsconf_Open(dirname);
if (dir == NULL) {
struct rx_opaque *keyMaterial;
struct afsconf_typedKey *typedKey;
struct afsconf_typedKeyList *typedKeyList;
+ struct afstest_configinfo bct;
char *dirname;
char *keyfile;
char *keyfilesrc;
int code;
int i;
+ memset(&bct, 0, sizeof(bct));
+
afstest_SkipTestsIfBadHostname();
plan(134);
/* Create a temporary afs configuration directory */
- dirname = afstest_BuildTestConfig();
+ bct.skipkeys = 1;
+ dirname = afstest_BuildTestConfig(&bct);
keyfile = afstest_asprintf("%s/KeyFile", dirname);
free(keyfile);
/* Start a new test configuration */
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(&bct);
dir = afsconf_Open(dirname);
ok(dir != NULL, "Sucessfully opened brand new config directory");
if (dir == NULL)
char *dirname;
/* run edge case tests */
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
dir = afsconf_Open(dirname);
if (dir == NULL) {
fprintf(stderr, "Unable to configure directory.\n");
char *dirname;
/* run tests without config files */
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
dir = afsconf_Open(dirname);
if (dir == NULL) {
fprintf(stderr, "Unable to configure directory.\n");
char *dirname;
/* run tests with config files */
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
write_krb_conf(dirname, "MY.REALM.ORG MY.OTHER.REALM.ORG");
write_krb_excl(dirname);
dir = afsconf_Open(dirname);
ok(afsconf_SetLocalRealm("MY.OTHER.REALM.ORG") == 0, "set local realm MY.OTHER.REALM.ORG");
/* run tests without config files */
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
dir = afsconf_Open(dirname);
if (dir == NULL) {
fprintf(stderr, "Unable to configure directory.\n");
char *dirname;
afs_int32 local = -1;
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
write_krb_conf(dirname, "SOME.REALM.ORG");
dir = afsconf_Open(dirname);
if (dir == NULL) {
struct afsconf_dir *dir;
char *dirname;
int serverPid, clientPid, waited, stat;
- int code;
int ret = 0;
sigset_t set;
char *argv0 = afstest_GetProgname(argv);
sigaddset(&set, SIGUSR1);
opr_Verify(sigprocmask(SIG_BLOCK, &set, NULL) == 0);
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
dir = afsconf_Open(dirname);
if (dir == NULL) {
goto out;
}
- code = afstest_AddDESKeyFile(dir);
- if (code) {
- afs_com_err(argv0, code, "while adding new key\n");
- ret = 1;
- goto out;
- }
-
printf("Config directory is %s\n", dirname);
serverPid = fork();
if (serverPid == -1) {
char *keyfile = NULL;
int in, out;
size_t len;
+ struct afstest_configinfo bct;
- dirname = afstest_BuildTestConfig();
+ memset(&bct, 0, sizeof(bct));
+
+ bct.skipkeys = 1;
+
+ dirname = afstest_BuildTestConfig(&bct);
if (dirname == NULL) {
fprintf(stderr, "Unable to create tmp config dir\n");
exit(1);
*/
/* config.c */
-extern char *afstest_BuildTestConfig(void);
+
+struct afstest_configinfo {
+ /* Skip adding keys to the created conf dir. */
+ int skipkeys;
+};
+extern char *afstest_BuildTestConfig(struct afstest_configinfo *info);
struct afsconf_dir;
extern int afstest_AddDESKeyFile(struct afsconf_dir *dir);
/*!
* Build a test configuration directory, containing a CellServDB and ThisCell
- * file for the "example.org" cell
+ * file for the "example.org" cell. Also populates the KeyFile unless
+ * info->skipkeys is set.
*
+ * @param[in] info Various details for how to create the config dir. If NULL,
+ * use a default zeroed struct.
* @return
* The path to the configuration directory. This should be freed by the caller
* using free()
- *
*/
-
char *
-afstest_BuildTestConfig(void) {
+afstest_BuildTestConfig(struct afstest_configinfo *info)
+{
char *dir = NULL;
FILE *file;
+ struct afsconf_dir *confdir = NULL;
+ struct afstest_configinfo info_defaults;
struct in_addr iaddr;
+ int code;
+ memset(&info_defaults, 0, sizeof(info_defaults));
memset(&iaddr, 0, sizeof(iaddr));
+ if (info == NULL) {
+ info = &info_defaults;
+ }
+
dir = afstest_mkdtemp();
if (dir == NULL) {
- goto fail;
+ goto error;
}
/* Work out which IP address to use in our CellServDB. We figure this out
fprintf(file, "example.org");
fclose(file);
+ if (!info->skipkeys) {
+ confdir = afsconf_Open(dir);
+ if (confdir == NULL) {
+ goto error;
+ }
+
+ code = afstest_AddDESKeyFile(confdir);
+ if (code != 0) {
+ goto error;
+ }
+
+ afsconf_Close(confdir);
+ confdir = NULL;
+ }
+
return dir;
-fail:
- if (dir)
+ error:
+ if (confdir != NULL) {
+ afsconf_Close(confdir);
+ }
+ if (dir != NULL) {
+ afstest_rmdtemp(dir);
free(dir);
+ }
return NULL;
}
code = rx_Init(0);
- dirname = afstest_BuildTestConfig();
+ dirname = afstest_BuildTestConfig(NULL);
dir = afsconf_Open(dirname);
- code = afstest_AddDESKeyFile(dir);
- if (code) {
- afs_com_err(argv0, code, "while adding test DES keyfile");
- ret = 1;
- goto out;
- }
-
code = afstest_StartVLServer(dirname, &serverPid);
if (code) {
afs_com_err(argv0, code, "while starting the vlserver");