Files
aria2/test/PeerConnectionTest.cc
Tatsuhiro Tsujikawa 9b7e4219d9 Reserve PeerConnection's buffer capacity according to number of pieces.
If the number of pieces gets bigger, the length of Bitfield message
payload exceeds the initial buffer capacity of PeerConnection, which
is MAX_PAYLOAD_LEN.  We expand buffer as necessary so that
PeerConnection can receive the Bitfield message.
2012-02-09 01:51:42 +09:00

38 lines
980 B
C++

#include "PeerConnection.h"
#include <cstring>
#include <cppunit/extensions/HelperMacros.h>
#include "Peer.h"
#include "SocketCore.h"
namespace aria2 {
class PeerConnectionTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(PeerConnectionTest);
CPPUNIT_TEST(testReserveBuffer);
CPPUNIT_TEST_SUITE_END();
public:
void testReserveBuffer();
};
CPPUNIT_TEST_SUITE_REGISTRATION(PeerConnectionTest);
void PeerConnectionTest::testReserveBuffer() {
PeerConnection con(1, SharedHandle<Peer>(), SharedHandle<SocketCore>());
con.presetBuffer((unsigned char*)"foo", 3);
CPPUNIT_ASSERT_EQUAL((size_t)MAX_PAYLOAD_LEN, con.getMaxPayloadLength());
CPPUNIT_ASSERT_EQUAL((size_t)3, con.getBufferLength());
size_t newLength = 32*1024;
con.reserveBuffer(newLength);
CPPUNIT_ASSERT_EQUAL(newLength, con.getMaxPayloadLength());
CPPUNIT_ASSERT_EQUAL((size_t)3, con.getBufferLength());
CPPUNIT_ASSERT(memcmp("foo", con.getBuffer(), 3) == 0);
}
} // namespace aria2