initial
This commit is contained in:
234
public/iexternaltest.h
Normal file
234
public/iexternaltest.h
Normal file
@@ -0,0 +1,234 @@
|
||||
//====== Copyright <20>, Valve Corporation, All rights reserved. =======
|
||||
//
|
||||
// Purpose: interface to external test DLLs
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef IEXTERNALTEST
|
||||
#define IEXTERNALTEST
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "steam/isteamfriends.h"
|
||||
#include "clientenums.h"
|
||||
|
||||
class ISteamClient;
|
||||
class ISteamUserStats;
|
||||
class ISteamGameServerStats;
|
||||
|
||||
// used to pass arbitrary buffers full of data back to the external test
|
||||
typedef uint32 ExternalTestBuffer_t;
|
||||
static const ExternalTestBuffer_t k_unExternalTestBufferInvalid = 0;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Represents a single test client (game client or game server) inside
|
||||
// of a test.
|
||||
//-----------------------------------------------------------------------------
|
||||
class IExternalTestClient
|
||||
{
|
||||
public:
|
||||
virtual ~IExternalTestClient() {}
|
||||
virtual void *GetISteamGenericInterface( const char *pchInterfaceVersion ) = 0;
|
||||
virtual ISteamUserStats *GetISteamUserStats( const char *pchVersion ) = 0;
|
||||
virtual ISteamGameServerStats *GetISteamGameServerStats( const char *pchVersion ) = 0;
|
||||
virtual bool BYieldingAwaitNewCallback( void *pCallback, uint32 unCallbackSize, int nCallbackType ) = 0;
|
||||
virtual CSteamID GetSteamID() = 0;
|
||||
|
||||
virtual void YieldingLogOff() = 0;
|
||||
virtual bool BYieldingLogOn() = 0;
|
||||
virtual bool BYieldingAwaitQueuedCallback( void * pCallback, uint32 unCallbackSize, int nCallbackType ) = 0;
|
||||
virtual void GetServerDetails( AppId_t *pnAppIdServed, uint32 *punIPGameServer, uint16 *pusPortGameServer, bool *pbSecure ) = 0;
|
||||
virtual bool BYieldingPrepareForApp( AppId_t unAppID ) = 0;
|
||||
|
||||
// methods to manipulate friend/social stuff that isn't in ISteamFriends
|
||||
virtual void SetPersonaState( EPersonaState ePersonaState ) = 0;
|
||||
virtual void AddFriend( const CSteamID & steamIDFriend ) = 0;
|
||||
virtual void RemoveFriend( const CSteamID & steamIDFriend ) = 0;
|
||||
|
||||
// Removes every queued callback for this client
|
||||
virtual void ClearCallbacks() = 0;
|
||||
|
||||
// Sets this user as an admin in this universe
|
||||
virtual void YieldingSetAsAdmin() = 0;
|
||||
|
||||
template< typename TCallback >
|
||||
inline bool BYieldingAwaitQueuedCallback( TCallback & callback ) { return BYieldingAwaitQueuedCallback( &callback, sizeof(TCallback), TCallback::k_iCallback ); }
|
||||
template< typename TCallback >
|
||||
inline bool BYieldingAwaitNewCallback( TCallback & callback ) { return BYieldingAwaitNewCallback( &callback, sizeof(TCallback), TCallback::k_iCallback ); }
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Helper functions for interacting with the steam client during tests
|
||||
//-----------------------------------------------------------------------------
|
||||
class IExternalTestUtils
|
||||
{
|
||||
public:
|
||||
virtual ~IExternalTestUtils() {}
|
||||
|
||||
// creates a single user client that is logged into an optional gameserver
|
||||
virtual IExternalTestClient *YieldingCreateUserClient( IExternalTestClient *pGameserver ) = 0;
|
||||
|
||||
// creates a single gameserver client at the specified (fake) IP addr and port
|
||||
virtual IExternalTestClient *YieldingCreateGameserverClient( uint32 unAddr, uint16 usPort ) = 0;
|
||||
|
||||
// returns the ISteamClient object so the test can fetch other ISteam interfaces.
|
||||
virtual ISteamClient *SteamClient() = 0;
|
||||
|
||||
// deploys the gctest dll at the current AppID. This is probably not useful outside of the
|
||||
// gctest tests.
|
||||
virtual void YieldingDeployGC( ) = 0;
|
||||
|
||||
// takes down the gctest dll at the current app DI
|
||||
virtual void YieldingDownGC( ) = 0;
|
||||
|
||||
// returns the app ID this test is running as
|
||||
virtual AppId_t GetAppId() = 0;
|
||||
|
||||
// draws a dot in the output
|
||||
virtual void DrawProgressDot() = 0;
|
||||
|
||||
// spews some text in the output
|
||||
virtual void EmitTestOutput( const char *pchMessage ) = 0;
|
||||
|
||||
// used by the external test framework to clean up some things between
|
||||
// test cases. Test cases should not call this.
|
||||
virtual void YieldingResetBetweenTests() = 0;
|
||||
|
||||
// Checks a bool condition and spews if it fails. If this fails the test
|
||||
// will be recorded as having failed.
|
||||
virtual bool BCheck( bool bCondition ) = 0;
|
||||
|
||||
// Yields until the stress test is finished. If this test is running as a
|
||||
// regression test, this will return immediately.
|
||||
virtual void YieldingWaitForTestToFinish() = 0;
|
||||
|
||||
// used by the external test framework to record test success/failure in
|
||||
// a file that buildbot can use to build reports. Tests should not call this directly.
|
||||
virtual void UpdateProgressFile( const char *pchTestName, const char *pchStatus ) = 0;
|
||||
|
||||
// Returns true if the test that ran most recently (and might still be running) passed.
|
||||
virtual bool BLastTestPassed() = 0;
|
||||
|
||||
// Called by a test to report that the test has reached the "running" state. This is only
|
||||
// useful in stress tests.
|
||||
virtual void MarkTestRunning() = 0;
|
||||
|
||||
// Logs on a bunch of clients all at once and returns when they are all logged on.
|
||||
virtual bool BYieldingCreateUserClientBatch( IExternalTestClient **prClients, int cClients, IExternalTestClient *pGameserver ) = 0;
|
||||
|
||||
// Logs on a bunch of gameservers all at once and returns when they are all logged on.
|
||||
virtual bool BYieldingCreateGameserverClientBatch( IExternalTestClient **prClients, int cClients ) = 0;
|
||||
|
||||
// returns true if the test is finished
|
||||
virtual bool BIsStressTestFinished() = 0;
|
||||
|
||||
// waits a single frame before resuming the test
|
||||
virtual void YieldingWaitOneFrame() = 0;
|
||||
|
||||
// reports a stress test action success/failure
|
||||
virtual void ReportStressActionResult( uint32 unActionIndex, bool bResult, const char *pchFailureLocation ) = 0;
|
||||
|
||||
// waits for the specified number of seconds to pass
|
||||
virtual void YieldingWaitForRealTime( uint32 unSeconds ) = 0;
|
||||
|
||||
// deploys the specified zip file as the GC for the specified app ID
|
||||
virtual bool BYieldingGCDeploy( AppId_t appID, const char *pchGCZipFile ) = 0;
|
||||
|
||||
// Downs the specified GC
|
||||
virtual bool BYieldingGCDown( AppId_t appID ) = 0;
|
||||
|
||||
// Revives the specified GC
|
||||
virtual bool BYieldingGCRevive( AppId_t appID ) = 0;
|
||||
|
||||
// Bounces the specified GC
|
||||
virtual bool BYieldingGCBounce( AppId_t appID ) = 0;
|
||||
|
||||
// returns the universe the tests are running in
|
||||
virtual EUniverse GetUniverse() = 0;
|
||||
|
||||
// returns the memory for a buffer
|
||||
virtual void *GetPvBuffer( ExternalTestBuffer_t unBuffer ) = 0;
|
||||
|
||||
// returns the memory for a buffer
|
||||
virtual uint32 GetCubBuffer( ExternalTestBuffer_t unBuffer ) = 0;
|
||||
|
||||
// makes a simulated WG request and returns the result
|
||||
virtual ExternalTestBuffer_t YieldingSimulateWGRequest( const CSteamID & actorID, const void *pvRequestKV, uint32 cubRequestKV ) = 0;
|
||||
|
||||
// Verifies that there is no support ticket for the specified steam ID
|
||||
virtual void YieldingVerifyNoSupportTicket( const CSteamID & steamID ) = 0;
|
||||
|
||||
// Verifies that there is a support event for the specified steam ID
|
||||
virtual void YieldingVerifySupportEventRecord( const CSteamID & victimID, const CSteamID & actorID, ESupportEvent eAction, GID_t gidTxn, const char *pchNote ) = 0;
|
||||
|
||||
// forces an appinfo update for the specified app. (Pass invalid to use the default app ID
|
||||
virtual void ForceAppInfoUpdate( AppId_t appId ) = 0;
|
||||
|
||||
// returns the stats KV section serialized as a buffer
|
||||
virtual ExternalTestBuffer_t GetAppInfoStats( AppId_t appId ) = 0;
|
||||
|
||||
// makes a web request and returns the result
|
||||
virtual bool BYieldingHTTPRequest( int nWebMethod, const char *pchURL, const char *pchAPIKey, const CSteamID & steamID, ExternalTestBuffer_t *punBuffer, int *pnResultCode ) = 0;
|
||||
|
||||
// returns the full path to the DLL that these tests are running from
|
||||
virtual const char *GetPchDllPath() = 0;
|
||||
|
||||
// returns true if these tests are running in dev mode (i.e. the server was started with -etdev)
|
||||
virtual bool BIsDevMode() = 0;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Functions for sending and receiving messages from the Game Coordinator
|
||||
// for this application
|
||||
//-----------------------------------------------------------------------------
|
||||
class IExternalTest
|
||||
{
|
||||
public:
|
||||
|
||||
// returns the number of tests present in this DLL
|
||||
virtual uint32 GetTestCount() = 0;
|
||||
|
||||
// returns the name of the specified test
|
||||
virtual const char *GetTestName( uint32 unTest ) = 0;
|
||||
|
||||
// returns the short name (no suite prefix) of the specified test
|
||||
virtual const char *GetTestShortName( uint32 unTest ) = 0;
|
||||
|
||||
// returns the suite of the specified test
|
||||
virtual const char *GetTestSuite( uint32 unTest ) = 0;
|
||||
|
||||
// returns the flags for the specified test
|
||||
virtual uint32 GetTestFlags( uint32 unTest ) = 0;
|
||||
|
||||
// runs the specified tests. The tests should run to completion
|
||||
// (yielding on a regular basis) and call pETestUtils->BCheck(false)
|
||||
// on failure
|
||||
virtual void BRunTests( uint32 *punTests, uint32 unTestCount, IExternalTestUtils * pETestUtils ) = 0;
|
||||
|
||||
// Returns the name of a stress test action
|
||||
virtual const char *GetStressActionName( uint32 unAction ) = 0;
|
||||
|
||||
};
|
||||
#define EXTERNALTEST_INTERFACE_VERSION "IExternalTest001"
|
||||
|
||||
// flags set by individual tests
|
||||
static const uint32 k_unETFlag_ValidForStress = 1<<0;
|
||||
static const uint32 k_unETFlag_ValidForRegression = 1<<1;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Allows an external test DLL to export its ability to validate its
|
||||
// own allocations
|
||||
//-----------------------------------------------------------------------------
|
||||
class IExternalTestValidation
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void Validate( CValidator &validator, const char *pchName ) = 0;
|
||||
};
|
||||
#define EXTERNALTEST_VALIDATION_INTERFACE_VERSION "IExternalTestValidation001"
|
||||
|
||||
|
||||
#endif // IEXTERNALTEST
|
||||
Reference in New Issue
Block a user