superuser-t: superuser-t.o ../common/config.o ../common/rxkad.o \
test.cs.o test.ss.o test.xdr.o
$(AFS_LDRULE) superuser-t.o ../common/config.o ../common/rxkad.o \
+ ../common/servers.o \
test.cs.o test.ss.o test.xdr.o \
$(MODULE_LIBS)
return 0;
}
-void
-startServer(char *configPath)
-{
- struct rx_securityClass **classes;
- afs_int32 numClasses;
- int code;
- struct rx_service *service;
-
- globalDir = afsconf_Open(configPath);
- if (globalDir == NULL) {
- fprintf(stderr, "Server: Unable to open config directory\n");
- exit(1);
- }
-
- code = rx_Init(htons(TEST_PORT));
- if (code != 0) {
- fprintf(stderr, "Server: Unable to initialise RX\n");
- exit(1);
- }
-
- afsconf_BuildServerSecurityObjects(globalDir, &classes, &numClasses);
- service = rx_NewService(0, TEST_SERVICE_ID, "test", classes, numClasses,
- TEST_ExecuteRequest);
- if (service == NULL) {
- fprintf(stderr, "Server: Unable to start to test service\n");
- exit(1);
- }
-
- rx_StartServer(1);
-}
-
int main(int argc, char **argv)
{
struct afsconf_dir *dir;
if (argc == 3 ) {
if (strcmp(argv[1], "-server") == 0) {
- startServer(argv[2]);
+ globalDir = afsconf_Open(argv[2]);
+ afstest_StartTestRPCService(argv[2], TEST_PORT, TEST_SERVICE_ID,
+ TEST_ExecuteRequest);
exit(0);
} else if (strcmp(argv[1], "-client") == 0) {
startClient(argv[2]);
afs_uint32 startTime, afs_uint32 endTime);
/* servers.c */
+struct rx_call;
extern int afstest_StartVLServer(char *dirname, pid_t *serverPid);
extern int afstest_StopServer(pid_t serverPid);
+extern int afstest_StartTestRPCService(const char *, u_short, u_short,
+ afs_int32 (*proc)(struct rx_call *));
/* ubik.c */
struct ubik_client;
#include <sys/wait.h>
#endif
+#include <rx/rx.h>
+
+#include <afs/cellconfig.h>
+
#include "common.h"
/* Start up the VLserver, using the configuration in dirname, and putting our
}
return 0;
}
+
+int
+afstest_StartTestRPCService(const char *configPath,
+ u_short port,
+ u_short serviceId,
+ afs_int32 (*proc) (struct rx_call *))
+{
+ struct afsconf_dir *dir;
+ struct rx_securityClass **classes;
+ afs_int32 numClasses;
+ int code;
+ struct rx_service *service;
+
+ dir = afsconf_Open(configPath);
+ if (dir == NULL) {
+ fprintf(stderr, "Server: Unable to open config directory\n");
+ return -1;
+ }
+
+ code = rx_Init(htons(port));
+ if (code != 0) {
+ fprintf(stderr, "Server: Unable to initialise RX\n");
+ return -1;
+ }
+
+ afsconf_BuildServerSecurityObjects(dir, &classes, &numClasses);
+ service = rx_NewService(0, serviceId, "test", classes, numClasses,
+ proc);
+ if (service == NULL) {
+ fprintf(stderr, "Server: Unable to start to test service\n");
+ return -1;
+ }
+
+ rx_StartServer(1);
+
+ return 0; /* Not reached, we donated ourselves to StartServer */
+}