| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- /*
- * Copyright (c) 2014, Oculus VR, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS 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]);
- }
|