2006-11-13 06:20:43 +01:00
|
|
|
/***********************************************************************
|
|
|
|
*
|
|
|
|
* 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");
|
|
|
|
}
|
|
|
|
|
2007-04-13 21:21:40 +02:00
|
|
|
// Cleanup the AuthToken cache to start clean the next time that
|
|
|
|
// we run the test application.
|
|
|
|
CleanUpAuthTokenCache();
|
|
|
|
|
2006-11-13 06:20:43 +01:00
|
|
|
// Close winsock
|
|
|
|
WSACleanup();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
printf("-main- WSAStartup failed, error = %d\n", winsockStartupResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
printf(usageString);
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|