mirror of https://github.com/aria2/aria2
2007-12-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Allocate bitfield in Peer when it is really used. More specifically, bitfield in Peer is allocated after the connection is established and deallocated when the connection is dropped. Since 2 parameters(piece length and total length) was removed from the constructor of Peer class, many test classes were modified accordingly. See svn log for more detailed information. * src/PeerInteractionCommand.cc * src/CompactPeerListProcessor.cc * src/Peer.cc * src/DefaultPeerListProcessor.cc * src/PeerListenCommand.cc * src/PeerReceiveHandshakeCommand.cc Fixed memory leak * src/Piece.ccpull/1/head
parent
eed41706fc
commit
e39f7a7e9c
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
||||||
|
2007-12-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
|
Allocate bitfield in Peer when it is really used. More specifically,
|
||||||
|
bitfield in Peer is allocated after the connection is established and
|
||||||
|
deallocated when the connection is dropped.
|
||||||
|
Since 2 parameters(piece length and total length) was removed from the
|
||||||
|
constructor of Peer class, many test classes were modified accordingly.
|
||||||
|
See svn log for more detailed information.
|
||||||
|
* src/PeerInteractionCommand.cc
|
||||||
|
* src/CompactPeerListProcessor.cc
|
||||||
|
* src/Peer.cc
|
||||||
|
* src/DefaultPeerListProcessor.cc
|
||||||
|
* src/PeerListenCommand.cc
|
||||||
|
* src/PeerReceiveHandshakeCommand.cc
|
||||||
|
|
||||||
|
Fixed memory leak
|
||||||
|
* src/Piece.cc
|
||||||
|
|
||||||
2007-12-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2007-12-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
Changed the default value of PREF_PEER_CONNECTION_TIMEOUT and
|
Changed the default value of PREF_PEER_CONNECTION_TIMEOUT and
|
||||||
|
|
|
@ -49,7 +49,7 @@ Peers CompactPeerListProcessor::extractPeer(const MetaEntry* peersEntry) {
|
||||||
in.s_addr = *(uint32_t*)(peersData->getData()+i);
|
in.s_addr = *(uint32_t*)(peersData->getData()+i);
|
||||||
string ipaddr = inet_ntoa(in);
|
string ipaddr = inet_ntoa(in);
|
||||||
uint16_t port = ntohs(*(uint16_t*)(peersData->getData()+i+4));
|
uint16_t port = ntohs(*(uint16_t*)(peersData->getData()+i+4));
|
||||||
PeerHandle peer = new Peer(ipaddr, port, pieceLength, totalLength);
|
PeerHandle peer = new Peer(ipaddr, port);
|
||||||
peers.push_back(peer);
|
peers.push_back(peer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,8 +60,7 @@ Peers DefaultPeerListProcessor::extractPeer(const MetaEntry* peersEntry) {
|
||||||
if(!ip || !port || !port->isNumber()) {
|
if(!ip || !port || !port->isNumber()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
PeerHandle peer = new Peer(ip->toString(), port->toInt(), pieceLength,
|
PeerHandle peer = new Peer(ip->toString(), port->toInt());
|
||||||
totalLength);
|
|
||||||
peers.push_back(peer);
|
peers.push_back(peer);
|
||||||
}
|
}
|
||||||
return peers;
|
return peers;
|
||||||
|
|
49
src/Peer.cc
49
src/Peer.cc
|
@ -39,18 +39,19 @@
|
||||||
# include "MessageDigestHelper.h"
|
# include "MessageDigestHelper.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
|
||||||
Peer::Peer(string ipaddr, uint16_t port, int32_t pieceLength, int64_t totalLength):
|
#define BAD_CONDITION_INTERVAL 10
|
||||||
|
|
||||||
|
Peer::Peer(string ipaddr, uint16_t port):
|
||||||
ipaddr(ipaddr),
|
ipaddr(ipaddr),
|
||||||
port(port),
|
port(port),
|
||||||
|
_bitfield(0),
|
||||||
sessionUploadLength(0),
|
sessionUploadLength(0),
|
||||||
sessionDownloadLength(0),
|
sessionDownloadLength(0),
|
||||||
active(false),
|
active(false),
|
||||||
_badConditionStartTime(0),
|
_badConditionStartTime(0),
|
||||||
_badConditionInterval(10)
|
_seeder(false)
|
||||||
{
|
{
|
||||||
resetStatus();
|
resetStatus();
|
||||||
this->bitfield = BitfieldManFactory::getFactoryInstance()->
|
|
||||||
createBitfieldMan(pieceLength, totalLength);
|
|
||||||
string idSeed = ipaddr+":"+Util::itos(port);
|
string idSeed = ipaddr+":"+Util::itos(port);
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
id = MessageDigestHelper::digestString("sha1", idSeed);
|
id = MessageDigestHelper::digestString("sha1", idSeed);
|
||||||
|
@ -59,19 +60,34 @@ Peer::Peer(string ipaddr, uint16_t port, int32_t pieceLength, int64_t totalLengt
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::reconfigure(int32_t pieceLength, int64_t totalLength)
|
void Peer::allocateBitfield(int32_t pieceLength, int64_t totalLength)
|
||||||
{
|
{
|
||||||
delete bitfield;
|
delete _bitfield;
|
||||||
this->bitfield = BitfieldManFactory::getFactoryInstance()->
|
_bitfield = BitfieldManFactory::getFactoryInstance()->createBitfieldMan(pieceLength, totalLength);
|
||||||
createBitfieldMan(pieceLength, totalLength);
|
}
|
||||||
|
|
||||||
|
void Peer::deallocateBitfield()
|
||||||
|
{
|
||||||
|
delete _bitfield;
|
||||||
|
_bitfield = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Peer::updateSeeder()
|
||||||
|
{
|
||||||
|
assert(_bitfield);
|
||||||
|
if(_bitfield->isAllBitSet()) {
|
||||||
|
_seeder = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::updateBitfield(int32_t index, int32_t operation) {
|
void Peer::updateBitfield(int32_t index, int32_t operation) {
|
||||||
|
assert(_bitfield);
|
||||||
if(operation == 1) {
|
if(operation == 1) {
|
||||||
bitfield->setBit(index);
|
_bitfield->setBit(index);
|
||||||
} else if(operation == 0) {
|
} else if(operation == 0) {
|
||||||
bitfield->unsetBit(index);
|
_bitfield->unsetBit(index);
|
||||||
}
|
}
|
||||||
|
updateSeeder();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define THRESHOLD 1024*1024*2
|
#define THRESHOLD 1024*1024*2
|
||||||
|
@ -84,11 +100,8 @@ bool Peer::shouldBeChoking() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Peer::hasPiece(int32_t index) const {
|
bool Peer::hasPiece(int32_t index) const {
|
||||||
return bitfield->isBitSet(index);
|
assert(_bitfield);
|
||||||
}
|
return _bitfield->isBitSet(index);
|
||||||
|
|
||||||
bool Peer::isSeeder() const {
|
|
||||||
return bitfield->isAllBitSet();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::resetStatus() {
|
void Peer::resetStatus() {
|
||||||
|
@ -133,7 +146,9 @@ void Peer::addAmAllowedIndex(int32_t index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::setAllBitfield() {
|
void Peer::setAllBitfield() {
|
||||||
bitfield->setAllBit();
|
assert(_bitfield);
|
||||||
|
_bitfield->setAllBit();
|
||||||
|
_seeder = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::updateLatency(int32_t latency) {
|
void Peer::updateLatency(int32_t latency) {
|
||||||
|
@ -147,7 +162,7 @@ void Peer::startBadCondition()
|
||||||
|
|
||||||
bool Peer::isGood() const
|
bool Peer::isGood() const
|
||||||
{
|
{
|
||||||
return _badConditionStartTime.elapsed(_badConditionInterval);
|
return _badConditionStartTime.elapsed(BAD_CONDITION_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Peer::getExtensionMessageID(const string& name)
|
uint8_t Peer::getExtensionMessageID(const string& name)
|
||||||
|
|
36
src/Peer.h
36
src/Peer.h
|
@ -63,7 +63,7 @@ public:
|
||||||
bool snubbing;
|
bool snubbing;
|
||||||
private:
|
private:
|
||||||
unsigned char peerId[PEER_ID_LENGTH];
|
unsigned char peerId[PEER_ID_LENGTH];
|
||||||
BitfieldMan* bitfield;
|
BitfieldMan* _bitfield;
|
||||||
bool fastExtensionEnabled;
|
bool fastExtensionEnabled;
|
||||||
// fast index set which a peer has sent to localhost.
|
// fast index set which a peer has sent to localhost.
|
||||||
Integers peerAllowedIndexSet;
|
Integers peerAllowedIndexSet;
|
||||||
|
@ -79,12 +79,14 @@ private:
|
||||||
string id;
|
string id;
|
||||||
Time _firstContactTime;
|
Time _firstContactTime;
|
||||||
Time _badConditionStartTime;
|
Time _badConditionStartTime;
|
||||||
int32_t _badConditionInterval;
|
bool _seeder;
|
||||||
|
|
||||||
|
void updateSeeder();
|
||||||
public:
|
public:
|
||||||
Peer(string ipaddr, uint16_t port, int32_t pieceLength, int64_t totalLength);
|
Peer(string ipaddr, uint16_t port);
|
||||||
|
|
||||||
~Peer() {
|
~Peer() {
|
||||||
delete bitfield;
|
delete _bitfield;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const Peer& p) {
|
bool operator==(const Peer& p) {
|
||||||
|
@ -163,10 +165,21 @@ public:
|
||||||
const unsigned char* getPeerId() const { return this->peerId; }
|
const unsigned char* getPeerId() const { return this->peerId; }
|
||||||
|
|
||||||
void setBitfield(const unsigned char* bitfield, int32_t bitfieldLength) {
|
void setBitfield(const unsigned char* bitfield, int32_t bitfieldLength) {
|
||||||
this->bitfield->setBitfield(bitfield, bitfieldLength);
|
assert(_bitfield);
|
||||||
|
_bitfield->setBitfield(bitfield, bitfieldLength);
|
||||||
|
updateSeeder();
|
||||||
}
|
}
|
||||||
const unsigned char* getBitfield() const { return bitfield->getBitfield(); }
|
|
||||||
int32_t getBitfieldLength() const { return bitfield->getBitfieldLength(); }
|
const unsigned char* getBitfield() const {
|
||||||
|
assert(_bitfield);
|
||||||
|
return _bitfield->getBitfield();
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t getBitfieldLength() const {
|
||||||
|
assert(_bitfield);
|
||||||
|
return _bitfield->getBitfieldLength();
|
||||||
|
}
|
||||||
|
|
||||||
void setAllBitfield();
|
void setAllBitfield();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -210,7 +223,10 @@ public:
|
||||||
|
|
||||||
bool hasPiece(int32_t index) const;
|
bool hasPiece(int32_t index) const;
|
||||||
|
|
||||||
bool isSeeder() const;
|
bool isSeeder() const
|
||||||
|
{
|
||||||
|
return _seeder;
|
||||||
|
}
|
||||||
|
|
||||||
void updateLatency(int32_t latency);
|
void updateLatency(int32_t latency);
|
||||||
int32_t getLatency() const { return latency; }
|
int32_t getLatency() const { return latency; }
|
||||||
|
@ -223,7 +239,9 @@ public:
|
||||||
|
|
||||||
bool isGood() const;
|
bool isGood() const;
|
||||||
|
|
||||||
void reconfigure(int32_t pieceLength, int64_t totalLength);
|
void allocateBitfield(int32_t pieceLength, int64_t totalLength);
|
||||||
|
|
||||||
|
void deallocateBitfield();
|
||||||
|
|
||||||
Time getFirstContactTime() const
|
Time getFirstContactTime() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -133,6 +133,7 @@ PeerInteractionCommand::PeerInteractionCommand(int32_t cuid,
|
||||||
|
|
||||||
setUploadLimit(e->option->getAsInt(PREF_MAX_UPLOAD_LIMIT));
|
setUploadLimit(e->option->getAsInt(PREF_MAX_UPLOAD_LIMIT));
|
||||||
peer->activate();
|
peer->activate();
|
||||||
|
peer->allocateBitfield(btContext->getPieceLength(), btContext->getTotalLength());
|
||||||
|
|
||||||
maxDownloadSpeedLimit = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
|
maxDownloadSpeedLimit = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
|
||||||
|
|
||||||
|
@ -140,6 +141,7 @@ PeerInteractionCommand::PeerInteractionCommand(int32_t cuid,
|
||||||
}
|
}
|
||||||
|
|
||||||
PeerInteractionCommand::~PeerInteractionCommand() {
|
PeerInteractionCommand::~PeerInteractionCommand() {
|
||||||
|
peer->deallocateBitfield();
|
||||||
peer->deactivate();
|
peer->deactivate();
|
||||||
PEER_OBJECT_CLUSTER(btContext)->unregisterHandle(peer->getId());
|
PEER_OBJECT_CLUSTER(btContext)->unregisterHandle(peer->getId());
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ bool PeerListenCommand::execute() {
|
||||||
if(peerInfo.first == localInfo.first) {
|
if(peerInfo.first == localInfo.first) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
PeerHandle peer = new Peer(peerInfo.first, 0, 0, 0);
|
PeerHandle peer = new Peer(peerInfo.first, 0);
|
||||||
PeerReceiveHandshakeCommand* command =
|
PeerReceiveHandshakeCommand* command =
|
||||||
new PeerReceiveHandshakeCommand(CUIDCounterSingletonHolder::instance()->newID(),
|
new PeerReceiveHandshakeCommand(CUIDCounterSingletonHolder::instance()->newID(),
|
||||||
peer, e, peerSocket);
|
peer, e, peerSocket);
|
||||||
|
|
|
@ -76,7 +76,6 @@ bool PeerReceiveHandshakeCommand::executeInternal()
|
||||||
TransferStat tstat = PEER_STORAGE(btContext)->calculateStat();
|
TransferStat tstat = PEER_STORAGE(btContext)->calculateStat();
|
||||||
if(!PIECE_STORAGE(btContext)->downloadFinished() && tstat.getDownloadSpeed() < _lowestSpeedLimit ||
|
if(!PIECE_STORAGE(btContext)->downloadFinished() && tstat.getDownloadSpeed() < _lowestSpeedLimit ||
|
||||||
BT_RUNTIME(btContext)->getConnections() < MAX_PEERS) {
|
BT_RUNTIME(btContext)->getConnections() < MAX_PEERS) {
|
||||||
peer->reconfigure(btContext->getPieceLength(), btContext->getTotalLength());
|
|
||||||
if(PEER_STORAGE(btContext)->addPeer(peer)) {
|
if(PEER_STORAGE(btContext)->addPeer(peer)) {
|
||||||
|
|
||||||
peer->cuid = cuid;
|
peer->cuid = cuid;
|
||||||
|
|
|
@ -105,6 +105,7 @@ string Piece::toString() const {
|
||||||
|
|
||||||
void Piece::reconfigure(int32_t length)
|
void Piece::reconfigure(int32_t length)
|
||||||
{
|
{
|
||||||
|
delete bitfield;
|
||||||
this->length = length;
|
this->length = length;
|
||||||
bitfield =
|
bitfield =
|
||||||
BitfieldManFactory::getFactoryInstance()->createBitfieldMan(_blockLength, length);
|
BitfieldManFactory::getFactoryInstance()->createBitfieldMan(_blockLength, length);
|
||||||
|
|
|
@ -68,7 +68,7 @@ void BtAllowedFastMessageTest::testGetMessage() {
|
||||||
void BtAllowedFastMessageTest::testDoReceivedAction() {
|
void BtAllowedFastMessageTest::testDoReceivedAction() {
|
||||||
BtAllowedFastMessage msg;
|
BtAllowedFastMessage msg;
|
||||||
msg.setIndex(1);
|
msg.setIndex(1);
|
||||||
PeerHandle peer = new Peer("localhost", 6969, 16*1024, 256*1024*1024);
|
PeerHandle peer = new Peer("localhost", 6969);
|
||||||
peer->setFastExtensionEnabled(true);
|
peer->setFastExtensionEnabled(true);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
CPPUNIT_ASSERT(!peer->isInPeerAllowedIndexSet(1));
|
CPPUNIT_ASSERT(!peer->isInPeerAllowedIndexSet(1));
|
||||||
|
@ -85,7 +85,7 @@ void BtAllowedFastMessageTest::testDoReceivedAction() {
|
||||||
void BtAllowedFastMessageTest::testOnSendComplete() {
|
void BtAllowedFastMessageTest::testOnSendComplete() {
|
||||||
BtAllowedFastMessage msg;
|
BtAllowedFastMessage msg;
|
||||||
msg.setIndex(1);
|
msg.setIndex(1);
|
||||||
PeerHandle peer = new Peer("localhost", 6969, 16*1024, 256*1024*1024);
|
PeerHandle peer = new Peer("localhost", 6969);
|
||||||
peer->setFastExtensionEnabled(true);
|
peer->setFastExtensionEnabled(true);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
CPPUNIT_ASSERT(!peer->isInAmAllowedIndexSet(1));
|
CPPUNIT_ASSERT(!peer->isInAmAllowedIndexSet(1));
|
||||||
|
|
|
@ -68,7 +68,8 @@ void BtBitfieldMessageTest::testGetMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtBitfieldMessageTest::testDoReceivedAction() {
|
void BtBitfieldMessageTest::testDoReceivedAction() {
|
||||||
PeerHandle peer = new Peer("host1", 6969, 16*1024, 16*16*1024);
|
PeerHandle peer = new Peer("host1", 6969);
|
||||||
|
peer->allocateBitfield(16*1024, 16*16*1024);
|
||||||
BtBitfieldMessage msg;
|
BtBitfieldMessage msg;
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
unsigned char bitfield[] = { 0xff, 0xff };
|
unsigned char bitfield[] = { 0xff, 0xff };
|
||||||
|
|
|
@ -23,7 +23,7 @@ public:
|
||||||
|
|
||||||
void setUp() {
|
void setUp() {
|
||||||
BtRegistry::unregisterAll();
|
BtRegistry::unregisterAll();
|
||||||
peer = new Peer("host", 6969, 16*1024, 256*1024);
|
peer = new Peer("host", 6969);
|
||||||
btContext = new MockBtContext();
|
btContext = new MockBtContext();
|
||||||
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
||||||
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
||||||
|
|
|
@ -26,7 +26,7 @@ public:
|
||||||
|
|
||||||
void setUp() {
|
void setUp() {
|
||||||
BtRegistry::unregisterAll();
|
BtRegistry::unregisterAll();
|
||||||
peer = new Peer("host", 6969, 16*1024, 256*1024);
|
peer = new Peer("host", 6969);
|
||||||
btContext = new MockBtContext();
|
btContext = new MockBtContext();
|
||||||
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
||||||
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
||||||
|
@ -108,7 +108,6 @@ void BtChokeMessageTest::testGetMessage() {
|
||||||
|
|
||||||
void BtChokeMessageTest::testDoReceivedAction() {
|
void BtChokeMessageTest::testDoReceivedAction() {
|
||||||
BtChokeMessage msg;
|
BtChokeMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
msg.setBtContext(btContext);
|
msg.setBtContext(btContext);
|
||||||
|
|
||||||
|
@ -125,7 +124,6 @@ void BtChokeMessageTest::testDoReceivedAction() {
|
||||||
|
|
||||||
void BtChokeMessageTest::testOnSendComplete() {
|
void BtChokeMessageTest::testOnSendComplete() {
|
||||||
BtChokeMessage msg;
|
BtChokeMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
msg.setBtContext(btContext);
|
msg.setBtContext(btContext);
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ public:
|
||||||
CPPUNIT_TEST_SUITE_REGISTRATION(BtExtendedMessageTest);
|
CPPUNIT_TEST_SUITE_REGISTRATION(BtExtendedMessageTest);
|
||||||
|
|
||||||
void BtExtendedMessageTest::testCreate() {
|
void BtExtendedMessageTest::testCreate() {
|
||||||
PeerHandle peer = new Peer("192.168.0.1", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("192.168.0.1", 6969);
|
||||||
peer->setExtension("charlie", 1);
|
peer->setExtension("charlie", 1);
|
||||||
MockBtContextHandle ctx = new MockBtContext();
|
MockBtContextHandle ctx = new MockBtContext();
|
||||||
unsigned char infohash[20];
|
unsigned char infohash[20];
|
||||||
|
|
|
@ -58,7 +58,8 @@ void BtHaveAllMessageTest::testGetMessage() {
|
||||||
|
|
||||||
void BtHaveAllMessageTest::testDoReceivedAction() {
|
void BtHaveAllMessageTest::testDoReceivedAction() {
|
||||||
BtHaveAllMessage msg;
|
BtHaveAllMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
|
peer->allocateBitfield(16*1024, 256*1024);
|
||||||
peer->setFastExtensionEnabled(true);
|
peer->setFastExtensionEnabled(true);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,8 @@ void BtHaveMessageTest::testGetMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtHaveMessageTest::testDoReceivedAction() {
|
void BtHaveMessageTest::testDoReceivedAction() {
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
|
peer->allocateBitfield(16*1024, 256*1024);
|
||||||
BtHaveMessage msg;
|
BtHaveMessage msg;
|
||||||
msg.setIndex(1);
|
msg.setIndex(1);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
|
|
@ -60,7 +60,7 @@ void BtHaveNoneMessageTest::testGetMessage() {
|
||||||
|
|
||||||
void BtHaveNoneMessageTest::testDoReceivedAction() {
|
void BtHaveNoneMessageTest::testDoReceivedAction() {
|
||||||
BtHaveNoneMessage msg;
|
BtHaveNoneMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
peer->setFastExtensionEnabled(true);
|
peer->setFastExtensionEnabled(true);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
msg.doReceivedAction();
|
msg.doReceivedAction();
|
||||||
|
|
|
@ -62,7 +62,7 @@ void BtInterestedMessageTest::testGetMessage() {
|
||||||
|
|
||||||
void BtInterestedMessageTest::testDoReceivedAction() {
|
void BtInterestedMessageTest::testDoReceivedAction() {
|
||||||
BtInterestedMessage msg;
|
BtInterestedMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
CPPUNIT_ASSERT(!peer->peerInterested);
|
CPPUNIT_ASSERT(!peer->peerInterested);
|
||||||
msg.doReceivedAction();
|
msg.doReceivedAction();
|
||||||
|
@ -71,7 +71,7 @@ void BtInterestedMessageTest::testDoReceivedAction() {
|
||||||
|
|
||||||
void BtInterestedMessageTest::testOnSendComplete() {
|
void BtInterestedMessageTest::testOnSendComplete() {
|
||||||
BtInterestedMessage msg;
|
BtInterestedMessage msg;
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
CPPUNIT_ASSERT(!peer->amInterested);
|
CPPUNIT_ASSERT(!peer->amInterested);
|
||||||
msg.onSendComplete();
|
msg.onSendComplete();
|
||||||
|
|
|
@ -61,7 +61,7 @@ void BtNotInterestedMessageTest::testGetMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtNotInterestedMessageTest::testDoReceivedAction() {
|
void BtNotInterestedMessageTest::testDoReceivedAction() {
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
peer->peerInterested = true;
|
peer->peerInterested = true;
|
||||||
BtNotInterestedMessage msg;
|
BtNotInterestedMessage msg;
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
@ -71,7 +71,7 @@ void BtNotInterestedMessageTest::testDoReceivedAction() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtNotInterestedMessageTest::testOnSendComplete() {
|
void BtNotInterestedMessageTest::testOnSendComplete() {
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
peer->amInterested = true;
|
peer->amInterested = true;
|
||||||
BtNotInterestedMessage msg;
|
BtNotInterestedMessage msg;
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
|
|
@ -80,7 +80,7 @@ public:
|
||||||
btContext->setPieceLength(16*1024);
|
btContext->setPieceLength(16*1024);
|
||||||
btContext->setTotalLength(256*1024);
|
btContext->setTotalLength(256*1024);
|
||||||
|
|
||||||
peer = new Peer("host", 6969, 16*1024, 256*1024);
|
peer = new Peer("host", 6969);
|
||||||
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
||||||
new PeerObjectCluster());
|
new PeerObjectCluster());
|
||||||
PEER_OBJECT_CLUSTER(btContext)->registerHandle(peer->getId(), new PeerObject());
|
PEER_OBJECT_CLUSTER(btContext)->registerHandle(peer->getId(), new PeerObject());
|
||||||
|
|
|
@ -66,7 +66,7 @@ public:
|
||||||
|
|
||||||
void setUp() {
|
void setUp() {
|
||||||
BtRegistry::unregisterAll();
|
BtRegistry::unregisterAll();
|
||||||
peer = new Peer("host", 6969, 16*1024, 256*1024);
|
peer = new Peer("host", 6969);
|
||||||
|
|
||||||
MockBtContextHandle btContext = new MockBtContext();
|
MockBtContextHandle btContext = new MockBtContext();
|
||||||
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
btContext->setInfoHash((const unsigned char*)"12345678901234567890");
|
||||||
|
|
|
@ -98,7 +98,7 @@ public:
|
||||||
BtRegistry::registerPieceStorage(btContext->getInfoHashAsString(),
|
BtRegistry::registerPieceStorage(btContext->getInfoHashAsString(),
|
||||||
pieceStorage);
|
pieceStorage);
|
||||||
|
|
||||||
peer = new Peer("host", 6969, btContext->getPieceLength(), btContext->getTotalLength());
|
peer = new Peer("host", 6969);
|
||||||
|
|
||||||
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
||||||
new PeerObjectCluster());
|
new PeerObjectCluster());
|
||||||
|
|
|
@ -60,7 +60,7 @@ void BtUnchokeMessageTest::testGetMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtUnchokeMessageTest::testDoReceivedAction() {
|
void BtUnchokeMessageTest::testDoReceivedAction() {
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
peer->peerChoking = true;
|
peer->peerChoking = true;
|
||||||
BtUnchokeMessage msg;
|
BtUnchokeMessage msg;
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
@ -71,7 +71,7 @@ void BtUnchokeMessageTest::testDoReceivedAction() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BtUnchokeMessageTest::testOnSendComplete() {
|
void BtUnchokeMessageTest::testOnSendComplete() {
|
||||||
PeerHandle peer = new Peer("host", 6969, 16*1024, 256*1024);
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
peer->amChoking = true;
|
peer->amChoking = true;
|
||||||
BtUnchokeMessage msg;
|
BtUnchokeMessage msg;
|
||||||
msg.setPeer(peer);
|
msg.setPeer(peer);
|
||||||
|
|
|
@ -129,9 +129,7 @@ public:
|
||||||
void setUp() {
|
void setUp() {
|
||||||
btContext = new DefaultBtContext();
|
btContext = new DefaultBtContext();
|
||||||
btContext->load("test.torrent");
|
btContext->load("test.torrent");
|
||||||
peer = new Peer("192.168.0.1", 6969,
|
peer = new Peer("192.168.0.1", 6969);
|
||||||
btContext->getPieceLength(),
|
|
||||||
btContext->getTotalLength());
|
|
||||||
peerStorage = new MockPeerStorage();
|
peerStorage = new MockPeerStorage();
|
||||||
pieceStorage = new MockPieceStorage();
|
pieceStorage = new MockPieceStorage();
|
||||||
BtRegistry::unregisterAll();
|
BtRegistry::unregisterAll();
|
||||||
|
|
|
@ -27,7 +27,7 @@ public:
|
||||||
btContext->setInfoHash(infohash);
|
btContext->setInfoHash(infohash);
|
||||||
_btContext = btContext;
|
_btContext = btContext;
|
||||||
|
|
||||||
_peer = new Peer("192.168.0.1", 6969, 16*1024, 256*1024);
|
_peer = new Peer("192.168.0.1", 6969);
|
||||||
_peer->setExtendedMessagingEnabled(true);
|
_peer->setExtendedMessagingEnabled(true);
|
||||||
|
|
||||||
MockExtensionMessageFactoryHandle exmsgFactory = new MockExtensionMessageFactory();
|
MockExtensionMessageFactoryHandle exmsgFactory = new MockExtensionMessageFactory();
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
BtRegistry::registerPieceStorage(btContext->getInfoHashAsString(),
|
BtRegistry::registerPieceStorage(btContext->getInfoHashAsString(),
|
||||||
new MockPieceStorage());
|
new MockPieceStorage());
|
||||||
|
|
||||||
PeerHandle peer = new Peer("host", 6969, btContext->getPieceLength(), btContext->getTotalLength());
|
PeerHandle peer = new Peer("host", 6969);
|
||||||
|
|
||||||
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
BtRegistry::registerPeerObjectCluster(btContext->getInfoHashAsString(),
|
||||||
new PeerObjectCluster());
|
new PeerObjectCluster());
|
||||||
|
|
|
@ -35,7 +35,7 @@ public:
|
||||||
BtRegistry::registerBtRuntime(_btContext->getInfoHashAsString(),
|
BtRegistry::registerBtRuntime(_btContext->getInfoHashAsString(),
|
||||||
btRuntime);
|
btRuntime);
|
||||||
|
|
||||||
_peer = new Peer("192.168.0.1", 6969, 16*1024, 256*1024);
|
_peer = new Peer("192.168.0.1", 6969);
|
||||||
_peer->setExtension("ut_pex", 1);
|
_peer->setExtension("ut_pex", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,8 +54,8 @@ void DefaultPeerStorageTest::testCountPeer() {
|
||||||
CPPUNIT_ASSERT_EQUAL((int32_t)0,
|
CPPUNIT_ASSERT_EQUAL((int32_t)0,
|
||||||
ps.countPeer());
|
ps.countPeer());
|
||||||
|
|
||||||
PeerHandle peer(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
ps.addPeer(peer);
|
ps.addPeer(peer);
|
||||||
CPPUNIT_ASSERT_EQUAL((int32_t)1,
|
CPPUNIT_ASSERT_EQUAL((int32_t)1,
|
||||||
ps.countPeer());
|
ps.countPeer());
|
||||||
|
@ -64,12 +64,9 @@ void DefaultPeerStorageTest::testCountPeer() {
|
||||||
void DefaultPeerStorageTest::testDeleteUnusedPeer() {
|
void DefaultPeerStorageTest::testDeleteUnusedPeer() {
|
||||||
DefaultPeerStorage ps(btContext, option);
|
DefaultPeerStorage ps(btContext, option);
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
PeerHandle peer2(new Peer("192.168.0.2", 6889));
|
||||||
PeerHandle peer2(new Peer("192.168.0.2", 6889, btContext->getPieceLength(),
|
PeerHandle peer3(new Peer("192.168.0.3", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
PeerHandle peer3(new Peer("192.168.0.3", 6889, btContext->getPieceLength(),
|
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
ps.addPeer(peer2);
|
ps.addPeer(peer2);
|
||||||
|
@ -98,12 +95,9 @@ void DefaultPeerStorageTest::testDeleteUnusedPeer() {
|
||||||
void DefaultPeerStorageTest::testAddPeer() {
|
void DefaultPeerStorageTest::testAddPeer() {
|
||||||
DefaultPeerStorage ps(btContext, option);
|
DefaultPeerStorage ps(btContext, option);
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
PeerHandle peer2(new Peer("192.168.0.2", 6889));
|
||||||
PeerHandle peer2(new Peer("192.168.0.2", 6889, btContext->getPieceLength(),
|
PeerHandle peer3(new Peer("192.168.0.3", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
PeerHandle peer3(new Peer("192.168.0.3", 6889, btContext->getPieceLength(),
|
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
ps.addPeer(peer2);
|
ps.addPeer(peer2);
|
||||||
|
@ -118,15 +112,14 @@ void DefaultPeerStorageTest::testAddPeer() {
|
||||||
|
|
||||||
ps.setMaxPeerListSize(3);
|
ps.setMaxPeerListSize(3);
|
||||||
|
|
||||||
PeerHandle peer4(new Peer("192.168.0.4", 6889, btContext->getPieceLength(),
|
PeerHandle peer4(new Peer("192.168.0.4", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
CPPUNIT_ASSERT(ps.addPeer(peer4));
|
CPPUNIT_ASSERT(ps.addPeer(peer4));
|
||||||
// peer1 was deleted.
|
// peer1 was deleted.
|
||||||
CPPUNIT_ASSERT_EQUAL((int32_t)3, ps.countPeer());
|
CPPUNIT_ASSERT_EQUAL((int32_t)3, ps.countPeer());
|
||||||
|
|
||||||
PeerHandle peer5(new Peer("192.168.0.4", 0, btContext->getPieceLength(),
|
PeerHandle peer5(new Peer("192.168.0.4", 0));
|
||||||
btContext->getTotalLength()));
|
|
||||||
peer5->port = 6889;
|
peer5->port = 6889;
|
||||||
|
|
||||||
// this returns false because the peer which has same ip and port has already added
|
// this returns false because the peer which has same ip and port has already added
|
||||||
|
@ -137,8 +130,7 @@ void DefaultPeerStorageTest::testGetPeer() {
|
||||||
DefaultPeerStorage ps(btContext, option);
|
DefaultPeerStorage ps(btContext, option);
|
||||||
ps.setBtRuntime(btRuntime);
|
ps.setBtRuntime(btRuntime);
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
|
|
||||||
|
@ -161,8 +153,7 @@ void DefaultPeerStorageTest::testIsPeerAvailable() {
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(false, ps.isPeerAvailable());
|
CPPUNIT_ASSERT_EQUAL(false, ps.isPeerAvailable());
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
|
|
||||||
|
@ -184,8 +175,7 @@ void DefaultPeerStorageTest::testActivatePeer() {
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)0, ps.getActivePeers().size());
|
CPPUNIT_ASSERT_EQUAL((size_t)0, ps.getActivePeers().size());
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
|
||||||
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
|
|
||||||
|
@ -205,15 +195,12 @@ void DefaultPeerStorageTest::testReturnPeer()
|
||||||
{
|
{
|
||||||
DefaultPeerStorage ps(btContext, option);
|
DefaultPeerStorage ps(btContext, option);
|
||||||
|
|
||||||
PeerHandle peer1(new Peer("192.168.0.1", 6889, btContext->getPieceLength(),
|
PeerHandle peer1(new Peer("192.168.0.1", 6889));
|
||||||
btContext->getTotalLength()));
|
PeerHandle peer2(new Peer("192.168.0.2", 6889));
|
||||||
PeerHandle peer2(new Peer("192.168.0.2", 6889, btContext->getPieceLength(),
|
|
||||||
btContext->getTotalLength()));
|
|
||||||
ps.addPeer(peer1);
|
ps.addPeer(peer1);
|
||||||
ps.addPeer(peer2);
|
ps.addPeer(peer2);
|
||||||
|
|
||||||
PeerHandle peer3(new Peer("192.168.0.3", 0, btContext->getPieceLength(),
|
PeerHandle peer3(new Peer("192.168.0.3", 0));
|
||||||
btContext->getTotalLength()));
|
|
||||||
ps.addPeer(peer3);
|
ps.addPeer(peer3);
|
||||||
|
|
||||||
ps.returnPeer(peer2);
|
ps.returnPeer(peer2);
|
||||||
|
|
|
@ -41,9 +41,9 @@ public:
|
||||||
void setUp() {
|
void setUp() {
|
||||||
btContext = new DefaultBtContext();
|
btContext = new DefaultBtContext();
|
||||||
btContext->load("test.torrent");
|
btContext->load("test.torrent");
|
||||||
peer = PeerHandle(new Peer("192.168.0.1", 6889,
|
peer = new Peer("192.168.0.1", 6889);
|
||||||
btContext->getPieceLength(),
|
peer->allocateBitfield(btContext->getPieceLength(),
|
||||||
btContext->getTotalLength()));
|
btContext->getTotalLength());
|
||||||
option = new Option();
|
option = new Option();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ void HandshakeExtensionMessageTest::testToString()
|
||||||
|
|
||||||
void HandshakeExtensionMessageTest::testDoReceivedAction()
|
void HandshakeExtensionMessageTest::testDoReceivedAction()
|
||||||
{
|
{
|
||||||
PeerHandle peer = new Peer("192.168.0.1", 0, 1, 1);
|
PeerHandle peer = new Peer("192.168.0.1", 0);
|
||||||
HandshakeExtensionMessage msg;
|
HandshakeExtensionMessage msg;
|
||||||
msg.setClientVersion("aria2");
|
msg.setClientVersion("aria2");
|
||||||
msg.setTCPPort(6889);
|
msg.setTCPPort(6889);
|
||||||
|
|
|
@ -16,7 +16,7 @@ public:
|
||||||
PeerTest():peer(0) {}
|
PeerTest():peer(0) {}
|
||||||
|
|
||||||
void setUp() {
|
void setUp() {
|
||||||
peer = new Peer("localhost", 6969, 16*1024, 256*1024*1024);
|
peer = new Peer("localhost", 6969);
|
||||||
}
|
}
|
||||||
|
|
||||||
void testPeerAllowedIndexSet();
|
void testPeerAllowedIndexSet();
|
||||||
|
|
|
@ -1,191 +0,0 @@
|
||||||
#include "TorrentMan.h"
|
|
||||||
#include <string>
|
|
||||||
#include <cppunit/extensions/HelperMacros.h>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class TorrentManTest:public CppUnit::TestFixture {
|
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE(TorrentManTest);
|
|
||||||
/*
|
|
||||||
CPPUNIT_TEST(testUpdatePeers);
|
|
||||||
//CPPUNIT_TEST(testUpdatePeer);
|
|
||||||
CPPUNIT_TEST(testGetPeer);
|
|
||||||
CPPUNIT_TEST(testGetMissingPiece);
|
|
||||||
CPPUNIT_TEST(testCancelPiece);
|
|
||||||
CPPUNIT_TEST(testAddPeer);
|
|
||||||
*/
|
|
||||||
CPPUNIT_TEST_SUITE_END();
|
|
||||||
private:
|
|
||||||
|
|
||||||
public:
|
|
||||||
void setUp() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void testUpdatePeers();
|
|
||||||
//void testUpdatePeer();
|
|
||||||
void testGetPeer();
|
|
||||||
void testGetMissingPiece();
|
|
||||||
void testCancelPiece();
|
|
||||||
void testAddPeer();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE_REGISTRATION( TorrentManTest );
|
|
||||||
|
|
||||||
Peers createPeers() {
|
|
||||||
Peers peers;
|
|
||||||
Peer* peer1 = new Peer("192.168.0.1", 6881, 512*1024, 5242870);
|
|
||||||
peer1->entryId = 1;
|
|
||||||
Peer* peer2 = new Peer("192.168.0.2", 6881, 512*1024, 5242870);
|
|
||||||
peer2->entryId = 2;
|
|
||||||
Peer* peer3 = new Peer("192.168.0.3", 6881, 512*1024, 5242870);
|
|
||||||
peer3->entryId = 3;
|
|
||||||
peers.push_back(peer1);
|
|
||||||
peers.push_back(peer2);
|
|
||||||
peers.push_back(peer3);
|
|
||||||
return peers;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
void TorrentManTest::testUpdatePeers() {
|
|
||||||
TorrentMan tm;
|
|
||||||
Peers peers = createPeers();
|
|
||||||
tm.updatePeers(peers);
|
|
||||||
const Peers& peersGot = tm.getPeers();
|
|
||||||
Peers::const_iterator itr = peersGot.begin();
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.1"), (*itr)->ipaddr);
|
|
||||||
itr++;
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.2"), (*itr)->ipaddr);
|
|
||||||
itr++;
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.3"), (*itr)->ipaddr);
|
|
||||||
itr++;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
void TorrentManTest::testUpdatePeer() {
|
|
||||||
TorrentMan tm;
|
|
||||||
Peers peers = createPeers();
|
|
||||||
tm.updatePeers(peers);
|
|
||||||
Peer* peer = tm.getPeer(1);
|
|
||||||
peer->amChocking = true;
|
|
||||||
peer->amInterested = true;
|
|
||||||
tm.updatePeer(peer);
|
|
||||||
|
|
||||||
Peers::const_iterator itr = tm.getPeers().begin();
|
|
||||||
CPPUNIT_ASSERT_EQUAL(3, (int)tm.getPeers().size());
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.1"), itr->ipaddr);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(true, itr->amChocking);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(true, itr->amInterested);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(1, itr->cuid);
|
|
||||||
itr++;
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.2"), itr->ipaddr);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(false, itr->amChocking);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(false, itr->amInterested);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(0, itr->cuid);
|
|
||||||
itr++;
|
|
||||||
CPPUNIT_ASSERT_EQUAL(string("192.168.0.3"), itr->ipaddr);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(false, itr->amChocking);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(false, itr->amInterested);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(0, itr->cuid);
|
|
||||||
itr++;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
void TorrentManTest::testGetPeer() {
|
|
||||||
TorrentMan tm;
|
|
||||||
Peers peers = createPeers();
|
|
||||||
tm.updatePeers(peers);
|
|
||||||
CPPUNIT_ASSERT(tm.getPeer() != Peer::nullPeer);
|
|
||||||
CPPUNIT_ASSERT(tm.getPeer() != Peer::nullPeer);
|
|
||||||
CPPUNIT_ASSERT(tm.getPeer() != Peer::nullPeer);
|
|
||||||
CPPUNIT_ASSERT(tm.getPeer() == Peer::nullPeer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TorrentManTest::testGetMissingPiece() {
|
|
||||||
TorrentMan tm;
|
|
||||||
tm.pieceLength = 512*1024;
|
|
||||||
tm.pieces = 10;
|
|
||||||
tm.totalSize = 5242870;
|
|
||||||
tm.initBitfield();
|
|
||||||
|
|
||||||
unsigned char peerBitfield[2] = { 0xff, 0xff };
|
|
||||||
Piece piece1 = tm.getMissingPiece(peerBitfield, 2);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(0, piece1.getIndex());
|
|
||||||
CPPUNIT_ASSERT_EQUAL(512*1024, piece1.getLength());
|
|
||||||
|
|
||||||
Piece piece2 = tm.getMissingPiece(peerBitfield, 2);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(1, piece2.getIndex());
|
|
||||||
CPPUNIT_ASSERT_EQUAL(512*1024, piece2.getLength());
|
|
||||||
|
|
||||||
tm.completePiece(piece1);
|
|
||||||
|
|
||||||
int len = tm.getBitfieldLength();
|
|
||||||
const unsigned char* bitfield = tm.getBitfield();
|
|
||||||
CPPUNIT_ASSERT_EQUAL(2, len);
|
|
||||||
CPPUNIT_ASSERT(bitfield[0]&(1 << 7));
|
|
||||||
for(int i = 0; i < 7; i++) {
|
|
||||||
CPPUNIT_ASSERT(!(bitfield[0]&(1 << i)));
|
|
||||||
}
|
|
||||||
|
|
||||||
tm.completePiece(piece2);
|
|
||||||
bitfield = tm.getBitfield();
|
|
||||||
CPPUNIT_ASSERT_EQUAL(2, len);
|
|
||||||
CPPUNIT_ASSERT(bitfield[0]&(1 << 7));
|
|
||||||
CPPUNIT_ASSERT(bitfield[0]&(1 << 6));
|
|
||||||
for(int i = 0; i < 6; i++) {
|
|
||||||
CPPUNIT_ASSERT(!(bitfield[0]&(1 << i)));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < 8; i++) {
|
|
||||||
CPPUNIT_ASSERT(!IS_NULL_PIECE(tm.getMissingPiece(peerBitfield, 2)));
|
|
||||||
}
|
|
||||||
CPPUNIT_ASSERT(IS_NULL_PIECE(tm.getMissingPiece(peerBitfield, 2)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void TorrentManTest::testCancelPiece() {
|
|
||||||
TorrentMan tm;
|
|
||||||
tm.pieceLength = 512*1024;
|
|
||||||
tm.pieces = 10;
|
|
||||||
tm.totalSize = 5242870;
|
|
||||||
tm.initBitfield();
|
|
||||||
|
|
||||||
unsigned char peerBitfield[2] = { 0xff, 0xff };
|
|
||||||
Piece piece = tm.getMissingPiece(peerBitfield, 2);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(0, piece.getIndex());
|
|
||||||
CPPUNIT_ASSERT_EQUAL(512*1024, piece.getLength());
|
|
||||||
|
|
||||||
tm.cancelPiece(piece);
|
|
||||||
int len = tm.getBitfieldLength();
|
|
||||||
const unsigned char* bitfield = tm.getBitfield();
|
|
||||||
for(int i = 0; i < 8; i++) {
|
|
||||||
CPPUNIT_ASSERT(!(bitfield[0]&(1 << i)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TorrentManTest::testAddPeer() {
|
|
||||||
TorrentMan tm;
|
|
||||||
Peers peers = createPeers();
|
|
||||||
tm.updatePeers(peers);
|
|
||||||
|
|
||||||
// try to add already added peer
|
|
||||||
Peer* dupPeer = new Peer("192.168.0.2", 6881);
|
|
||||||
CPPUNIT_ASSERT(!tm.addPeer(dupPeer));
|
|
||||||
CPPUNIT_ASSERT_EQUAL(3, (int)tm.getPeers().size());
|
|
||||||
|
|
||||||
// duplicate flag on
|
|
||||||
CPPUNIT_ASSERT(tm.addPeer(dupPeer, true));
|
|
||||||
CPPUNIT_ASSERT_EQUAL(4, (int)tm.getPeers().size());
|
|
||||||
|
|
||||||
// cannot add error peer even though duplicte flag turns on
|
|
||||||
dupPeer->error = 1;
|
|
||||||
Peer* dupPeer2 = new Peer("192.168.0.2", 6881);
|
|
||||||
CPPUNIT_ASSERT(!tm.addPeer(dupPeer2, true));
|
|
||||||
CPPUNIT_ASSERT_EQUAL(4, (int)tm.getPeers().size());
|
|
||||||
|
|
||||||
// try to add new peer
|
|
||||||
Peer* newPeer = new Peer("10.1.0.1", 6881);
|
|
||||||
CPPUNIT_ASSERT(tm.addPeer(newPeer));
|
|
||||||
CPPUNIT_ASSERT_EQUAL(5, (int)tm.getPeers().size());
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -67,14 +67,15 @@ void UTPexExtensionMessageTest::testGetExtensionName()
|
||||||
void UTPexExtensionMessageTest::testGetBencodedData()
|
void UTPexExtensionMessageTest::testGetBencodedData()
|
||||||
{
|
{
|
||||||
UTPexExtensionMessage msg(1);
|
UTPexExtensionMessage msg(1);
|
||||||
PeerHandle p1 = new Peer("192.168.0.1", 6881, 1, 1);
|
PeerHandle p1 = new Peer("192.168.0.1", 6881);
|
||||||
|
p1->allocateBitfield(256*1024, 1024*1024);
|
||||||
p1->setAllBitfield();
|
p1->setAllBitfield();
|
||||||
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
||||||
PeerHandle p2 = new Peer("10.1.1.2", 9999, 1, 1);
|
PeerHandle p2 = new Peer("10.1.1.2", 9999);
|
||||||
msg.addFreshPeer(p2);
|
msg.addFreshPeer(p2);
|
||||||
PeerHandle p3 = new Peer("192.168.0.2", 6882, 1, 1);
|
PeerHandle p3 = new Peer("192.168.0.2", 6882);
|
||||||
msg.addDroppedPeer(p3);
|
msg.addDroppedPeer(p3);
|
||||||
PeerHandle p4 = new Peer("10.1.1.3", 10000, 1, 1);
|
PeerHandle p4 = new Peer("10.1.1.3", 10000);
|
||||||
msg.addDroppedPeer(p4);
|
msg.addDroppedPeer(p4);
|
||||||
|
|
||||||
char c1[6];
|
char c1[6];
|
||||||
|
@ -99,14 +100,15 @@ void UTPexExtensionMessageTest::testGetBencodedData()
|
||||||
void UTPexExtensionMessageTest::testToString()
|
void UTPexExtensionMessageTest::testToString()
|
||||||
{
|
{
|
||||||
UTPexExtensionMessage msg(1);
|
UTPexExtensionMessage msg(1);
|
||||||
PeerHandle p1 = new Peer("192.168.0.1", 6881, 1, 1);
|
PeerHandle p1 = new Peer("192.168.0.1", 6881);
|
||||||
|
p1->allocateBitfield(256*1024, 1024*1024);
|
||||||
p1->setAllBitfield();
|
p1->setAllBitfield();
|
||||||
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
||||||
PeerHandle p2 = new Peer("10.1.1.2", 9999, 1, 1);
|
PeerHandle p2 = new Peer("10.1.1.2", 9999);
|
||||||
msg.addFreshPeer(p2);
|
msg.addFreshPeer(p2);
|
||||||
PeerHandle p3 = new Peer("192.168.0.2", 6882, 1, 1);
|
PeerHandle p3 = new Peer("192.168.0.2", 6882);
|
||||||
msg.addDroppedPeer(p3);
|
msg.addDroppedPeer(p3);
|
||||||
PeerHandle p4 = new Peer("10.1.1.3", 10000, 1, 1);
|
PeerHandle p4 = new Peer("10.1.1.3", 10000);
|
||||||
msg.addDroppedPeer(p4);
|
msg.addDroppedPeer(p4);
|
||||||
CPPUNIT_ASSERT_EQUAL(string("ut_pex added=2, dropped=2"), msg.toString());
|
CPPUNIT_ASSERT_EQUAL(string("ut_pex added=2, dropped=2"), msg.toString());
|
||||||
}
|
}
|
||||||
|
@ -114,14 +116,15 @@ void UTPexExtensionMessageTest::testToString()
|
||||||
void UTPexExtensionMessageTest::testDoReceivedAction()
|
void UTPexExtensionMessageTest::testDoReceivedAction()
|
||||||
{
|
{
|
||||||
UTPexExtensionMessage msg(1);
|
UTPexExtensionMessage msg(1);
|
||||||
PeerHandle p1 = new Peer("192.168.0.1", 6881, 1, 1);
|
PeerHandle p1 = new Peer("192.168.0.1", 6881);
|
||||||
|
p1->allocateBitfield(256*1024, 1024*1024);
|
||||||
p1->setAllBitfield();
|
p1->setAllBitfield();
|
||||||
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
msg.addFreshPeer(p1);// added seeder, check add.f flag
|
||||||
PeerHandle p2 = new Peer("10.1.1.2", 9999, 1, 1);
|
PeerHandle p2 = new Peer("10.1.1.2", 9999);
|
||||||
msg.addFreshPeer(p2);
|
msg.addFreshPeer(p2);
|
||||||
PeerHandle p3 = new Peer("192.168.0.2", 6882, 1, 1);
|
PeerHandle p3 = new Peer("192.168.0.2", 6882);
|
||||||
msg.addDroppedPeer(p3);
|
msg.addDroppedPeer(p3);
|
||||||
PeerHandle p4 = new Peer("10.1.1.3", 10000, 1, 1);
|
PeerHandle p4 = new Peer("10.1.1.3", 10000);
|
||||||
msg.addDroppedPeer(p4);
|
msg.addDroppedPeer(p4);
|
||||||
msg.setBtContext(_btContext);
|
msg.setBtContext(_btContext);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue