DragonNest/GameCommon/UnitTest/GPK_unittest.cc
2024-12-19 09:48:26 +08:00

90 lines
2.2 KiB
C++

#include "stdafx.h"
#if !defined( _FINAL_BUILD ) && !defined (__COVERITY__)
#if defined( _GPK )
class GPK_unittest:public testing::Test
{
protected:
virtual void SetUp()
{
m_pDynCode = GPKCreateSvrDynCode();
EXPECT_TRUE( m_pDynCode != NULL );
char szSvrDir[MAX_PATH] = { 0, };
char szCltDir[MAX_PATH] = { 0, };
#if defined(BIT64)
sprintf(szSvrDir, "./DynCodeBin/Server64");
#else
sprintf(szSvrDir, "./DynCodeBin/Server");
#endif
sprintf(szCltDir, "./DynCodeBin/Client");
int nBinCount = m_pDynCode->LoadBinary(szSvrDir, szCltDir);
EXPECT_NE( nBinCount, 0 );
EXPECT_TRUE( m_pDynCode->LoadAuthFile("AuthData.dat") );
}
virtual void TearDown()
{
m_pDynCode->Release();
}
SGPK::IGPKSvrDynCode* m_pDynCode;
};
TEST_F( GPK_unittest, FunctionTest )
{
double dwTime[6];
for( UINT i=0 ; i<_countof(dwTime) ; ++i )
dwTime[i] = 0;
for( UINT i=0 ; i<1000 ; ++i )
{
const unsigned char *pCode = NULL;
boost::timer t;
int iIdx = m_pDynCode->GetRandIdx();
dwTime[0] += t.elapsed();
EXPECT_TRUE( t.elapsed() == 0 ) << "GetRandIdx() " << t.elapsed();
t.restart();
int iCodeLen = m_pDynCode->GetCltDynCode( iIdx, &pCode );
dwTime[1] += t.elapsed();
EXPECT_TRUE( t.elapsed() == 0 ) << "GetCltDynCode() " << t.elapsed();
char szBuf[32] = "Server DATA!!!";
int nLen = (int)(strlen(szBuf)) + 1;
t.restart();
EXPECT_TRUE( m_pDynCode->Encode( (unsigned char*)&szBuf, nLen, iIdx ) );
dwTime[2] += t.elapsed();
EXPECT_TRUE( t.elapsed() == 0 ) << "Encode() " << t.elapsed();
t.restart();
SGPK::IGPKCSAuth* pGpkCmd = m_pDynCode->AllocAuthObject();
dwTime[3] += t.elapsed();
EXPECT_TRUE( pGpkCmd != NULL );
EXPECT_TRUE( t.elapsed() == 0 ) << "AllocAuthObject() " << t.elapsed();
t.restart();
const unsigned char *p = NULL;
nLen = pGpkCmd->GetAuthData(&p, NULL, NULL);
dwTime[4] += t.elapsed();
EXPECT_TRUE( t.elapsed() == 0 ) << "GetAuthData() " << t.elapsed();
t.restart();
pGpkCmd->Release();
dwTime[5] += t.elapsed();
EXPECT_TRUE( t.elapsed() == 0 ) << "Release() " << t.elapsed();
}
for( UINT i=0 ; i<_countof(dwTime) ; ++i )
std::cout << "[" << i << "] " << dwTime[i]/static_cast<double>(1000) << "ms" << std::endl;
}
#endif // #if defined( _GPK )
#endif // #if !defined( _FINAL_BUILD )