Init
This commit is contained in:
348
Samples/Tests/SystemAddressAndGuidTest.cpp
Normal file
348
Samples/Tests/SystemAddressAndGuidTest.cpp
Normal file
@ -0,0 +1,348 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "SystemAddressAndGuidTest.h"
|
||||
|
||||
/*
|
||||
Description:
|
||||
Tests:
|
||||
virtual unsigned short RakPeerInterface::NumberOfConnections ( void ) const
|
||||
virtual void RakPeerInterface::GetSystemList ( DataStructures::List< SystemAddress > & addresses, DataStructures::List< RakNetGUID > & guids )
|
||||
virtual bool RakPeerInterface::IsActive ( void ) const
|
||||
virtual SystemAddress RakPeerInterface::GetSystemAddressFromIndex ( int index )
|
||||
virtual SystemAddress RakPeerInterface::GetSystemAddressFromGuid ( const RakNetGUID input ) const
|
||||
virtual const RakNetGUID& RakPeerInterface::GetGuidFromSystemAddress ( const SystemAddress input ) const
|
||||
pure virtual virtual RakNetGUID RakPeerInterface::GetGUIDFromIndex ( int index )
|
||||
virtual SystemAddress RakPeerInterface::GetExternalID ( const SystemAddress target ) const
|
||||
|
||||
Success conditions:
|
||||
All functions pass test.
|
||||
|
||||
Failure conditions:
|
||||
Any function fails.
|
||||
|
||||
Client was active but shouldn't be yet
|
||||
Client was not active but should be
|
||||
Could not connect the client
|
||||
Mismatch between guidList size and systemList size
|
||||
NumberOfConnections problem
|
||||
SystemList problem with GetSystemList
|
||||
Both SystemList and Number of connections have problems and report different results
|
||||
Both SystemList and Number of connections have problems and report same results
|
||||
Undefined Error
|
||||
System address from list is wrong.
|
||||
Guid from list is wrong
|
||||
GetSystemAddressFromIndex failed to return correct values
|
||||
GetSystemAddressFromGuid failed to return correct values
|
||||
GetGuidFromSystemAddress failed to return correct values
|
||||
GetGUIDFromIndex failed to return correct values
|
||||
GetExternalID failed to return correct values
|
||||
|
||||
RakPeerInterface Functions used, tested indirectly by its use. List may not be complete:
|
||||
Startup
|
||||
SetMaximumIncomingConnections
|
||||
Receive
|
||||
DeallocatePacket
|
||||
Send
|
||||
IsConnected
|
||||
|
||||
RakPeerInterface Functions Explicitly Tested:
|
||||
|
||||
NumberOfConnections
|
||||
GetSystemList
|
||||
IsActive
|
||||
GetSystemAddressFromIndex
|
||||
GetSystemAddressFromGuid
|
||||
GetGuidFromSystemAddress
|
||||
GetGUIDFromIndex
|
||||
GetExternalID
|
||||
|
||||
*/
|
||||
int SystemAddressAndGuidTest::RunTest(DataStructures::List<RakString> params,bool isVerbose,bool noPauses)
|
||||
{
|
||||
|
||||
RakPeerInterface *server,*client;
|
||||
destroyList.Clear(false,_FILE_AND_LINE_);
|
||||
|
||||
printf("Testing IsActive\n");
|
||||
client=RakPeerInterface::GetInstance();
|
||||
destroyList.Push( client,_FILE_AND_LINE_);
|
||||
if (client->IsActive())
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[1-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
client->Startup(1,&SocketDescriptor(60001,0),1);
|
||||
|
||||
if (!client->IsActive())
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[2-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
//Passed by reference for initializations
|
||||
TestHelpers::StandardServerPrep(server,destroyList);
|
||||
|
||||
if (!TestHelpers::WaitAndConnectTwoPeersLocally(client,server,5000))
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[3-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
DataStructures::List< SystemAddress > systemList;
|
||||
DataStructures::List< RakNetGUID > guidList;
|
||||
|
||||
printf("Test GetSystemList and NumberOfConnections\n");
|
||||
|
||||
client->GetSystemList(systemList,guidList);//Get connectionlist
|
||||
int len=systemList.Size();
|
||||
int len2=guidList.Size();
|
||||
|
||||
int conNum=client->NumberOfConnections();
|
||||
|
||||
printf("Test if systemList size matches guidList size \n");
|
||||
|
||||
if (len2!=len)
|
||||
{
|
||||
|
||||
printf("system list size is %i and guid size is %i ",len,len2);
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[4-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 4;
|
||||
}
|
||||
|
||||
printf("Test returned list size against NumberofConnections return value\n");
|
||||
if (conNum!=len)
|
||||
{
|
||||
|
||||
if (conNum==1||len==1)
|
||||
{
|
||||
|
||||
if (conNum!=1)
|
||||
{
|
||||
printf("system list size is %i and NumberOfConnections return is %i ",len,conNum);
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[5-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 5;
|
||||
|
||||
}
|
||||
|
||||
if (len!=1)
|
||||
{
|
||||
|
||||
printf("system list size is %i and NumberOfConnections return is %i ",len,conNum);
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[6-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 6;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("system list size is %i and NumberOfConnections return is %i ",len,conNum);
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[7-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 7;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (conNum!=1)
|
||||
{
|
||||
printf("system list size is %i and NumberOfConnections return is %i ",len,conNum);
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[8-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 8;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
printf("Test GetSystemListValues of the system and guid list\n");
|
||||
SystemAddress serverAddress;
|
||||
serverAddress.SetBinaryAddress("127.0.0.1");
|
||||
serverAddress.port=60000;
|
||||
|
||||
if (!compareSystemAddresses(systemList[0],serverAddress))
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[10-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 10;
|
||||
|
||||
}
|
||||
|
||||
RakNetGUID serverGuid=server->GetGuidFromSystemAddress(UNASSIGNED_SYSTEM_ADDRESS);
|
||||
|
||||
if (guidList[0]!=serverGuid)
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[11-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 11;
|
||||
|
||||
}
|
||||
|
||||
printf("Test GetSystemAddressFromIndex\n");
|
||||
if (!compareSystemAddresses(client->GetSystemAddressFromIndex(0),serverAddress))
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[12-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 12;
|
||||
}
|
||||
|
||||
printf("Test GetSystemAddressFromGuid\n");
|
||||
if (!compareSystemAddresses(client->GetSystemAddressFromGuid(serverGuid),serverAddress))
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[13-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 13;
|
||||
}
|
||||
|
||||
printf("Test GetGuidFromSystemAddress\n");
|
||||
if (client->GetGuidFromSystemAddress(serverAddress)!=serverGuid)
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[14-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 14;
|
||||
|
||||
}
|
||||
|
||||
printf("Test GetGUIDFromIndex\n");
|
||||
if (client->GetGUIDFromIndex(0)!=serverGuid)
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[15-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 15;
|
||||
|
||||
}
|
||||
|
||||
SystemAddress clientAddress;
|
||||
clientAddress.SetBinaryAddress("127.0.0.1");
|
||||
clientAddress.port=60001;
|
||||
|
||||
printf("Test GetExternalID, automatic testing is not only required for this\nbecause of it's nature\nShould be supplemented by internet tests\n");
|
||||
|
||||
if (!compareSystemAddresses(client->GetExternalID(serverAddress),clientAddress))
|
||||
{
|
||||
|
||||
if (isVerbose)
|
||||
DebugTools::ShowError(errorList[16-1],!noPauses && isVerbose,__LINE__,__FILE__);
|
||||
|
||||
return 16;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
RakString SystemAddressAndGuidTest::GetTestName()
|
||||
{
|
||||
|
||||
return "SystemAddressAndGuidTest";
|
||||
|
||||
}
|
||||
|
||||
RakString SystemAddressAndGuidTest::ErrorCodeToString(int errorCode)
|
||||
{
|
||||
|
||||
if (errorCode>0&&(unsigned int)errorCode<=errorList.Size())
|
||||
{
|
||||
return errorList[errorCode-1];
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Undefined Error";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool SystemAddressAndGuidTest::compareSystemAddresses(SystemAddress ad1,SystemAddress ad2)
|
||||
{
|
||||
if (ad1.binaryAddress!=ad2.binaryAddress||ad1.port!=ad2.port)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
SystemAddressAndGuidTest::SystemAddressAndGuidTest(void)
|
||||
{
|
||||
|
||||
errorList.Push("Client was active but shouldn't be yet",_FILE_AND_LINE_);
|
||||
errorList.Push("Client was not active but should be",_FILE_AND_LINE_);
|
||||
errorList.Push("Could not connect the client",_FILE_AND_LINE_);
|
||||
errorList.Push("Mismatch between guidList size and systemList size ",_FILE_AND_LINE_);
|
||||
errorList.Push("NumberOfConnections problem",_FILE_AND_LINE_);
|
||||
errorList.Push("SystemList problem with GetSystemList",_FILE_AND_LINE_);
|
||||
errorList.Push("Both SystemList and Number of connections have problems and report different results",_FILE_AND_LINE_);
|
||||
errorList.Push("Both SystemList and Number of connections have problems and report same results",_FILE_AND_LINE_);
|
||||
errorList.Push("Undefined Error",_FILE_AND_LINE_);
|
||||
errorList.Push("System address from list is wrong.",_FILE_AND_LINE_);
|
||||
errorList.Push("Guid from list is wrong",_FILE_AND_LINE_);
|
||||
errorList.Push("GetSystemAddressFromIndex failed to return correct values",_FILE_AND_LINE_);
|
||||
errorList.Push("GetSystemAddressFromGuid failed to return correct values",_FILE_AND_LINE_);
|
||||
errorList.Push("GetGuidFromSystemAddress failed to return correct values",_FILE_AND_LINE_);
|
||||
errorList.Push("GetGUIDFromIndex failed to return correct values",_FILE_AND_LINE_);
|
||||
errorList.Push("GetExternalID failed to return correct values",_FILE_AND_LINE_);
|
||||
|
||||
}
|
||||
|
||||
SystemAddressAndGuidTest::~SystemAddressAndGuidTest(void)
|
||||
{
|
||||
}
|
||||
|
||||
void SystemAddressAndGuidTest::DestroyPeers()
|
||||
{
|
||||
|
||||
int theSize=destroyList.Size();
|
||||
|
||||
for (int i=0; i < theSize; i++)
|
||||
RakPeerInterface::DestroyInstance(destroyList[i]);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user