mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
403 lines
8.6 KiB
403 lines
8.6 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
gnmbytp.c
|
|
|
|
Abstract:
|
|
|
|
Service Registration and Resolution APIs tests
|
|
|
|
GetNameByType() API
|
|
GetTypeByName() API
|
|
|
|
Author:
|
|
|
|
Hui-Li Chen (hui-lich) Microsoft, June 14, 1994
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "wsnsp.h"
|
|
#include "gnmbytp.h"
|
|
|
|
TEST_PROTO gTest = TEST_TCP;
|
|
int var = 0, failed = 0, passed = 0;
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// main funcion
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
VOID _CRTAPI1 main( int argc, char *argv[] )
|
|
{
|
|
WSADATA wsaData;
|
|
WORD wVersion;
|
|
|
|
if ( !ParseOptions( argc, argv ) )
|
|
Usage();
|
|
|
|
CreateLogFile(gsLogName);
|
|
|
|
wVersion = MAKEWORD( 1, 1);
|
|
if ( WSAStartup( wVersion, &wsaData ) != 0 )
|
|
{
|
|
Print("Error calling WSAStartup. Error=%d\n", GetLastError());
|
|
ExitProcess( 0 );
|
|
}
|
|
|
|
Print("API tests for GetNameByType & GetTypeByName\n");
|
|
Test_GetNameByType_GetTypeByName();
|
|
|
|
End_Of_Tests( var, passed, failed );
|
|
|
|
WSACleanup();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Test_GetNameByType
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Test_GetNameByType_GetTypeByName( void )
|
|
{
|
|
|
|
Small_Buf();
|
|
|
|
All_are_Valid();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Small_Buf
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Small_Buf( void )
|
|
{
|
|
|
|
TCHAR sServiceName[256];
|
|
TCHAR sServiceSmallName[1];
|
|
GUID guid = SVCID_HOSTNAME;
|
|
DWORD dwBufSize;
|
|
|
|
dwBufSize = 1*sizeof(TCHAR);
|
|
Print( "\nVariation %d: pass small sServiceName and small dwBufSize\n", ++var );
|
|
Call_GetNameByType( -1, ERROR_INSUFFICIENT_BUFFER, &guid, sServiceSmallName, dwBufSize );
|
|
|
|
dwBufSize = 1*sizeof(TCHAR);
|
|
Print( "\nVariation %d: pass small dwBufSize\n", ++var );
|
|
Call_GetNameByType( -1, ERROR_INSUFFICIENT_BUFFER, &guid, sServiceName, dwBufSize );
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// All_are_Valid
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void All_are_Valid( void )
|
|
{
|
|
|
|
GUID guid = SVCID_HOSTNAME;
|
|
|
|
Test_Type( 0, 0, &guid );
|
|
|
|
switch( gTest )
|
|
{
|
|
case TEST_TCP:
|
|
Test_TCP();
|
|
break;
|
|
|
|
case TEST_NW:
|
|
Test_NW();
|
|
break;
|
|
|
|
default:
|
|
Print("In All_are_Valid, should not hit here!\n");
|
|
break;
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Test_Type
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Test_Type(
|
|
int expRet,
|
|
DWORD expErr,
|
|
LPGUID pGUID )
|
|
{
|
|
|
|
TCHAR sServiceName[256];
|
|
GUID retguid;
|
|
DWORD dwBufSize = 256*sizeof(TCHAR);
|
|
|
|
Print( "\nVariation %d: pass valid type\n", ++var );
|
|
Call_GetNameByType( expRet, expErr, pGUID, sServiceName, dwBufSize );
|
|
|
|
Print( "\nVariation %d: pass valid name\n", ++var );
|
|
Call_GetTypeByName( expRet, expErr, sServiceName, &retguid );
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Test_TCP
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Test_TCP( void )
|
|
{
|
|
|
|
GUID guid0 = SVCID_HOSTNAME;
|
|
GUID guid1 = SVCID_FTP_DATA_TCP;
|
|
GUID guid2 = SVCID_SUPDUP_TCP;
|
|
GUID guid3 = SVCID_HOSTNAMES_TCP;
|
|
GUID guid4 = SVCID_MANTST_TCP;
|
|
GUID guid5 = SVCID_GATEWAY_TCP;
|
|
GUID guid6 = SVCID_WHO_UDP;
|
|
GUID guid7 = SVCID_PHONE_UDP;
|
|
GUID guid8 = SVCID_QMASTER_UDP;
|
|
GUID guid9 = SVCID_RSCS6_UDP;
|
|
|
|
Test_Type( 0, 0, &guid0 );
|
|
Test_Type( 0, 0, &guid1 );
|
|
Test_Type( 0, 0, &guid2 );
|
|
Test_Type( 0, 0, &guid3 );
|
|
Test_Type( 0, 0, &guid4 );
|
|
Test_Type( 0, 0, &guid5 );
|
|
Test_Type( 0, 0, &guid6 );
|
|
Test_Type( 0, 0, &guid7 );
|
|
Test_Type( 0, 0, &guid8 );
|
|
Test_Type( 0, 0, &guid9 );
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Test_NW
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Test_NW( void )
|
|
{
|
|
|
|
GUID guid0 = SVCID_GATEWAY;
|
|
GUID guid1 = SVCID_PRINT_SERVER;
|
|
GUID guid2 = SVCID_REMOTE_BRIDGE_SERVER;
|
|
GUID guid3 = SVCID_ADMINISTRATION;
|
|
GUID guid4 = SVCID_JOB_QUEUE;
|
|
GUID guid5 = SVCID_FILE_SERVER;
|
|
GUID guid6 = SVCID_NAS_SNA_GATEWAY;
|
|
GUID guid7 = SVCID_SNA_SERVER;
|
|
GUID guid8 = SVCID_SAA_SERVER;
|
|
|
|
|
|
Test_Type( 0, 0, &guid0 );
|
|
Test_Type( 0, 0, &guid1 );
|
|
Test_Type( 0, 0, &guid2 );
|
|
Test_Type( 0, 0, &guid3 );
|
|
Test_Type( 0, 0, &guid4 );
|
|
Test_Type( 0, 0, &guid5 );
|
|
Test_Type( 0, 0, &guid6 );
|
|
Test_Type( 0, 0, &guid7 );
|
|
Test_Type( 0, 0, &guid8 );
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Call_GetNameByType
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Call_GetNameByType(
|
|
int ExpectedReturn,
|
|
DWORD ExpectedError,
|
|
LPGUID pServiceType,
|
|
LPTSTR lpServiceName,
|
|
DWORD dwBufSize )
|
|
{
|
|
|
|
int r;
|
|
BOOL fPass = TRUE;
|
|
|
|
Print( "GetNameByType()\n");
|
|
Print( "\tpServiceType = 0x%08x\n"
|
|
"\tlpServiceName = 0x%08x\n"
|
|
"\tdwBufSize = 0x%08x\n",
|
|
pServiceType,
|
|
lpServiceName,
|
|
dwBufSize );
|
|
|
|
r = GetNameByType( pServiceType,
|
|
lpServiceName,
|
|
dwBufSize );
|
|
|
|
if ( r != ExpectedReturn )
|
|
{
|
|
if ( ExpectedReturn != 0x0FFF )
|
|
{
|
|
Print("VARIATION FAILED : expected return = %d, but actual return = %d\n",
|
|
ExpectedReturn,
|
|
r );
|
|
fPass = FALSE;
|
|
}
|
|
}
|
|
|
|
if ( r < 0 )
|
|
{
|
|
if ( GetLastError() != ExpectedError )
|
|
{
|
|
Print("VARIATION FAILED : expected error = %d, but actual error = %d\n",
|
|
ExpectedError,
|
|
GetLastError() );
|
|
fPass = FALSE;
|
|
}
|
|
}
|
|
|
|
if ( r >= 0 && lpServiceName )
|
|
Print_ServiceName( r, lpServiceName );
|
|
|
|
if ( fPass )
|
|
Print("VARIATION PASSED : expected/actual return = %d\n", r );
|
|
|
|
fPass ? passed++ : failed++;
|
|
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Call_GetTypeByName
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Call_GetTypeByName(
|
|
int ExpectedReturn,
|
|
DWORD ExpectedError,
|
|
LPTSTR lpServiceName,
|
|
LPGUID pServiceType )
|
|
{
|
|
|
|
int r;
|
|
BOOL fPass = TRUE;
|
|
char szProt[500];
|
|
|
|
Print( "GetTypeByName()\n");
|
|
Print( "\tpServiceType = 0x%08x\n", pServiceType );
|
|
|
|
if ( !lpServiceName )
|
|
{
|
|
Print( "\tlpServiceName = NULL\n" );
|
|
}
|
|
else
|
|
{
|
|
#ifdef UNICODE
|
|
WideCharToMultiByte(CP_ACP, 0, lpServiceName, -1,
|
|
szProt, 500, NULL, NULL);
|
|
#else
|
|
strcpy( szProt, lpServiceName );
|
|
#endif
|
|
|
|
Print( "\t*lpServiceName= %s\n", szProt);
|
|
}
|
|
|
|
r = GetTypeByName( lpServiceName,
|
|
pServiceType );
|
|
|
|
if ( r != ExpectedReturn )
|
|
{
|
|
if ( ExpectedReturn != 0x0FFF )
|
|
{
|
|
Print("VARIATION FAILED : expected return = %d, but actual return = %d\n",
|
|
ExpectedReturn,
|
|
r );
|
|
fPass = FALSE;
|
|
}
|
|
}
|
|
|
|
if ( r < 0 )
|
|
{
|
|
if ( GetLastError() != ExpectedError )
|
|
{
|
|
Print("VARIATION FAILED : expected error = %d, but actual error = %d\n",
|
|
ExpectedError,
|
|
GetLastError() );
|
|
fPass = FALSE;
|
|
}
|
|
}
|
|
|
|
if ( r >= 0 && lpServiceName )
|
|
Print_ServiceType( r, pServiceType );
|
|
|
|
if ( fPass )
|
|
Print("VARIATION PASSED : expected/actual return = %d\n", ExpectedReturn );
|
|
|
|
fPass ? passed++ : failed++;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Print_ServiceName
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Print_ServiceName(
|
|
int r,
|
|
LPTSTR lpServiceName )
|
|
{
|
|
char szProt[500];
|
|
|
|
#ifdef UNICODE
|
|
WideCharToMultiByte(CP_ACP, 0, lpServiceName, -1,
|
|
szProt, 500, NULL, NULL);
|
|
#else
|
|
strcpy( szProt, lpServiceName );
|
|
#endif
|
|
|
|
Print("GetNameByType return: ServiceName = %s\n", szProt );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Print_ServiceType
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Print_ServiceType(
|
|
int r,
|
|
LPGUID pServiceType )
|
|
{
|
|
Print("GetTypeByName return: pServiceType is %d\n",
|
|
*pServiceType);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Usage
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void Usage()
|
|
{
|
|
printf("Usage: gnmbytp -[TCP|NW] [-ol logname]\n");
|
|
ExitProcess ( 0 );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// End of gnmbytp.c
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|