/*********************************************************************** * * Copyright (C) 2006 Novell, Inc. All Rights Reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2.1 * of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, Novell, Inc. * * To contact Novell about this file by physical or electronic mail, * you may find current contact information at www.novell.com. * * Author: Juan Carlos Luciani * ***********************************************************************/ #include "platform.h" // Extern functions extern void NonHttpTest(void); extern void HttpTest(void); // Globals char usageString[] = "usage: test -a serverAddress -p serverPort [-s serviceName] [-h]\n"; char *pServerAddress = NULL; int serverPort = 0; BOOLEAN execHttpTest = FALSE; char serviceName[] = "testService"; char *pServiceName = serviceName; /*********************************************************************** * * dtoul() * ***********************************************************************/ int dtoul( IN char *cp, IN int len) { int n = 0; int i; for (i = 0; i < len; i++, cp++) { // Verify that we are dealing with a valid digit if (*cp >= '0' && *cp <= '9') { n = 10 * n + (*cp - '0'); } else { printf("-dtoul- Found invalid digit\n"); break; } } return n; } /*********************************************************************** * * main() * ***********************************************************************/ int main(int argc, char* argv[]) { // Process input parameters int i = 1; while(argv[i] != NULL) { if (stricmp(argv[i], "-a") == 0) { // Server Address option, the next argument should // contain the address. i++; if (argv[i] != NULL) { pServerAddress = argv[i]; } else { printf(usageString); return -1; } } else if (stricmp(argv[i], "-p") == 0) { // Server port option, the next argument should // contain the port. i++; if (argv[i] != NULL) { serverPort = htons(dtoul(argv[i], (int) strlen(argv[i]))); } else { printf(usageString); return -1; } } else if (stricmp(argv[i], "-s") == 0) { // Service name option, the next argument should // contain the name of the service to be targeted. i++; if (argv[i] != NULL) { pServiceName = argv[i]; } else { printf(usageString); return -1; } } else if (stricmp(argv[i], "-h") == 0) { // Perform http test option execHttpTest = TRUE; } // Advance to the next argument i++; } // Verify that the server address and port were specified if (pServerAddress && serverPort != 0) { int winsockStartupResult; WSADATA winsockData; // First initialize winsock if ((winsockStartupResult = WSAStartup(MAKEWORD(2,2), &winsockData)) == 0) { // Repeat the test when indicated printf("Press 'Enter' to run test or 'n + Enter' to stop.\n"); while(getchar() != 'n') { // Execute the appropriate test if (execHttpTest) { HttpTest(); } else { NonHttpTest(); } printf("Press 'Enter' to run test or 'n + Enter' to stop.\n"); } // Close winsock WSACleanup(); } else { printf("-main- WSAStartup failed, error = %d\n", winsockStartupResult); } } else { printf(usageString); return -1; } return 0; }