352 lines
7.8 KiB
C
352 lines
7.8 KiB
C
/*++
|
||
|
||
Copyright (c) 1993-2000 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
dceclnt.c
|
||
|
||
Abstract:
|
||
|
||
This is the client side of the test program for newndr.dll.
|
||
|
||
Author:
|
||
|
||
Michael Montague (mikemon) 13-Apr-1993
|
||
|
||
Revision History:
|
||
|
||
RyszardK Nov 30, 1993 Added tests for rpc_sm* package.
|
||
RyszardK Jan 3, 1993 Carved out this independent test for newndr
|
||
|
||
|
||
--*/
|
||
|
||
#include <sysinc.h>
|
||
#include <rpc.h>
|
||
#include "rpcndr.h"
|
||
|
||
void
|
||
ApiError (
|
||
char * TestName,
|
||
char * ApiName,
|
||
RPC_STATUS RpcStatus
|
||
)
|
||
{
|
||
PrintToConsole(" ApiError in %s (%s = %u [%lx])\n", TestName, ApiName,
|
||
RpcStatus, RpcStatus);
|
||
}
|
||
|
||
unsigned int MississippiBlockCount = 0;
|
||
unsigned int VistulaBlockCount = 0;
|
||
|
||
void *
|
||
MississippiAllocate (
|
||
unsigned long Size
|
||
)
|
||
{
|
||
MississippiBlockCount += 1;
|
||
return(I_RpcAllocate((unsigned int) Size));
|
||
}
|
||
|
||
void
|
||
MississippiFree (
|
||
void * Pointer
|
||
)
|
||
{
|
||
MississippiBlockCount -= 1;
|
||
I_RpcFree(Pointer);
|
||
}
|
||
|
||
void *
|
||
VistulaAllocate (
|
||
unsigned long Size
|
||
)
|
||
{
|
||
VistulaBlockCount += 1;
|
||
return(I_RpcAllocate((unsigned int) Size));
|
||
}
|
||
|
||
void
|
||
VistulaFree (
|
||
void * Pointer
|
||
)
|
||
{
|
||
VistulaBlockCount -= 1;
|
||
I_RpcFree(Pointer);
|
||
}
|
||
|
||
#define MISSISSIPPI_MAXIMUM 256
|
||
#define VISTULA_MAXIMUM 4
|
||
|
||
void * __RPC_API
|
||
MIDL_user_allocate (
|
||
size_t Size
|
||
);
|
||
|
||
void __RPC_API
|
||
MIDL_user_free (
|
||
void * Buffer
|
||
);
|
||
|
||
|
||
void
|
||
Mississippi (
|
||
)
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
We will test the memory allocator, both client and server, in this routine.
|
||
|
||
--*/
|
||
{
|
||
unsigned int Count, Iterations;
|
||
void * Pointer;
|
||
// void * AllocatedBlocks[MISSISSIPPI_MAXIMUM];
|
||
unsigned int MississippiPassed = 1;
|
||
|
||
PrintToConsole("Mississippi : Test Ss* Memory Allocation\n");
|
||
|
||
RpcTryExcept
|
||
{
|
||
for (Iterations = 1; Iterations < 64; Iterations++)
|
||
{
|
||
PrintToConsole(".");
|
||
RpcSsEnableAllocate();
|
||
|
||
for (Count = 0; Count < 2048; Count++)
|
||
{
|
||
Pointer = RpcSsAllocate(Count);
|
||
if ( Count % Iterations == 0 )
|
||
{
|
||
RpcSsFree(Pointer);
|
||
}
|
||
}
|
||
|
||
RpcSsDisableAllocate();
|
||
}
|
||
PrintToConsole("\n");
|
||
}
|
||
RpcExcept(1)
|
||
{
|
||
PrintToConsole("Mississippi : FAIL - Exception %d (%lx)\n",
|
||
RpcExceptionCode(), RpcExceptionCode());
|
||
MississippiPassed = 0;
|
||
}
|
||
RpcEndExcept
|
||
|
||
#if 0
|
||
RpcTryExcept
|
||
{
|
||
for (Count = 0; Count < MISSISSIPPI_MAXIMUM; Count++)
|
||
{
|
||
AllocatedBlocks[Count] = MIDL_user_allocate(Count);
|
||
}
|
||
|
||
for (Count = 0; Count < MISSISSIPPI_MAXIMUM; Count++)
|
||
{
|
||
MIDL_user_free(AllocatedBlocks[Count]);
|
||
}
|
||
|
||
RpcSsSetClientAllocFree(MississippiAllocate, MississippiFree);
|
||
|
||
for (Count = 0; Count < MISSISSIPPI_MAXIMUM; Count++)
|
||
{
|
||
AllocatedBlocks[Count] = MIDL_user_allocate(Count);
|
||
}
|
||
|
||
if ( MississippiBlockCount != MISSISSIPPI_MAXIMUM )
|
||
{
|
||
PrintToConsole("Mississippi : FAIL - ");
|
||
PrintToConsole("MississippiBlockCount != MISSISSIPPI_MAXIMUM\n");
|
||
MississippiPassed = 0;
|
||
}
|
||
|
||
for (Count = 0; Count < MISSISSIPPI_MAXIMUM; Count++)
|
||
{
|
||
MIDL_user_free(AllocatedBlocks[Count]);
|
||
}
|
||
|
||
if ( MississippiBlockCount != 0 )
|
||
{
|
||
PrintToConsole("Mississippi : FAIL - ");
|
||
PrintToConsole("MississippiBlockCount != 0");
|
||
PrintToConsole(" (%d)\n", MississippiBlockCount );
|
||
MississippiPassed = 0;
|
||
}
|
||
}
|
||
RpcExcept(1)
|
||
{
|
||
PrintToConsole("Mississippi : FAIL - Exception %d (%lx)\n",
|
||
RpcExceptionCode(), RpcExceptionCode());
|
||
MississippiPassed = 0;
|
||
}
|
||
RpcEndExcept
|
||
#endif
|
||
|
||
if ( MississippiPassed != 0 )
|
||
{
|
||
PrintToConsole("Mississippi : PASS\n");
|
||
}
|
||
}
|
||
|
||
|
||
void
|
||
Vistula (
|
||
)
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
We will test the memory allocator in this routine.
|
||
This is cloned from the Mississippi bvt case.
|
||
|
||
--*/
|
||
{
|
||
unsigned int Count, Iterations;
|
||
void * Pointer;
|
||
// void * AllocatedBlocks[VISTULA_MAXIMUM];
|
||
RPC_SS_THREAD_HANDLE ThreadHandle = 0;
|
||
unsigned int VistulaPassed = 1;
|
||
RPC_STATUS Status;
|
||
int Result = 0;
|
||
|
||
PrintToConsole("Vistula : Test Sm* Memory Allocation\n");
|
||
|
||
RpcTryExcept
|
||
{
|
||
for (Iterations = 1; Iterations < 64; Iterations++)
|
||
{
|
||
PrintToConsole(".");
|
||
ThreadHandle = RpcSmGetThreadHandle( &Status );
|
||
if ( ThreadHandle != 0 )
|
||
PrintToConsole("H");
|
||
if ( RpcSmEnableAllocate() != RPC_S_OK )
|
||
{
|
||
Result++;
|
||
PrintToConsole("!");
|
||
}
|
||
ThreadHandle = RpcSmGetThreadHandle( &Status );
|
||
if ( ThreadHandle == 0 )
|
||
PrintToConsole("h");
|
||
|
||
for (Count = 0; Count < 2048; Count++)
|
||
{
|
||
Pointer = RpcSmAllocate( Count, &Status );
|
||
if ( Status != RPC_S_OK )
|
||
{
|
||
Result++;
|
||
PrintToConsole("a");
|
||
}
|
||
|
||
if ( Count % Iterations == 0 )
|
||
{
|
||
Status = RpcSmFree(Pointer);
|
||
if ( Status != RPC_S_OK )
|
||
{
|
||
Result++;
|
||
PrintToConsole("f");
|
||
}
|
||
}
|
||
}
|
||
|
||
if ( RpcSmDisableAllocate() != RPC_S_OK )
|
||
{
|
||
Result++;
|
||
PrintToConsole("?");
|
||
}
|
||
|
||
}
|
||
PrintToConsole("\n");
|
||
}
|
||
RpcExcept(1)
|
||
{
|
||
PrintToConsole("Vistula : FAIL - Exception %d (%lx)\n",
|
||
RpcExceptionCode(), RpcExceptionCode());
|
||
VistulaPassed = 0;
|
||
}
|
||
RpcEndExcept
|
||
|
||
if ( Result )
|
||
{
|
||
PrintToConsole("Vistula : FAIL - %d\n", Result );
|
||
VistulaPassed = 0;
|
||
}
|
||
|
||
#if 0
|
||
RpcTryExcept
|
||
{
|
||
for (Count = 0; Count < VISTULA_MAXIMUM; Count++)
|
||
{
|
||
AllocatedBlocks[Count] = MIDL_user_allocate(Count);
|
||
}
|
||
|
||
for (Count = 0; Count < VISTULA_MAXIMUM; Count++)
|
||
{
|
||
MIDL_user_free(AllocatedBlocks[Count]);
|
||
}
|
||
|
||
Status = RpcSmSetClientAllocFree( VistulaAllocate, VistulaFree);
|
||
|
||
for (Count = 0; Count < VISTULA_MAXIMUM; Count++)
|
||
{
|
||
AllocatedBlocks[Count] = MIDL_user_allocate(Count);
|
||
}
|
||
|
||
if ( Status != RPC_S_OK ||
|
||
VistulaBlockCount != VISTULA_MAXIMUM )
|
||
{
|
||
PrintToConsole("Vistula : FAIL - ");
|
||
PrintToConsole("VistulaBlockCount != VISTULA_MAXIMUM\n");
|
||
VistulaPassed = 0;
|
||
}
|
||
|
||
for (Count = 0; Count < VISTULA_MAXIMUM; Count++)
|
||
{
|
||
MIDL_user_free(AllocatedBlocks[Count]);
|
||
}
|
||
|
||
if ( VistulaBlockCount != 0 )
|
||
{
|
||
PrintToConsole("Vistula : FAIL - ");
|
||
PrintToConsole("VistulaBlockCount != 0\n");
|
||
VistulaPassed = 0;
|
||
}
|
||
}
|
||
RpcExcept(1)
|
||
{
|
||
PrintToConsole("Vistula : FAIL - Exception %d (%lx)\n",
|
||
RpcExceptionCode(), RpcExceptionCode());
|
||
VistulaPassed = 0;
|
||
}
|
||
RpcEndExcept
|
||
#endif
|
||
|
||
if ( VistulaPassed != 0 )
|
||
{
|
||
PrintToConsole("Vistula : PASS\n");
|
||
}
|
||
}
|
||
|
||
|
||
#ifdef NTENV
|
||
int __cdecl
|
||
#else // NTENV
|
||
int
|
||
#endif // NTENV
|
||
main (
|
||
int argc,
|
||
char * argv[]
|
||
)
|
||
{
|
||
Mississippi();
|
||
Vistula();
|
||
|
||
// To keep the compiler happy. There is nothing worse than an unhappy
|
||
// compiler.
|
||
|
||
return(0);
|
||
}
|
||
|