188 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /***********************************************************************
 | |
|  * 
 | |
|  *  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 <jluciani@novell.com>
 | |
|  *
 | |
|  ***********************************************************************/
 | |
| 
 | |
| #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;
 | |
| }
 | |
| 
 | |
| 
 |