working on ft tests. Not finished yet

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6034 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2012-12-26 14:02:56 +00:00
parent 2865ba30ce
commit 69859f2a43
13 changed files with 142 additions and 73 deletions

View File

@ -10,7 +10,7 @@ OPS_TOP_DIR = ../../../../openpgpsdk/src
include $(RS_TOP_DIR)/tests/scripts/config.mk
###############################################################
TESTOBJ = ftfilemappertest.o ftfileprovidertest.o ftfilecreatortest.o ftextralisttest.o ftdataplextest.o fttransfermoduletest.o ftcrc32test.o ftcrossprovidercreatortest.o ftcontrollertest.o ftserver1test.o ftserver2test.o ftserver3test.o ftdata_test.o ftsearch_test.o
TESTOBJ = ftfilemappertest.o ftfileprovidertest.o ftfilecreatortest.o ftextralisttest.o ftdataplextest.o fttransfermoduletest.o ftcrc32test.o ftcrossprovidercreatortest.o ftcontrollertest.o ftserver1test.o ftserver2test.o ftserver3test.o ftdata_dummy.o ftsearch_dummy.o
TESTS = ftfileprovidertest ftfilecreatortest ftextralisttest ftdataplextest fttransfermoduletest ftcrc32test ftcrossprovidercreatortest ftcontrollertest ftserver1test ftserver2test fttransfermoduletest ftserver3test
#ftfilemappertest
@ -33,13 +33,13 @@ ftfileprovidertest : ftfileprovidertest.o
$(CC) $(CFLAGS) -o ftfileprovidertest ftfileprovidertest.o $(LIBS)
fttransfermoduletest : fttransfermoduletest.o
$(CC) $(CFLAGS) -o fttransfermoduletest fttransfermoduletest.o $(LIBS)
$(CC) $(CFLAGS) -o fttransfermoduletest ftdata_dummy.o ftsearch_dummy.o fttransfermoduletest.o $(LIBS)
ftextralisttest : ftextralisttest.o
$(CC) $(CFLAGS) -o ftextralisttest ftextralisttest.o $(LIBS)
ftdataplextest : ftdataplextest.o ftsearch_test.o ftdata_test.o
$(CC) $(CFLAGS) -o ftdataplextest ftdata_test.o ftdataplextest.o ftsearch_test.o $(LIBS)
ftdataplextest : ftdataplextest.o ftsearch_dummy.o ftdata_dummy.o
$(CC) $(CFLAGS) -o ftdataplextest ftdata_dummy.o ftdataplextest.o ftsearch_dummy.o $(LIBS)
ftserver1test : ftserver1test.o
$(CC) $(CFLAGS) -o ftserver1test ftserver1test.o $(LIBS)

View File

@ -37,6 +37,9 @@
//#include "pqi/p3authmgr.h"
//#include "pqi/p3connmgr.h"
#include "pqi/p3peermgr.h"
#include "pqi/p3linkmgr.h"
#include "pqi/p3netmgr.h"
#include "util/rsdebug.h"
@ -79,7 +82,7 @@ int main(int argc, char **argv)
std::list<std::string> extraList;
std::list<std::string> peerIds;
std::map<std::string, ftServer *> mFtServers;
std::map<std::string, p3ConnectMgr *> mConnMgrs;
std::map<std::string, p3LinkMgrIMPL *> mLinkMgrs;
ftServer *mLoadServer = NULL;
std::list<ftServer *> mOtherServers;
@ -184,22 +187,24 @@ int main(int argc, char **argv)
}
}
p3AuthMgr *authMgr = new p3DummyAuthMgr(*it, friendList);
p3ConnectMgr *connMgr = new p3ConnectMgr(authMgr);
mConnMgrs[*it] = connMgr;
//p3AuthMgr *authMgr = new p3DummyAuthMgr(*it, friendList);
p3PeerMgrIMPL *peerMgr = new p3PeerMgrIMPL;
p3NetMgrIMPL *netMgr = new p3NetMgrIMPL ;
p3LinkMgrIMPL *linkMgr = new p3LinkMgrIMPL(peerMgr,netMgr);
mLinkMgrs[*it] = linkMgr;
for(fit = friendList.begin(); fit != friendList.end(); fit++)
{
/* add as peer to authMgr */
connMgr->addFriend(fit->id);
peerMgr->addFriend(fit->id);
}
P3Pipe *pipe = new P3Pipe(); //(*it);
/* add server */
ftServer *server;
server = new ftServer(connMgr);
server = new ftServer(peerMgr,linkMgr);
mFtServers[*it] = server;
if (!mLoadServer)
{
@ -230,7 +235,7 @@ int main(int argc, char **argv)
NotifyBase *base = NULL;
server->SetupFtServer(base);
testHub->addP3Pipe(*it, pipe, connMgr);
testHub->addP3Pipe(*it, pipe, linkMgr);
server->StartupThreads();
/* setup any extra bits */
@ -239,7 +244,7 @@ int main(int argc, char **argv)
server->setSharedDirectories(fileList);
for(eit = extraList.begin(); eit != extraList.end(); eit++)
{
server->ExtraFileHash(*eit, 3600, 0);
server->ExtraFileHash(*eit, 3600, TransferRequestFlags(0));
}
}
@ -250,14 +255,14 @@ int main(int argc, char **argv)
mLoadServer->setSharedDirectories(fileList);
for(eit = extraList.begin(); eit != extraList.end(); eit++)
{
mLoadServer->ExtraFileHash(*eit, 3600, 0);
mLoadServer->ExtraFileHash(*eit, 3600, TransferRequestFlags(0));
}
}
/* stick your real test here */
std::map<std::string, ftServer *>::iterator sit;
std::map<std::string, p3ConnectMgr *>::iterator cit;
std::map<std::string, p3LinkMgrIMPL *>::iterator cit;
/* Start up test thread */
pthread_t tid;
@ -285,7 +290,7 @@ int main(int argc, char **argv)
(sit->second)->tick();
}
for(cit = mConnMgrs.begin(); cit != mConnMgrs.end(); cit++)
for(cit = mLinkMgrs.begin(); cit != mLinkMgrs.end(); cit++)
{
/* update */
(cit->second)->tick();
@ -334,7 +339,8 @@ void *do_server_test_thread(void *data)
REPORT("Successfully Found ExtraFile");
/* now we can try a search (should succeed) */
uint32_t hintflags = 0;
FileSearchFlags hintflags;
if (mFt->loadServer->FileDetails(info.hash, hintflags, info2))
{
CHECK(info2.hash == info.hash);
@ -361,6 +367,7 @@ void *do_server_test_thread(void *data)
/* search with other flags (should fail) */
hintflags = RS_FILE_HINTS_REMOTE | RS_FILE_HINTS_SPEC_ONLY;
if (mFt->loadServer->FileDetails(info.hash, hintflags, info2))
{
REPORT2( false, "Search for Extra File (Fail Flags)");
@ -383,18 +390,19 @@ void *do_server_test_thread(void *data)
ftServer *server=mFt->loadServer;
std::string fname,filehash,destination;
uint32_t size,flags;
uint32_t size;
FileSearchFlags flags;
std::list<std::string> srcIds;
/* select a file from otherServers */
if (mFt->otherServers == NULL)
if (mFt->otherServers.empty() )
{
REPORT2(false,"No otherServers available");
exit(1);
}
DirDetails details;
flags = DIR_FLAGS_DETAILS | DIR_FLAGS_REMOTE;
flags = RS_FILE_HINTS_REMOTE;
void *ref = NULL;
if(!server->RequestDirDetails(ref,details,flags))
@ -407,8 +415,7 @@ void *do_server_test_thread(void *data)
REPORT("RemoteDirModel::downloadSelected() Calling File Request");
std::list<std::string> srcIds;
srcIds.push_back(details.id);
server->FileRequest(details.name, details.hash,
details.count, "", 0, srcIds);
server->FileRequest(details.name, details.hash, details.count, "", TransferRequestFlags(0), srcIds);
}
exit(1);

View File

@ -34,34 +34,37 @@
#endif
#include "util/rsdir.h"
#include <common/fileutils.h>
#include <common/argstream.h>
void usage(char *name)
{
std::cerr << "Computes a CRC32 map of a file." << std::endl;
std::cerr << "Usage: " << name << " -h <path>" << std::endl;
}
int main(int argc, char **argv)
{
int c;
uint32_t period = 1;
uint32_t dPeriod = 600; /* default 10 minutes */
int c;
uint32_t period = 1;
uint32_t dPeriod = 600; /* default 10 minutes */
std::list<std::string> hashList;
std::string inputfile ;
argstream as(argc,argv) ;
as >> parameter('i',"input",inputfile,"Input file to hash. If none, a random file will be created in /tmp",false)
>> help() ;
as.defaultErrorHandling() ;
if(inputfile == "")
{
uint64_t S = 3983782 ;
std::cerr << "Creating a dummy input file in /tmp, of size " << S << std::endl;
inputfile = "crc_test_data.bin" ;
if(!FileUtils::createRandomFile(inputfile,S))
return 1 ;
}
std::list<std::string> hashList ;
hashList.push_back(inputfile) ;
while(-1 != (c = getopt(argc, argv, "f:h:")))
{
switch (c)
{
case 'f':
hashList.push_back(std::string(optarg));
break;
default:
usage(argv[0]);
break;
}
}
uint32_t flags = 0;
for(std::list<std::string>::const_iterator it(hashList.begin()); it != hashList.end(); it++)
{
@ -79,7 +82,7 @@ int main(int argc, char **argv)
if(f == NULL)
{
std::cerr << "Could not open this file! Sorry." << std::endl ;
return 0 ;
return 1 ;
}
CRC32Map crc_map ;
@ -87,7 +90,7 @@ int main(int argc, char **argv)
{
std::cerr << "Could not fseek to end of this file! Sorry." << std::endl ;
fclose(f) ;
return 0 ;
return 1 ;
}
size = ftell(f) ;
@ -96,7 +99,7 @@ int main(int argc, char **argv)
{
std::cerr << "Could not fseek to beginning of this file! Sorry." << std::endl ;
fclose(f) ;
return 0 ;
return 1 ;
}
std::cerr << "File size:" << size << std::endl ;
@ -109,9 +112,9 @@ int main(int argc, char **argv)
for(uint32_t i=0;i<crc_map.size();++i)
std::cerr << (void*)crc_map[i] ;
std::cerr << std::endl;
return 1 ;
}
return 0 ;
}

View File

@ -23,7 +23,7 @@
*
*/
#include "ftdata_test.h"
#include "ftdata_dummy.h"
/******* Pair of Send/Recv (Only need to handle Send side) ******/
ftDataSendPair::ftDataSendPair(ftDataRecv *recv)
@ -142,14 +142,22 @@ bool ftDataRecvDummy::recvChunkMap(const std::string& /*peer_id*/,const std::st
{
return true;
}
bool ftDataRecvDummy::recvSingleChunkCrcRequest(const std::string& peer_id,const std::string& hash,uint32_t chunk_id)
{
return true ;
}
bool ftDataRecvDummy::recvSingleChunkCrc(const std::string& peer_id,const std::string& hash,uint32_t chunk_id,const Sha1CheckSum& sum)
{
return true ;
}
bool ftDataRecvDummy::sendCRC32MapRequest(const std::string& /*peer_id*/,const std::string& /*hash*/)
bool ftDataRecvDummy::recvCRC32MapRequest(const std::string& /*peer_id*/,const std::string& /*hash*/)
{
return true ;
}
/* Send a chunk map */
bool ftDataRecvDummy::sendCRC32Map(const std::string& /*peer_id*/,const std::string& /*hash*/, const CompressedChunkMap& /*cmap*/)
bool ftDataRecvDummy::recvCRC32Map(const std::string& /*peer_id*/,const std::string& /*hash*/, const CompressedChunkMap& /*cmap*/)
{
return true ;
}

View File

@ -135,10 +135,13 @@ virtual bool recvChunkMap(const std::string& peer_id,const std::string& hash,
const CompressedChunkMap& cmap,bool is_client);
/* Send a request for a chunk map */
virtual bool sendCRC32MapRequest(const std::string& peer_id,const std::string& hash);
virtual bool recvCRC32MapRequest(const std::string& peer_id,const std::string& hash);
/* Send a chunk map */
virtual bool sendCRC32Map(const std::string& peer_id,const std::string& hash, const CompressedChunkMap& cmap);
virtual bool recvCRC32Map(const std::string& peer_id,const std::string& hash, const CompressedChunkMap& cmap);
virtual bool recvSingleChunkCrcRequest(const std::string& peer_id,const std::string& hash,uint32_t chunk_id) ;
virtual bool recvSingleChunkCrc(const std::string& peer_id,const std::string& hash,uint32_t chunk_id,const Sha1CheckSum& sum);
};
#endif

View File

@ -36,15 +36,19 @@
#include "util/rswin.h"
#endif
#include <sstream>
#include <util/utest.h>
#include <common/fileutils.h>
#include "ft/ftextralist.h"
#include "ft/ftdatamultiplex.h"
#include "ft/ftfilesearch.h"
#include "ftdata_test.h"
#include "ftsearch_test.h"
#include "ftdata_dummy.h"
#include "ftsearch_dummy.h"
void do_random_server_test(ftDataMultiplex *mplex, ftExtraList *eList, std::list<std::string> &files);
INITTEST() ;
void usage(char *name)
{
@ -78,15 +82,26 @@ int main(int argc, char **argv)
if (optind >= argc)
{
std::cerr << "Missing Files" << std::endl;
usage(argv[0]);
}
uint32_t N = 4 ;
std::cerr << "Missing Files. Generating " << N << " random files." << std::endl;
for(; optind < argc; optind++)
{
std::cerr << "Adding: " << argv[optind] << std::endl;
fileList.push_back(std::string(argv[optind]));
for(uint32_t i=0;i<N;++i)
{
std::ostringstream ss ;
ss << "file_" << i << ".bin" ;
uint64_t size = lrand48()%1000 + 200000 ;
std::string filename = ss.str() ;
if(!FileUtils::createRandomFile(filename,size))
return 1 ;
std::cerr << " file: " << filename << ", size=" << size << std::endl;
}
}
else
for(; optind < argc; optind++)
{
std::cerr << "Adding: " << argv[optind] << std::endl;
fileList.push_back(std::string(argv[optind]));
}
ftExtraList *eList = new ftExtraList();
eList->start();
@ -121,6 +136,10 @@ int main(int argc, char **argv)
/* just request random data packets first */
do_random_server_test(ftmplex, eList, fileList);
FINALREPORT("FtDataPlex test") ;
return TESTRESULT() ;
}

View File

@ -128,6 +128,8 @@ int test_fill(ftFileCreator *creator)
REPORT("Test Fill");
return 1;
int res = TESTRESULT();
std::cerr << "Test result: " << res << std::endl;
return res ;
}

View File

@ -1,4 +1,4 @@
#include "ftsearch_test.h"
#include "ftsearch_dummy.h"
bool ftSearchDummy::search(const std::string& /*hash*/, FileSearchFlags hintflags, FileInfo &/*info*/) const
{

View File

@ -46,7 +46,8 @@
#include "ft/fttransfermodule.h"
#include "util/utest.h"
#include "ftdata_test.h"
#include "ftdata_dummy.h"
#include "ftsearch_dummy.h"
INITTEST()

View File

@ -0,0 +1,21 @@
#!/bin/sh
printresult() {
if test "$?" = "0"; then
echo ' 'PASSED
else
echo *FAILED*
fi
}
# Warning: printresult needs to be called before anything else because it contains the
# result of the call to the test program, until the next command.
exes="ftcrc32test ftdataplextest ftfilecreatortest ftfileprovidertest ftextralisttest fttransfermoduletest ftcrossprovidercreatortest"
for exe in $exes; do
./$exe > /dev/null 2>&1 ; result=`printresult`; echo "-- $exe \t test :" $result ;
done

View File

@ -40,14 +40,14 @@ P3Hub::P3Hub(uint32_t flags, RsSerialiser *rss)
return;
}
void P3Hub::addP3Pipe(std::string id, P3Pipe *pqi, p3ConnectMgr *mgr)
void P3Hub::addP3Pipe(std::string id, P3Pipe *pqi, p3LinkMgr *mgr)
{
hubItem item(id, pqi, mgr);
std::map<std::string, hubItem>::iterator it;
for(it = mPeers.begin(); it != mPeers.end(); it++)
{
(it->second).mConnMgr->connectResult(id, true, 0);
(it->second).mLinkMgr->connectResult(id, true, 0);
mgr->connectResult(it->first, true, 0);
}

View File

@ -52,14 +52,14 @@ class hubItem
{
public:
hubItem()
:mPQI(NULL), mConnMgr(NULL) { return; }
:mPQI(NULL), mLinkMgr(NULL) { return; }
hubItem(std::string id, P3Pipe *pqi, p3ConnectMgr *mgr)
:mPeerId(id), mPQI(pqi), mConnMgr(mgr) { return; }
hubItem(std::string id, P3Pipe *pqi, p3LinkMgr *mgr)
:mPeerId(id), mPQI(pqi), mLinkMgr(mgr) { return; }
std::string mPeerId;
P3Pipe *mPQI;
p3ConnectMgr *mConnMgr;
p3LinkMgr *mLinkMgr;
};
@ -68,7 +68,7 @@ class P3Hub: public RsThread
public:
P3Hub(uint32_t flags, RsSerialiser *rss);
void addP3Pipe(std::string id, P3Pipe *, p3ConnectMgr *mgr);
void addP3Pipe(std::string id, P3Pipe *, p3LinkMgr *mgr);
virtual void run();
@ -137,6 +137,11 @@ class P3Pipe: public P3Interface
virtual RsFileCRC32Map* GetFileCRC32Map() ;
virtual int SendFileCRC32Map(RsFileCRC32Map*) ;
virtual RsFileSingleChunkCrcRequest* GetFileSingleChunkCrcRequest() ;
virtual int SendFileSingleChunkCrcRequest(RsFileSingleChunkCrcRequest*) ;
virtual RsFileSingleChunkCrc* GetFileSingleChunkCrc() ;
virtual int SendFileSingleChunkCrc(RsFileSingleChunkCrc*) ;
/* Lower Interface for PQIHub */
RsItem *PopSentItem();