mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-01 12:24:36 -04:00
- added TestUtils class to handle generating random files and random SSL/PGP ids.
- fixed ftcontollertest. This should help fixing ftserver[123]test as well - improved pqiTestor using templates (lots of identical functions replaced) git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6036 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
66207b81e5
commit
4e586c84ba
11 changed files with 278 additions and 195 deletions
45
libretroshare/src/tests/common/testutils.h
Normal file
45
libretroshare/src/tests/common/testutils.h
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <util/rsid.h>
|
||||||
|
|
||||||
|
class TestUtils
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// Creates a random file of the given size at the given place. Useful for file transfer tests.
|
||||||
|
//
|
||||||
|
static bool createRandomFile(const std::string& filename,const uint64_t size)
|
||||||
|
{
|
||||||
|
FILE *f = fopen(filename.c_str(),"wb") ;
|
||||||
|
|
||||||
|
if(f == NULL)
|
||||||
|
return 0 ;
|
||||||
|
|
||||||
|
uint32_t S = 5000 ;
|
||||||
|
uint32_t *data = new uint32_t[S] ;
|
||||||
|
|
||||||
|
for(uint64_t i=0;i<size;i+=4*S)
|
||||||
|
{
|
||||||
|
for(uint32_t j=0;j<S;++j)
|
||||||
|
data[j] = lrand48() ;
|
||||||
|
|
||||||
|
uint32_t to_write = std::min((uint64_t)(4*S),size - i) ;
|
||||||
|
|
||||||
|
if(to_write != fwrite((void*)data,1,to_write,f))
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::string createRandomSSLId()
|
||||||
|
{
|
||||||
|
return t_RsGenericIdType<16>::random().toStdString(false);
|
||||||
|
}
|
||||||
|
static std::string createRandomPGPId()
|
||||||
|
{
|
||||||
|
return t_RsGenericIdType<8>::random().toStdString(true);
|
||||||
|
}
|
||||||
|
};
|
24
libretroshare/src/tests/dbase/perform_auto_tests.sh
Executable file
24
libretroshare/src/tests/dbase/perform_auto_tests.sh
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/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="searchtest \
|
||||||
|
fitest2 \
|
||||||
|
fimontest \
|
||||||
|
fisavetest"
|
||||||
|
|
||||||
|
for exe in $exes; do
|
||||||
|
./$exe > /dev/null 2>&1 ; result=`printresult`; echo "-- $exe \t test :" $result ;
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ OPS_TOP_DIR = ../../../../openpgpsdk/src
|
||||||
include $(RS_TOP_DIR)/tests/scripts/config.mk
|
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_dummy.o ftsearch_dummy.o
|
TESTOBJ = pqitestor.o 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
|
TESTS = ftfileprovidertest ftfilecreatortest ftextralisttest ftdataplextest fttransfermoduletest ftcrc32test ftcrossprovidercreatortest ftcontrollertest ftserver1test ftserver2test fttransfermoduletest ftserver3test
|
||||||
#ftfilemappertest
|
#ftfilemappertest
|
||||||
|
@ -20,8 +20,8 @@ all: tests
|
||||||
ftfilemappertest : ftfilemappertest.o
|
ftfilemappertest : ftfilemappertest.o
|
||||||
$(CC) $(CFLAGS) -o ftfilemappertest ftfilemappertest.o $(LIBS)
|
$(CC) $(CFLAGS) -o ftfilemappertest ftfilemappertest.o $(LIBS)
|
||||||
|
|
||||||
ftcontrollertest : ftcontrollertest.o
|
ftcontrollertest : ftcontrollertest.o pqitestor.o
|
||||||
$(CC) $(CFLAGS) -o ftcontrollertest ftcontrollertest.o $(LIBS)
|
$(CC) $(CFLAGS) -o ftcontrollertest ftcontrollertest.o pqitestor.o $(LIBS)
|
||||||
|
|
||||||
ftfilecreatortest : ftfilecreatortest.o
|
ftfilecreatortest : ftfilecreatortest.o
|
||||||
$(CC) $(CFLAGS) -o ftfilecreatortest ftfilecreatortest.o $(LIBS)
|
$(CC) $(CFLAGS) -o ftfilecreatortest ftfilecreatortest.o $(LIBS)
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "retroshare/rsfiles.h"
|
#include "retroshare/rsfiles.h"
|
||||||
#include "retroshare/rspeers.h"
|
#include "retroshare/rspeers.h"
|
||||||
|
#include "retroshare/rsiface.h"
|
||||||
#include "ft/ftserver.h"
|
#include "ft/ftserver.h"
|
||||||
|
|
||||||
#include "ft/ftextralist.h"
|
#include "ft/ftextralist.h"
|
||||||
|
@ -41,6 +42,10 @@
|
||||||
#include "pqi/p3linkmgr.h"
|
#include "pqi/p3linkmgr.h"
|
||||||
#include "pqi/p3netmgr.h"
|
#include "pqi/p3netmgr.h"
|
||||||
|
|
||||||
|
#include "pqi/authssl.h"
|
||||||
|
#include "pqi/authgpg.h"
|
||||||
|
|
||||||
|
#include "common/testutils.h"
|
||||||
#include "util/rsdebug.h"
|
#include "util/rsdebug.h"
|
||||||
|
|
||||||
#include "pqitestor.h"
|
#include "pqitestor.h"
|
||||||
|
@ -50,6 +55,41 @@
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
class FakeGPG: public AuthGPG
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FakeGPG(const std::string& ownId)
|
||||||
|
:AuthGPG("pgp_pubring.pgp","pgp_secring.pgp","pgp_trustdb.pgp","lock"), mOwnId(ownId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::string getGPGOwnId()
|
||||||
|
{
|
||||||
|
return mOwnId ;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool isGPGAccepted(const std::string& pgp_id) { return true ; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string mOwnId ;
|
||||||
|
};
|
||||||
|
|
||||||
|
class FakeSSL: public AuthSSLimpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FakeSSL(const std::string& ownId)
|
||||||
|
: mOwnId(ownId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual std::string OwnId()
|
||||||
|
{
|
||||||
|
return mOwnId ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string mOwnId ;
|
||||||
|
};
|
||||||
|
|
||||||
class TestData
|
class TestData
|
||||||
{
|
{
|
||||||
|
@ -72,49 +112,66 @@ void usage(char *name)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
uint32_t period = 1;
|
uint32_t debugLevel = 5;
|
||||||
uint32_t debugLevel = 5;
|
|
||||||
bool debugStderr = true;
|
|
||||||
bool loadAll = false;
|
bool loadAll = false;
|
||||||
|
|
||||||
std::list<SharedDirInfo> fileList;
|
std::list<SharedDirInfo> fileList;
|
||||||
std::list<std::string> extraList;
|
std::list<std::string> extraList;
|
||||||
std::list<std::string> peerIds;
|
std::list<std::string> peerIds;
|
||||||
std::map<std::string, ftServer *> mFtServers;
|
std::map<std::string, ftServer *> mFtServers;
|
||||||
std::map<std::string, p3LinkMgrIMPL *> mLinkMgrs;
|
std::map<std::string, p3LinkMgrIMPL *> mLinkMgrs;
|
||||||
|
|
||||||
ftServer *mLoadServer = NULL;
|
ftServer *mLoadServer = NULL;
|
||||||
std::list<ftServer *> mOtherServers;
|
std::list<ftServer *> mOtherServers;
|
||||||
std::list<std::string>::iterator eit;
|
std::list<std::string>::iterator eit;
|
||||||
|
|
||||||
while(-1 != (c = getopt(argc, argv, "asd:p:e:")))
|
while(-1 != (c = getopt(argc, argv, "asd:p:e:")))
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case 'p':
|
case 'p':
|
||||||
peerIds.push_back(optarg);
|
peerIds.push_back(optarg);
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
debugLevel = atoi(optarg);
|
debugLevel = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
case 's':
|
// case 's':
|
||||||
debugStderr = true;
|
// debugStderr = true;
|
||||||
break;
|
// break;
|
||||||
case 'e':
|
case 'e':
|
||||||
extraList.push_back(optarg);
|
extraList.push_back(optarg);
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
loadAll = true;
|
loadAll = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(peerIds.empty())
|
||||||
|
{
|
||||||
|
peerIds.push_back(TestUtils::createRandomSSLId()) ;
|
||||||
|
|
||||||
|
// then add some other peer ids.
|
||||||
|
peerIds.push_back(TestUtils::createRandomSSLId()) ;
|
||||||
|
peerIds.push_back(TestUtils::createRandomSSLId()) ;
|
||||||
|
peerIds.push_back(TestUtils::createRandomSSLId()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string ssl_own_id = TestUtils::createRandomSSLId() ;
|
||||||
|
std::string gpg_own_id = TestUtils::createRandomPGPId() ;
|
||||||
|
|
||||||
|
FakeGPG fakeGPG(gpg_own_id) ;
|
||||||
|
AuthGPG::setAuthGPG_debug(&fakeGPG) ;
|
||||||
|
|
||||||
|
FakeSSL fakeSSL(ssl_own_id) ;
|
||||||
|
AuthSSL::setAuthSSL_debug(&fakeSSL) ;
|
||||||
|
|
||||||
/* do logging */
|
/* do logging */
|
||||||
setOutputLevel(debugLevel);
|
setOutputLevel(debugLevel);
|
||||||
|
|
||||||
if (optind >= argc)
|
if (optind >= argc)
|
||||||
{
|
{
|
||||||
|
@ -155,6 +212,7 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
RsPeerDetails pad;
|
RsPeerDetails pad;
|
||||||
pad.id = *it;
|
pad.id = *it;
|
||||||
|
pad.gpg_id = TestUtils::createRandomPGPId() ;
|
||||||
pad.name = *it;
|
pad.name = *it;
|
||||||
pad.trustLvl = 5;
|
pad.trustLvl = 5;
|
||||||
pad.ownsign = true;
|
pad.ownsign = true;
|
||||||
|
@ -162,8 +220,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
baseFriendList.push_back(pad);
|
baseFriendList.push_back(pad);
|
||||||
|
|
||||||
std::cerr << "ftserver1test::setup peer: " << *it;
|
std::cerr << "ftserver1test::setup peer: " << *it << std::endl;
|
||||||
std::cerr << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostringstream pname;
|
std::ostringstream pname;
|
||||||
|
@ -188,7 +245,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
//p3AuthMgr *authMgr = new p3DummyAuthMgr(*it, friendList);
|
//p3AuthMgr *authMgr = new p3DummyAuthMgr(*it, friendList);
|
||||||
p3PeerMgrIMPL *peerMgr = new p3PeerMgrIMPL;
|
p3PeerMgrIMPL *peerMgr = new p3PeerMgrIMPL(ssl_own_id,gpg_own_id,"My GPG name","My SSL location");
|
||||||
p3NetMgrIMPL *netMgr = new p3NetMgrIMPL ;
|
p3NetMgrIMPL *netMgr = new p3NetMgrIMPL ;
|
||||||
p3LinkMgrIMPL *linkMgr = new p3LinkMgrIMPL(peerMgr,netMgr);
|
p3LinkMgrIMPL *linkMgr = new p3LinkMgrIMPL(peerMgr,netMgr);
|
||||||
mLinkMgrs[*it] = linkMgr;
|
mLinkMgrs[*it] = linkMgr;
|
||||||
|
@ -197,7 +254,7 @@ int main(int argc, char **argv)
|
||||||
for(fit = friendList.begin(); fit != friendList.end(); fit++)
|
for(fit = friendList.begin(); fit != friendList.end(); fit++)
|
||||||
{
|
{
|
||||||
/* add as peer to authMgr */
|
/* add as peer to authMgr */
|
||||||
peerMgr->addFriend(fit->id);
|
peerMgr->addFriend(fit->id,fit->gpg_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
P3Pipe *pipe = new P3Pipe(); //(*it);
|
P3Pipe *pipe = new P3Pipe(); //(*it);
|
||||||
|
@ -226,13 +283,13 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
std::string localpath = cachepath + "/local";
|
std::string localpath = cachepath + "/local";
|
||||||
RsDirUtil::checkCreateDirectory(localpath);
|
RsDirUtil::checkCreateDirectory(localpath);
|
||||||
|
|
||||||
std::string remotepath = cachepath + "/remote";
|
std::string remotepath = cachepath + "/remote";
|
||||||
RsDirUtil::checkCreateDirectory(remotepath);
|
RsDirUtil::checkCreateDirectory(remotepath);
|
||||||
|
|
||||||
server->setConfigDirectory(configpath);
|
server->setConfigDirectory(configpath);
|
||||||
|
|
||||||
NotifyBase *base = NULL;
|
NotifyBase *base = new NotifyBase;
|
||||||
server->SetupFtServer(base);
|
server->SetupFtServer(base);
|
||||||
|
|
||||||
testHub->addP3Pipe(*it, pipe, linkMgr);
|
testHub->addP3Pipe(*it, pipe, linkMgr);
|
||||||
|
@ -258,7 +315,7 @@ int main(int argc, char **argv)
|
||||||
mLoadServer->ExtraFileHash(*eit, 3600, TransferRequestFlags(0));
|
mLoadServer->ExtraFileHash(*eit, 3600, TransferRequestFlags(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* stick your real test here */
|
/* stick your real test here */
|
||||||
std::map<std::string, ftServer *>::iterator sit;
|
std::map<std::string, ftServer *>::iterator sit;
|
||||||
|
@ -273,7 +330,7 @@ int main(int argc, char **argv)
|
||||||
mFt->otherServers = mOtherServers;
|
mFt->otherServers = mOtherServers;
|
||||||
mFt->extraList = extraList;
|
mFt->extraList = extraList;
|
||||||
|
|
||||||
void *data = (void *) mFt;
|
void *data = (void *) mFt;
|
||||||
pthread_create(&tid, 0, &do_server_test_thread, data);
|
pthread_create(&tid, 0, &do_server_test_thread, data);
|
||||||
pthread_detach(tid); /* so memory is reclaimed in linux */
|
pthread_detach(tid); /* so memory is reclaimed in linux */
|
||||||
|
|
||||||
|
@ -390,7 +447,6 @@ void *do_server_test_thread(void *data)
|
||||||
ftServer *server=mFt->loadServer;
|
ftServer *server=mFt->loadServer;
|
||||||
|
|
||||||
std::string fname,filehash,destination;
|
std::string fname,filehash,destination;
|
||||||
uint32_t size;
|
|
||||||
FileSearchFlags flags;
|
FileSearchFlags flags;
|
||||||
std::list<std::string> srcIds;
|
std::list<std::string> srcIds;
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,8 @@
|
||||||
#include "ft/ftdatamultiplex.h"
|
#include "ft/ftdatamultiplex.h"
|
||||||
#include "ft/ftfilesearch.h"
|
#include "ft/ftfilesearch.h"
|
||||||
|
|
||||||
#include "pqi/p3authmgr.h"
|
#include "pqi/p3linkmgr.h"
|
||||||
#include "pqi/p3connmgr.h"
|
#include "pqi/p3peermgr.h"
|
||||||
|
|
||||||
#include "util/rsdebug.h"
|
#include "util/rsdebug.h"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ft/pqitestor.h"
|
#include "ft/pqitestor.h"
|
||||||
#include "pqi/p3connmgr.h"
|
#include "pqi/p3linkmgr.h"
|
||||||
|
|
||||||
/******
|
/******
|
||||||
*#define HUB_DEBUG 1
|
*#define HUB_DEBUG 1
|
||||||
|
@ -47,8 +47,9 @@ void P3Hub::addP3Pipe(std::string id, P3Pipe *pqi, p3LinkMgr *mgr)
|
||||||
std::map<std::string, hubItem>::iterator it;
|
std::map<std::string, hubItem>::iterator it;
|
||||||
for(it = mPeers.begin(); it != mPeers.end(); it++)
|
for(it = mPeers.begin(); it != mPeers.end(); it++)
|
||||||
{
|
{
|
||||||
(it->second).mLinkMgr->connectResult(id, true, 0);
|
sockaddr_in remote_addr ;
|
||||||
mgr->connectResult(it->first, true, 0);
|
(it->second).mLinkMgr->connectResult(id, true, 0,remote_addr);
|
||||||
|
mgr->connectResult(it->first, true, 0,remote_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
mPeers[id] = item;
|
mPeers[id] = item;
|
||||||
|
@ -211,7 +212,7 @@ void P3Hub::run()
|
||||||
|
|
||||||
|
|
||||||
PQIPipe::PQIPipe(std::string peerId)
|
PQIPipe::PQIPipe(std::string peerId)
|
||||||
:PQInterface(peerId)
|
:PQInterface(peerId),pipeMtx("Pipe mutex")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -330,115 +331,3 @@ int P3Pipe::PushRecvdItem(RsItem *item)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int P3Pipe::SearchSpecific(RsCacheRequest *item)
|
|
||||||
{
|
|
||||||
SendAllItem(item);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int P3Pipe::SendSearchResult(RsCacheItem *item)
|
|
||||||
{
|
|
||||||
SendAllItem(item);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int P3Pipe::SendFileRequest(RsFileRequest *item)
|
|
||||||
{
|
|
||||||
SendAllItem(item);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int P3Pipe::SendFileData(RsFileData *item)
|
|
||||||
{
|
|
||||||
SendAllItem(item);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int P3Pipe::SendRsRawItem(RsRawItem *item)
|
|
||||||
{
|
|
||||||
SendAllItem(item);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cache Requests
|
|
||||||
RsCacheRequest *P3Pipe::RequestedSearch()
|
|
||||||
{
|
|
||||||
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
|
||||||
|
|
||||||
if (mRecvdRsCacheRequests.size() == 0)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RsCacheRequest *item = mRecvdRsCacheRequests.front();
|
|
||||||
mRecvdRsCacheRequests.pop_front();
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Cache Results
|
|
||||||
RsCacheItem *P3Pipe::GetSearchResult()
|
|
||||||
{
|
|
||||||
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
|
||||||
|
|
||||||
if (mRecvdRsCacheItems.size() == 0)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RsCacheItem *item = mRecvdRsCacheItems.front();
|
|
||||||
mRecvdRsCacheItems.pop_front();
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// FileTransfer.
|
|
||||||
RsFileRequest *P3Pipe::GetFileRequest()
|
|
||||||
{
|
|
||||||
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
|
||||||
|
|
||||||
if (mRecvdRsFileRequests.size() == 0)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RsFileRequest *item = mRecvdRsFileRequests.front();
|
|
||||||
mRecvdRsFileRequests.pop_front();
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RsFileData *P3Pipe::GetFileData()
|
|
||||||
{
|
|
||||||
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
|
||||||
|
|
||||||
if (mRecvdRsFileDatas.size() == 0)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RsFileData *item = mRecvdRsFileDatas.front();
|
|
||||||
mRecvdRsFileDatas.pop_front();
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RsRawItem *P3Pipe::GetRsRawItem()
|
|
||||||
{
|
|
||||||
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
|
||||||
|
|
||||||
if (mRecvdRsRawItems.size() == 0)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
RsRawItem *item = mRecvdRsRawItems.front();
|
|
||||||
mRecvdRsRawItems.pop_front();
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#include "pqi/pqi.h"
|
#include "pqi/pqi.h"
|
||||||
#include "util/rsthreads.h"
|
#include "util/rsthreads.h"
|
||||||
|
#include "serialiser/rsbaseitems.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
@ -45,8 +46,7 @@ class PQIPipe;
|
||||||
class PQIHub;
|
class PQIHub;
|
||||||
class P3Pipe;
|
class P3Pipe;
|
||||||
class P3Hub;
|
class P3Hub;
|
||||||
class p3ConnectMgr;
|
class p3LinkMgr;
|
||||||
|
|
||||||
|
|
||||||
class hubItem
|
class hubItem
|
||||||
{
|
{
|
||||||
|
@ -116,31 +116,30 @@ class P3Pipe: public P3Interface
|
||||||
virtual int status() { return 1; }
|
virtual int status() { return 1; }
|
||||||
|
|
||||||
/* Overloaded from P3Interface */
|
/* Overloaded from P3Interface */
|
||||||
virtual int SearchSpecific(RsCacheRequest *item);
|
|
||||||
virtual int SendSearchResult(RsCacheItem *item);
|
|
||||||
virtual int SendFileRequest(RsFileRequest *item);
|
|
||||||
virtual int SendFileData(RsFileData *item);
|
|
||||||
virtual int SendRsRawItem(RsRawItem *item);
|
|
||||||
|
|
||||||
virtual RsCacheRequest *RequestedSearch();
|
virtual RsCacheRequest *RequestedSearch() { return GetSpecificItem(mRecvdRsCacheRequests) ; }
|
||||||
virtual RsCacheItem *GetSearchResult();
|
virtual RsCacheItem *GetSearchResult() { return GetSpecificItem(mRecvdRsCacheItems) ; }
|
||||||
virtual RsFileRequest *GetFileRequest();
|
virtual RsFileRequest *GetFileRequest() { return GetSpecificItem(mRecvdRsFileRequests) ; }
|
||||||
virtual RsFileData *GetFileData();
|
virtual RsFileData *GetFileData() { return GetSpecificItem(mRecvdRsFileDatas) ; }
|
||||||
virtual RsRawItem *GetRsRawItem();
|
virtual RsRawItem *GetRsRawItem() { return GetSpecificItem(mRecvdRsRawItems) ; }
|
||||||
|
virtual RsFileChunkMapRequest* GetFileChunkMapRequest() { return GetSpecificItem(mRecvdRsChunkMapRequests) ; }
|
||||||
|
virtual RsFileChunkMap* GetFileChunkMap() { return GetSpecificItem(mRecvdRsChunkMaps) ; }
|
||||||
|
virtual RsFileCRC32MapRequest* GetFileCRC32MapRequest() { return GetSpecificItem(mRecvdRsCRC32MapRequests) ; }
|
||||||
|
virtual RsFileCRC32Map* GetFileCRC32Map() { return GetSpecificItem(mRecvdRsCRC32Maps) ; }
|
||||||
|
virtual RsFileSingleChunkCrcRequest* GetFileSingleChunkCrcRequest() { return GetSpecificItem(mRecvdRsSingleChunkCRCRequests) ; }
|
||||||
|
virtual RsFileSingleChunkCrc* GetFileSingleChunkCrc() { return GetSpecificItem(mRecvdRsSingleChunkCRCs) ; }
|
||||||
|
|
||||||
virtual RsFileChunkMapRequest* GetFileChunkMapRequest() ;
|
virtual int SearchSpecific(RsCacheRequest *item) { SendAllItem(item); return 1 ; }
|
||||||
virtual int SendFileChunkMapRequest(RsFileChunkMapRequest*) ;
|
virtual int SendSearchResult(RsCacheItem *item) { SendAllItem(item); return 1 ; }
|
||||||
virtual RsFileChunkMap* GetFileChunkMap() ;
|
virtual int SendFileRequest(RsFileRequest *item) { SendAllItem(item); return 1 ; }
|
||||||
virtual int SendFileChunkMap(RsFileChunkMap*) ;
|
virtual int SendFileData(RsFileData *item) { SendAllItem(item); return 1 ; }
|
||||||
virtual RsFileCRC32MapRequest* GetFileCRC32MapRequest() ;
|
virtual int SendRsRawItem(RsRawItem *item) { SendAllItem(item); return 1 ; }
|
||||||
virtual int SendFileCRC32MapRequest(RsFileCRC32MapRequest*) ;
|
virtual int SendFileChunkMapRequest(RsFileChunkMapRequest*item) { SendAllItem(item); return 1 ; }
|
||||||
virtual RsFileCRC32Map* GetFileCRC32Map() ;
|
virtual int SendFileChunkMap(RsFileChunkMap*item) { SendAllItem(item); return 1 ; }
|
||||||
virtual int SendFileCRC32Map(RsFileCRC32Map*) ;
|
virtual int SendFileCRC32MapRequest(RsFileCRC32MapRequest*item) { SendAllItem(item); return 1 ; }
|
||||||
|
virtual int SendFileCRC32Map(RsFileCRC32Map*item) { SendAllItem(item); return 1 ; }
|
||||||
virtual RsFileSingleChunkCrcRequest* GetFileSingleChunkCrcRequest() ;
|
virtual int SendFileSingleChunkCrcRequest(RsFileSingleChunkCrcRequest*item) { SendAllItem(item); return 1 ; }
|
||||||
virtual int SendFileSingleChunkCrcRequest(RsFileSingleChunkCrcRequest*) ;
|
virtual int SendFileSingleChunkCrc(RsFileSingleChunkCrc*item) { SendAllItem(item); return 1 ; }
|
||||||
virtual RsFileSingleChunkCrc* GetFileSingleChunkCrc() ;
|
|
||||||
virtual int SendFileSingleChunkCrc(RsFileSingleChunkCrc*) ;
|
|
||||||
|
|
||||||
/* Lower Interface for PQIHub */
|
/* Lower Interface for PQIHub */
|
||||||
|
|
||||||
|
@ -148,6 +147,18 @@ class P3Pipe: public P3Interface
|
||||||
int PushRecvdItem(RsItem *item);
|
int PushRecvdItem(RsItem *item);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
template<class T> T *GetSpecificItem(std::list<T*>& item_list)
|
||||||
|
{
|
||||||
|
RsStackMutex stack(pipeMtx); /***** LOCK MUTEX ****/
|
||||||
|
|
||||||
|
if (item_list.size() == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
T *item = item_list.front();
|
||||||
|
item_list.pop_front();
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
int SendAllItem(RsItem *item);
|
int SendAllItem(RsItem *item);
|
||||||
|
|
||||||
|
@ -155,11 +166,17 @@ class P3Pipe: public P3Interface
|
||||||
|
|
||||||
std::list<RsItem *> mSentItems;
|
std::list<RsItem *> mSentItems;
|
||||||
|
|
||||||
std::list<RsCacheRequest *> mRecvdRsCacheRequests;
|
std::list<RsCacheRequest *> mRecvdRsCacheRequests;
|
||||||
std::list<RsCacheItem *> mRecvdRsCacheItems;
|
std::list<RsCacheItem *> mRecvdRsCacheItems;
|
||||||
std::list<RsFileRequest *> mRecvdRsFileRequests;
|
std::list<RsFileRequest *> mRecvdRsFileRequests;
|
||||||
std::list<RsFileData *> mRecvdRsFileDatas;
|
std::list<RsFileData *> mRecvdRsFileDatas;
|
||||||
std::list<RsRawItem *> mRecvdRsRawItems;
|
std::list<RsRawItem *> mRecvdRsRawItems;
|
||||||
|
std::list<RsFileChunkMapRequest *> mRecvdRsChunkMapRequests;
|
||||||
|
std::list<RsFileChunkMap *> mRecvdRsChunkMaps;
|
||||||
|
std::list<RsFileCRC32MapRequest *> mRecvdRsCRC32MapRequests;
|
||||||
|
std::list<RsFileCRC32Map *> mRecvdRsCRC32Maps;
|
||||||
|
std::list<RsFileSingleChunkCrcRequest *> mRecvdRsSingleChunkCRCRequests;
|
||||||
|
std::list<RsFileSingleChunkCrc *> mRecvdRsSingleChunkCRCs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
22
libretroshare/src/tests/general/perform_auto_tests.sh
Executable file
22
libretroshare/src/tests/general/perform_auto_tests.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/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="random_test \
|
||||||
|
memory_management_test "
|
||||||
|
|
||||||
|
for exe in $exes; do
|
||||||
|
./$exe > /dev/null 2>&1 ; result=`printresult`; echo "-- $exe \t test :" $result ;
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
echo Performing all tests on subdirs.
|
# This is the main script for performing all tests automatically.
|
||||||
|
# - in order to add new directories, just list them in the $subdirs variable below
|
||||||
|
|
||||||
subdirs="util serialiser pgp upnp general tcponudp"
|
echo "****************************************"
|
||||||
|
echo "*** RetroShare automatic test suite. ***"
|
||||||
|
echo "****************************************"
|
||||||
|
echo "Performing all tests on subdirs."
|
||||||
|
echo "(Some tests take a few minutes. Be patient) "
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
|
||||||
|
subdirs="util serialiser dbase upnp general pgp tcponudp"
|
||||||
|
|
||||||
for dir in $subdirs; do
|
for dir in $subdirs; do
|
||||||
echo Tests for directory: $dir
|
echo Tests for directory: $dir
|
||||||
|
|
|
@ -26,7 +26,7 @@ OPSDIR = $(OPS_TOP_DIR)/lib
|
||||||
LIBRS = $(LIBDIR)/libretroshare.a
|
LIBRS = $(LIBDIR)/libretroshare.a
|
||||||
BITDHT = $(BITDIR)/libbitdht.a
|
BITDHT = $(BITDIR)/libbitdht.a
|
||||||
# Unix: Linux/Cygwin
|
# Unix: Linux/Cygwin
|
||||||
INCLUDE = -I $(RS_TOP_DIR) -I$(OPENPGP_INCLUDE_DIR)
|
INCLUDE = -I$(RS_TOP_DIR) -I$(OPS_TOP_DIR) -I$(DHT_TOP_DIR)
|
||||||
CFLAGS = -Wall -g $(INCLUDE) -I..
|
CFLAGS = -Wall -g $(INCLUDE) -I..
|
||||||
#CFLAGS += -fprofile-arcs -ftest-coverage
|
#CFLAGS += -fprofile-arcs -ftest-coverage
|
||||||
CFLAGS += ${DEFINES}
|
CFLAGS += ${DEFINES}
|
||||||
|
|
21
libretroshare/src/tests/upnp/perform_auto_tests.sh
Executable file
21
libretroshare/src/tests/upnp/perform_auto_tests.sh
Executable 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="upnpforward"
|
||||||
|
|
||||||
|
for exe in $exes; do
|
||||||
|
./$exe > /dev/null 2>&1 ; result=`printresult`; echo "-- $exe \t test :" $result ;
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue