diff --git a/sflphone-common/src/audio/audiortp.cpp b/sflphone-common/src/audio/audiortp.cpp index b8d780c269bca8755e8571655cd57d7fd543d142..4109f03efe420dc913bbbf42e07048b84505efc9 100644 --- a/sflphone-common/src/audio/audiortp.cpp +++ b/sflphone-common/src/audio/audiortp.cpp @@ -186,8 +186,7 @@ AudioRtpRTX::~AudioRtpRTX () } _debug("Unbind call id %s from all participants\n", _ca->getCallId().c_str()); - // _audiolayer->getMainBuffer()->unBindCallID(_ca->getCallId()); - // _audiolayer->getMainBuffer()->unBindAll(_ca->getCallID()); + _audiolayer->getMainBuffer()->unBindAll(_ca->getCallId()); _ca = 0; @@ -233,7 +232,7 @@ AudioRtpRTX::initBuffers() spkrDataConverted = new SFLDataFormat[nbSamplesMax]; spkrDataDecoded = new SFLDataFormat[nbSamplesMax]; - _audiolayer->getMainBuffer()->bindCallID(_ca->getCallId()); + // _audiolayer->getMainBuffer()->bindCallID(_ca->getCallId()); } diff --git a/sflphone-common/src/audio/mainbuffer.cpp b/sflphone-common/src/audio/mainbuffer.cpp index bd53b5b7c2ffdaf91bc65a7bb95903444a67eb4f..e2bbe9e1323d7bb894ee91c07d314adbd857e51d 100644 --- a/sflphone-common/src/audio/mainbuffer.cpp +++ b/sflphone-common/src/audio/mainbuffer.cpp @@ -22,14 +22,12 @@ MainBuffer::MainBuffer() { - mixBuffer = new SFLDataFormat[5000]; + mixBuffer = new SFLDataFormat[STATIC_BUFSIZE]; } MainBuffer::~MainBuffer() { - removeRingBuffer(default_id); - removeCallIDSet(default_id); delete mixBuffer; mixBuffer = NULL; @@ -186,18 +184,24 @@ void MainBuffer::bindCallID(CallID call_id1, CallID call_id2) _debug("---- MainBuffer:: bindCallID %s and callid %s\n", call_id1.c_str(), call_id2.c_str()); - RingBuffer* ring_buffer = getRingBuffer(call_id1); - CallIDSet* callid_set = getCallIDSet(call_id1); + RingBuffer* ring_buffer; + CallIDSet* callid_set; - if(ring_buffer == NULL) + if((ring_buffer = getRingBuffer(call_id1)) == NULL) createRingBuffer(call_id1); - if(callid_set == NULL) + if((callid_set = getCallIDSet(call_id1)) == NULL) createCallIDSet(call_id1); + if((ring_buffer = getRingBuffer(call_id2)) == NULL) + createRingBuffer(call_id2); + + if((callid_set = getCallIDSet(call_id2)) == NULL) + createCallIDSet(call_id2); + getRingBuffer(call_id1)->createReadPointer(call_id2); getRingBuffer(call_id2)->createReadPointer(call_id1); - + addCallIDtoSet(call_id1, call_id2); addCallIDtoSet(call_id2, call_id1); @@ -218,19 +222,27 @@ void MainBuffer::unBindCallID(CallID call_id1, CallID call_id2) ringbuffer = getRingBuffer(call_id2); if(ringbuffer != NULL) + { + ringbuffer->removeReadPointer(call_id1); + if(ringbuffer->getNbReadPointer() == 0) + { + removeCallIDSet(call_id2); + removeRingBuffer(call_id2); + } + + } + ringbuffer = getRingBuffer(call_id1); if(ringbuffer != NULL) { ringbuffer->removeReadPointer(call_id2); - if(ringbuffer->getNbReadPointer() < 1) + if(ringbuffer->getNbReadPointer() == 0) { - removeCallIDSet(call_id1); removeRingBuffer(call_id1); - } } @@ -240,9 +252,17 @@ void MainBuffer::unBindCallID(CallID call_id1, CallID call_id2) void MainBuffer::unBindAll(CallID call_id) { - // CallIDSet* callid_set = getCallIDSet(call_id); + CallIDSet* callid_set = getCallIDSet(call_id); + + if (callid_set == NULL) + return; + + CallIDSet::iterator iter_set; - // CallIDSet::iterator iter_set = callid_set->begin + for (iter_set = callid_set->begin(); iter_set != callid_set->end(); iter_set++) + { + unBindCallID(call_id, *iter_set); + } } @@ -492,7 +512,7 @@ void MainBuffer::flushDefault() { ost::MutexLock guard (_mutex); - flushByID(default_id); + flushByID(default_id, default_id); } diff --git a/sflphone-common/src/audio/mainbuffer.h b/sflphone-common/src/audio/mainbuffer.h index 5229fb0126fdc2a48b3941b3001df1a20ec7aa40..ed122e207461183a114a59920c0281791e94f5d0 100644 --- a/sflphone-common/src/audio/mainbuffer.h +++ b/sflphone-common/src/audio/mainbuffer.h @@ -83,13 +83,13 @@ public: RingBuffer* getRingBuffer(CallID call_id); - int getDataByID(void *buffer, int toCopy, unsigned short volume = 100, CallID call_id = default_id, CallID reader_id = default_id); + int getDataByID(void *buffer, int toCopy, unsigned short volume, CallID call_id, CallID reader_id); - int availForGetByID(CallID call_id = default_id, CallID reader_id = default_id); + int availForGetByID(CallID call_id, CallID reader_id); - int discardByID(int toDiscard, CallID call_id = default_id, CallID reader_id = default_id); + int discardByID(int toDiscard, CallID call_id, CallID reader_id); - void flushByID(CallID call_id = default_id, CallID reader_id = default_id); + void flushByID(CallID call_id, CallID reader_id); RingBufferMap _ringBufferMap; diff --git a/sflphone-common/src/audio/pulselayer.cpp b/sflphone-common/src/audio/pulselayer.cpp index a2c86be4bceef283ceaff970f74779df08f4924c..c8c28c33eef3dc21b0f08ef98182bb49873fe03c 100644 --- a/sflphone-common/src/audio/pulselayer.cpp +++ b/sflphone-common/src/audio/pulselayer.cpp @@ -38,7 +38,7 @@ PulseLayer::PulseLayer (ManagerImpl* manager) , record() { _debug ("PulseLayer::Pulse audio constructor: Create context\n"); - out_buffer = new SFLDataFormat[SIZEBUF]; + out_buffer = new SFLDataFormat[STATIC_BUFSIZE]; } @@ -357,7 +357,7 @@ void PulseLayer::writeToSpeaker (void) // _debug("PulseLayer::writeToSpeaker _urgentRingBuffer.AvailForGet()\n"); urgentAvail = _urgentRingBuffer.AvailForGet(); - for(int k = 0; k < SIZEBUF; k++) + for(int k = 0; k < STATIC_BUFSIZE; k++) out_buffer[k] = 0; if (urgentAvail > 0) { diff --git a/sflphone-common/src/audio/ringbuffer.cpp b/sflphone-common/src/audio/ringbuffer.cpp index 832ea1706705b1f3d3eafc61f672ec1531a66b90..c8198df9a234935ba841edd991b96a94e19f3a91 100644 --- a/sflphone-common/src/audio/ringbuffer.cpp +++ b/sflphone-common/src/audio/ringbuffer.cpp @@ -55,7 +55,6 @@ void RingBuffer::flush (CallID call_id) { storeReadPointer(mEnd, call_id); - // mEnd = 0; } int @@ -63,13 +62,13 @@ RingBuffer::putLen() { int mStart; - if(_readpointer.size() > 1) + if(_readpointer.size() >= 1) { mStart = getSmallestReadPointer(); } else { - mStart = getReadPointer(); + mStart = 0; } return (mEnd + mBufferSize - mStart) % mBufferSize; @@ -95,7 +94,6 @@ RingBuffer::debug() int RingBuffer::getReadPointer(CallID call_id) { - _debug("RingBuffer::getReadPointer callid: %s\n", call_id.c_str()); if(getNbReadPointer() == 0) return 0; @@ -108,7 +106,6 @@ RingBuffer::getReadPointer(CallID call_id) } else { - _debug("RingBuffer::getReadPointer readpointer: %i\n", iter->second); return iter->second; } @@ -156,7 +153,7 @@ RingBuffer::createReadPointer(CallID call_id) _debug("---- createReadPointer call_id %s\n", call_id.c_str()); - _readpointer.insert(pair<CallID, int>(call_id, 0)); + _readpointer.insert(pair<CallID, int>(call_id, mEnd)); _debug("---- createReadPointer size: %i\n", _readpointer.size()); } @@ -174,13 +171,25 @@ RingBuffer::removeReadPointer(CallID call_id) } +bool +RingBuffer::hasThisReadPointer(CallID call_id) +{ + ReadPointer::iterator iter = _readpointer.find(call_id); + if(iter == _readpointer.end()) + { + return false; + } + else + { + return true; + } +} + + int RingBuffer::getNbReadPointer() { - - _debug("RingBuffer::getNbReadPointer: %i", _readpointer.size()); return _readpointer.size(); - } // @@ -268,31 +277,28 @@ RingBuffer::AvailForGet(CallID call_id) int RingBuffer::Get (void *buffer, int toCopy, unsigned short volume, CallID call_id) { - // _debug("RingBuffer::get callid: %s\n", call_id.c_str()); - if(getNbReadPointer() == 0); + if(getNbReadPointer() == 0) return 0; + if(!hasThisReadPointer(call_id)) + return 0; + samplePtr dest; int block; int copied; int len = getLen(call_id); - _debug("RingBuffer::Get len: %i\n", len); if (toCopy > len) toCopy = len; dest = (samplePtr) buffer; copied = 0; - - _debug("RingBuffer::Get getReadPointer call_id %s\n", call_id.c_str()); int mStart = getReadPointer(call_id); - _debug("RingBuffer::Get getReadPointer mStart %i\n", mStart); - // _debug("RingBuffer::get mStart: %i, mEnd: %i, len: %i, toCopy: %i\n", mStart, mEnd, len, toCopy); //fprintf(stderr, "G"); while (toCopy) { diff --git a/sflphone-common/src/audio/ringbuffer.h b/sflphone-common/src/audio/ringbuffer.h index 3468a2a31eb099f1ebcfa71c2b902b970e89fd86..ce02a346fd693f1c0ae7b90c3f636f4cb5372c15 100644 --- a/sflphone-common/src/audio/ringbuffer.h +++ b/sflphone-common/src/audio/ringbuffer.h @@ -61,6 +61,8 @@ class RingBuffer { void removeReadPointer(CallID call_id = default_id); + bool hasThisReadPointer(CallID call_id); + int getNbReadPointer(); /** diff --git a/sflphone-common/src/global.h b/sflphone-common/src/global.h index 511ece3dcbbc15afd5752238741dc141bba559f0..fc0a149e9a405e093fd8a4d427eaf4ec671c7c34 100644 --- a/sflphone-common/src/global.h +++ b/sflphone-common/src/global.h @@ -86,6 +86,7 @@ static const SOUND_FORMAT INT32 = 0x8; #define CODECDIR "codecs" /** Codecs directory */ #define SIZEBUF 1024*1024 +#define STATIC_BUFSIZE 5000 #define ALSA_DFT_CARD_ID 0 /** Index of the default soundcard */ diff --git a/sflphone-common/test/mainbufferTest.cpp b/sflphone-common/test/mainbufferTest.cpp index 0bb70919ff74257873483b239b4a0bbb38711d65..bdbda503a3b8ff620a7e2ed3b2cf17a4727a5546 100644 --- a/sflphone-common/test/mainbufferTest.cpp +++ b/sflphone-common/test/mainbufferTest.cpp @@ -239,7 +239,7 @@ void MainBufferTest::testRingBufferInt() int testint2 = 13; int init_put_size; - + // test with default ring buffer RingBuffer* test_ring_buffer = _mainbuffer.createRingBuffer(default_id); @@ -261,7 +261,6 @@ void MainBufferTest::testRingBufferInt() CPPUNIT_ASSERT(test_ring_buffer->getReadPointer() == 0); int testget = (int)NULL; - int size; // get some data (without any read pointers) CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 0); @@ -281,10 +280,9 @@ void MainBufferTest::testRingBufferInt() CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == 2*sizeof(int)); CPPUNIT_ASSERT(test_ring_buffer->getLen() == 2*sizeof(int)); - _debug("THE GET PROBLEM\n"); CPPUNIT_ASSERT(test_ring_buffer->Get(&testget, sizeof(int), 100, default_id) == sizeof(int)); - CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == 2*sizeof(int)); - CPPUNIT_ASSERT(test_ring_buffer->getLen() == 2*sizeof(int)); + CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == sizeof(int)); + CPPUNIT_ASSERT(test_ring_buffer->getLen() == sizeof(int)); CPPUNIT_ASSERT(testget == testint1); CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == (init_put_size - (int)sizeof(int))); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer() == sizeof(int)); @@ -312,7 +310,6 @@ void MainBufferTest::testRingBufferInt() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == init_put_size); CPPUNIT_ASSERT(test_ring_buffer->getLen() == 0); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == 0); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer()); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer() == 3*sizeof(int)); // test flush data @@ -323,7 +320,6 @@ void MainBufferTest::testRingBufferInt() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == (init_put_size - (int)sizeof(int))); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == sizeof(int)); CPPUNIT_ASSERT(test_ring_buffer->getLen() == sizeof(int)); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer()); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer() == 3*sizeof(int)); test_ring_buffer->Discard(sizeof(int)); @@ -331,7 +327,6 @@ void MainBufferTest::testRingBufferInt() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == init_put_size); CPPUNIT_ASSERT(test_ring_buffer->getLen() == 0); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet() == 0); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer()); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer() == 4*sizeof(int)); @@ -350,8 +345,8 @@ void MainBufferTest::testRingBufferNonDefaultID() int init_put_size; - // test with arbitrary id - RingBuffer* test_ring_buffer = _mainbuffer.getRingBuffer(default_id); + // test putData, getData with arbitrary read pointer id + RingBuffer* test_ring_buffer = _mainbuffer.createRingBuffer(default_id); test_ring_buffer->createReadPointer(test_id); init_put_size = test_ring_buffer->AvailForPut(); @@ -402,7 +397,6 @@ void MainBufferTest::testRingBufferNonDefaultID() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == init_put_size); CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 0); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 0); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer(test_id)); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 3*sizeof(int)); // test flush data @@ -413,7 +407,6 @@ void MainBufferTest::testRingBufferNonDefaultID() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == (init_put_size - (int)sizeof(int))); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == sizeof(int)); CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == sizeof(int)); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer(test_id)); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 3*sizeof(int)); test_ring_buffer->Discard(sizeof(int), test_id); @@ -421,7 +414,6 @@ void MainBufferTest::testRingBufferNonDefaultID() CPPUNIT_ASSERT(test_ring_buffer->AvailForPut() == init_put_size); CPPUNIT_ASSERT(test_ring_buffer->getLen(test_id) == 0); CPPUNIT_ASSERT(test_ring_buffer->AvailForGet(test_id) == 0); - _debug("------------------------------ %i \n", test_ring_buffer->getReadPointer(test_id)); CPPUNIT_ASSERT(test_ring_buffer->getReadPointer(test_id) == 4*sizeof(int)); test_ring_buffer->removeReadPointer(test_id); @@ -434,12 +426,12 @@ void MainBufferTest::testRingBufferFloat() _debug("MainBufferTest::testRingBufferFloat()\n"); - CallID test_id = "test_float"; - float testfloat1 = 12.5; float testfloat2 = 13.4; - RingBuffer* test_ring_buffer = _mainbuffer.getRingBuffer(default_id); + RingBuffer* test_ring_buffer = _mainbuffer.createRingBuffer(default_id); + test_ring_buffer->createReadPointer(default_id); + CPPUNIT_ASSERT(test_ring_buffer->Put(&testfloat1, sizeof(float)) == sizeof(float)); CPPUNIT_ASSERT(test_ring_buffer->putLen() == sizeof(float)); @@ -469,7 +461,9 @@ void MainBufferTest::testTwoPointer() _debug("MainBufferTest::testTwoPointer()\n"); - RingBuffer* input_buffer = _mainbuffer.getRingBuffer(default_id); + + RingBuffer* input_buffer = _mainbuffer.createRingBuffer(default_id); + input_buffer->createReadPointer(default_id); RingBuffer* output_buffer = _mainbuffer.getRingBuffer(default_id); int test_input = 12; @@ -484,145 +478,504 @@ void MainBufferTest::testTwoPointer() void MainBufferTest::testBindUnbindBuffer() { - _debug("MainBufferTest::testGetPutData()\n"); + _debug("MainBufferTest::testBindUnbindBuffer()\n"); - CallID test_id = "bind unbind"; - - // _mainbuffer.createRingBuffer(test_id); - _mainbuffer.bindCallID(test_id); + CallID test_id1 = "bind unbind 1"; + CallID test_id2 = "bind unbind 2"; RingBufferMap::iterator iter_buffer; CallIDMap::iterator iter_idset; CallIDSet::iterator iter_id; - // RingBuffer* defaultbuffer = _mainbuffer.getRingBuffer(default_id); - // RingBuffer* otherbuffer = _mainbuffer.getRingBuffer(test_id); + ReadPointer::iterator iter_readpointer; + + RingBuffer* ringbuffer; + + // test initial state with no ring brffer created + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 0); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 0); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer == _mainbuffer._ringBufferMap.end()); + iter_idset = _mainbuffer._callIDMap.find(default_id); + CPPUNIT_ASSERT(iter_idset == _mainbuffer._callIDMap.end()); + + // bind test_id1 with default_id (both buffer not already created) + _mainbuffer.bindCallID(test_id1); CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 2); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 2); iter_buffer = _mainbuffer._ringBufferMap.find(default_id); CPPUNIT_ASSERT(iter_buffer->first == default_id); CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + iter_idset = _mainbuffer._callIDMap.find(default_id); CPPUNIT_ASSERT(iter_idset->second->size() == 1); - iter_id = iter_idset->second->find(test_id); - CPPUNIT_ASSERT(*iter_id == test_id); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); - iter_buffer = _mainbuffer._ringBufferMap.find(test_id); - CPPUNIT_ASSERT(iter_buffer->first == test_id); - CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id)); + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); - iter_idset = _mainbuffer._callIDMap.find(test_id); + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + + // unbind test_id1 with default_id + _mainbuffer.unBindCallID(test_id1); + + _debug("%i\n", _mainbuffer._ringBufferMap.size()); + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 0); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 0); + + CPPUNIT_ASSERT(_mainbuffer.getRingBuffer(default_id) == NULL); + CPPUNIT_ASSERT(_mainbuffer.getRingBuffer(test_id1) == NULL); + + + // bind test_id2 with default_id (default_id already created) + // calling it twice not supposed to break anything + _mainbuffer.bindCallID(test_id1, default_id); + _mainbuffer.bindCallID(test_id1, default_id); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 2); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 2); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer == _mainbuffer._ringBufferMap.end()); + iter_idset = _mainbuffer._callIDMap.find(test_id2); + CPPUNIT_ASSERT(iter_idset == _mainbuffer._callIDMap.end()); + + _mainbuffer.bindCallID(test_id2, default_id); + _mainbuffer.bindCallID(test_id2, default_id); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 3); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer->first == default_id); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer->first == test_id2); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id2)); + + iter_idset = _mainbuffer._callIDMap.find(default_id); + CPPUNIT_ASSERT(iter_idset->second->size() == 2); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + iter_id = iter_idset->second->find(test_id2); + CPPUNIT_ASSERT(*iter_id == test_id2); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); CPPUNIT_ASSERT(iter_idset->second->size() == 1); iter_id = iter_idset->second->find(default_id); - CPPUNIT_ASSERT(*iter_id == test_id); + CPPUNIT_ASSERT(*iter_id == default_id); - _mainbuffer.unBindCallID(test_id); - // _mainbuffer.removeRingBuffer(test_id); + iter_idset = _mainbuffer._callIDMap.find(test_id2); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); - CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 1); + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer->first == test_id2); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + ringbuffer = _mainbuffer.getRingBuffer(test_id2); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + // bind test_id1 with test_id2 (both testid1 and test_id2 already created) + // calling it twice not supposed to break anything + _mainbuffer.bindCallID(test_id1, test_id2); + _mainbuffer.bindCallID(test_id1, test_id2); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 3); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer->first == default_id); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer->first == test_id2); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id2)); + + iter_idset = _mainbuffer._callIDMap.find(default_id); + CPPUNIT_ASSERT(iter_idset->second->size() == 2); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + iter_id = iter_idset->second->find(test_id2); + CPPUNIT_ASSERT(*iter_id == test_id2); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); + CPPUNIT_ASSERT(iter_idset->second->size() == 2); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + iter_id = iter_idset->second->find(test_id2); + CPPUNIT_ASSERT(*iter_id == test_id2); + + iter_idset = _mainbuffer._callIDMap.find(test_id2); + CPPUNIT_ASSERT(iter_idset->second->size() == 2); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer->first == test_id2); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer->first == test_id2); + CPPUNIT_ASSERT(iter_readpointer->second == 0); - iter_idset = _mainbuffer._callIDMap.find(test_id); + ringbuffer = _mainbuffer.getRingBuffer(test_id2); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + // unbind test_id1 with test_id2 + // calling it twice not supposed to break anything + _mainbuffer.unBindCallID(test_id1, test_id2); + _mainbuffer.unBindCallID(test_id1, test_id2); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 3); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer->first == default_id); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer->first == test_id2); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id2)); + + iter_idset = _mainbuffer._callIDMap.find(default_id); + CPPUNIT_ASSERT(iter_idset->second->size() == 2); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + iter_id = iter_idset->second->find(test_id2); + CPPUNIT_ASSERT(*iter_id == test_id2); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + + iter_idset = _mainbuffer._callIDMap.find(test_id2); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 2); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer->first == test_id2); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + ringbuffer = _mainbuffer.getRingBuffer(test_id2); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + + + _debug("ok1\n"); + + // unbind test_id1 with test_id2 + // calling it twice not supposed to break anything + _mainbuffer.unBindCallID(default_id, test_id2); + _mainbuffer.unBindCallID(default_id, test_id2); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 2); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 2); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer->first == default_id); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer == _mainbuffer._ringBufferMap.end()); + + iter_idset = _mainbuffer._callIDMap.find(default_id); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + iter_id = iter_idset->second->find(test_id2); + CPPUNIT_ASSERT(iter_id == iter_idset->second->end()); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + + iter_idset = _mainbuffer._callIDMap.find(test_id2); CPPUNIT_ASSERT(iter_idset == _mainbuffer._callIDMap.end()); + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer == ringbuffer->_readpointer.end()); + + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer == ringbuffer->_readpointer.end()); + + CPPUNIT_ASSERT(_mainbuffer.getRingBuffer(test_id2) == NULL); + + + _mainbuffer.unBindCallID(default_id, test_id1); + + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 0); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 0); + + // test unbind all function + _mainbuffer.bindCallID(default_id, test_id1); + _mainbuffer.bindCallID(default_id, test_id2); + _mainbuffer.bindCallID(test_id1, test_id2); + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 3); + + _mainbuffer.unBindAll(test_id2); + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 2); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 2); + + iter_buffer = _mainbuffer._ringBufferMap.find(default_id); + CPPUNIT_ASSERT(iter_buffer->first == default_id); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(default_id)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id1); + CPPUNIT_ASSERT(iter_buffer->first == test_id1); + CPPUNIT_ASSERT(iter_buffer->second == _mainbuffer.getRingBuffer(test_id1)); + + iter_buffer = _mainbuffer._ringBufferMap.find(test_id2); + CPPUNIT_ASSERT(iter_buffer == _mainbuffer._ringBufferMap.end()); + iter_idset = _mainbuffer._callIDMap.find(default_id); - CPPUNIT_ASSERT(iter_idset->second->size() == 0); - iter_id = iter_idset->second->find(test_id); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(test_id1); + CPPUNIT_ASSERT(*iter_id == test_id1); + iter_id = iter_idset->second->find(test_id2); CPPUNIT_ASSERT(iter_id == iter_idset->second->end()); + + iter_idset = _mainbuffer._callIDMap.find(test_id1); + CPPUNIT_ASSERT(iter_idset->second->size() == 1); + iter_id = iter_idset->second->find(default_id); + CPPUNIT_ASSERT(*iter_id == default_id); + + iter_idset = _mainbuffer._callIDMap.find(test_id2); + CPPUNIT_ASSERT(iter_idset == _mainbuffer._callIDMap.end()); + + ringbuffer = _mainbuffer.getRingBuffer(default_id); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(test_id1); + CPPUNIT_ASSERT(iter_readpointer->first == test_id1); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer == ringbuffer->_readpointer.end()); + + ringbuffer = _mainbuffer.getRingBuffer(test_id1); + CPPUNIT_ASSERT(ringbuffer != NULL); + CPPUNIT_ASSERT(ringbuffer->getNbReadPointer() == 1); + iter_readpointer = ringbuffer->_readpointer.find(default_id); + CPPUNIT_ASSERT(iter_readpointer->first == default_id); + CPPUNIT_ASSERT(iter_readpointer->second == 0); + iter_readpointer = ringbuffer->_readpointer.find(test_id2); + CPPUNIT_ASSERT(iter_readpointer == ringbuffer->_readpointer.end()); + + } -void MainBufferTest::testGetPutData() +void MainBufferTest::testGetPutDataByID() { _debug("MainBufferTest::testGetPutData()\n"); CallID test_id = "getData putData"; CallID false_id = "false id"; - // _mainbuffer.createRingBuffer(test_id); + _mainbuffer.bindCallID(test_id); int test_input1 = 12; int test_input2 = 13; int test_output; + int avail_for_put_testid; + int avail_for_put_defaultid; + + // put by default_id get by test_id without preleminary put + avail_for_put_defaultid = _mainbuffer.availForPut(); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(default_id, test_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int), 100, default_id, test_id) == 0); + + // put by default_id, get by test_id + CPPUNIT_ASSERT(_mainbuffer.availForPut() == avail_for_put_defaultid); CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int)) == sizeof(int)); - CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int)) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForPut() == (avail_for_put_defaultid - (int)sizeof(int))); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(default_id, test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int), 100, default_id, test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(default_id, test_id) == 0); CPPUNIT_ASSERT(test_input1 == test_output); + + // get by default_id without preliminary input + avail_for_put_testid = _mainbuffer.availForPut(test_id); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(test_id, default_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int), 100, test_id, default_id) == 0); + + // pu by test_id get by test_id + CPPUNIT_ASSERT(_mainbuffer.availForPut(test_id) == avail_for_put_defaultid); CPPUNIT_ASSERT(_mainbuffer.putData(&test_input2, sizeof(int), 100, test_id) == sizeof(int)); - CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int), 100, test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(test_id, default_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_output, sizeof(int), 100, test_id, default_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForGetByID(test_id, default_id) == 0); CPPUNIT_ASSERT(test_input2 == test_output); + // put/get by false id CPPUNIT_ASSERT(_mainbuffer.putData(&test_input2, sizeof(int), 100, false_id) == 0); - CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_input2, sizeof(int), 100, false_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_input2, sizeof(int), 100, false_id, false_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_input2, sizeof(int), 100, default_id, false_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getDataByID(&test_input2, sizeof(int), 100, false_id, default_id) == 0); _mainbuffer.unBindCallID(test_id); - // _mainbuffer.removeRingBuffer(test_id); + } -void MainBufferTest::testGetDataAndCallID() +void MainBufferTest::testGetPutData() { _debug("MainBufferTest::testGetDataAndCallID()\n"); CallID test_id = "incoming rtp session"; - // _mainbuffer.createRingBuffer(test_id); + _mainbuffer.bindCallID(test_id); int test_input1 = 12; int test_input2 = 13; int test_output; - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100, test_id) == sizeof(int)); - CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int), 100, default_id) == sizeof(int)); - CPPUNIT_ASSERT(test_input1 == test_output); - - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input2, sizeof(int), 100, default_id) == sizeof(int)); - CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int), 100, test_id) == sizeof(int)); - CPPUNIT_ASSERT(test_input2 == test_output); - - _mainbuffer.unBindCallID(test_id); - // _mainbuffer.removeRingBuffer(test_id); -} - - -void MainBufferTest::testAvailForGetPut() -{ - - _debug("MainBufferTest::testAvailForGetPut()\n"); + int avail_for_put_testid; + int avail_for_put_defaultid; - CallID test_id = "avail for get"; - // _mainbuffer.createRingBuffer(test_id); - _mainbuffer.bindCallID(test_id); - - int test_input1 = 12; - int test_output_size; - int init_size; - - init_size = _mainbuffer.availForPut(test_id); - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100, test_id) == sizeof(int)); - test_output_size = _mainbuffer.availForPut(test_id); - CPPUNIT_ASSERT(test_output_size == (init_size - (int)sizeof(int))); + // get by test_id without preleminary put + avail_for_put_defaultid = _mainbuffer.availForPut(); + CPPUNIT_ASSERT(_mainbuffer.availForGet(test_id) == 0); + CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int), 100, test_id) == 0); - init_size = _mainbuffer.availForGetByID(test_id); - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100, test_id) == sizeof(int)); - test_output_size = _mainbuffer.availForGetByID(test_id); - CPPUNIT_ASSERT(test_output_size == (init_size + (int)sizeof(int))); + // put by default_id, get by test_id + CPPUNIT_ASSERT(_mainbuffer.availForPut() == avail_for_put_defaultid); + CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForPut() == (avail_for_put_defaultid - (int)sizeof(int))); + CPPUNIT_ASSERT(_mainbuffer.availForGet(test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int), 100, test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForGet(test_id) == 0); + CPPUNIT_ASSERT(test_input1 == test_output); - init_size = _mainbuffer.availForGet(); - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100, test_id) == sizeof(int)); - test_output_size = _mainbuffer.availForGet(); - CPPUNIT_ASSERT(test_output_size == (init_size + (int)sizeof(int))); + // get by default_id without preleminary put + avail_for_put_testid = _mainbuffer.availForPut(test_id); + CPPUNIT_ASSERT(_mainbuffer.availForGet() == 0); + CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int)) == 0); - init_size = _mainbuffer.availForGet(test_id); - CPPUNIT_ASSERT(_mainbuffer.putData(&test_input1, sizeof(int), 100) == sizeof(int)); - test_output_size = _mainbuffer.availForGet(test_id); - CPPUNIT_ASSERT(test_output_size == (init_size + (int)sizeof(int))); + // put by test_id, get by default_id + CPPUNIT_ASSERT(_mainbuffer.availForPut(test_id) == avail_for_put_testid); + CPPUNIT_ASSERT(_mainbuffer.putData(&test_input2, sizeof(int), 100, test_id) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForPut(test_id) == (avail_for_put_testid - (int)sizeof(int))); + CPPUNIT_ASSERT(_mainbuffer.availForGet() == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.getData(&test_output, sizeof(int), 100) == sizeof(int)); + CPPUNIT_ASSERT(_mainbuffer.availForGet() == 0); + CPPUNIT_ASSERT(test_input2 == test_output); _mainbuffer.unBindCallID(test_id); - // _mainbuffer.removeRingBuffer(test_id); } @@ -826,31 +1179,27 @@ void MainBufferTest::testConference() ReadPointer::iterator iter_readpointer; CallIDMap::iterator iter_callidmap; CallIDSet::iterator iter_callidset; + // test initial setup // ringbuffers - CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 1); + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 0); test_ring_buffer = _mainbuffer.getRingBuffer(default_id); - CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1); - iter_readpointer = test_ring_buffer->_readpointer.find(default_id); - CPPUNIT_ASSERT(iter_readpointer->first == default_id); - CPPUNIT_ASSERT(iter_readpointer->second == 0); + CPPUNIT_ASSERT(test_ring_buffer == NULL); + // callidmap - CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 1); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 0); iter_callidmap = _mainbuffer._callIDMap.find(default_id); - CPPUNIT_ASSERT(iter_callidmap->first == default_id); - CPPUNIT_ASSERT(iter_callidmap->second->size() == 0); + CPPUNIT_ASSERT(iter_callidmap == _mainbuffer._callIDMap.end()); + // test bind Participant A with default _mainbuffer.bindCallID(test_id1); // ringbuffers CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 2); test_ring_buffer = _mainbuffer.getRingBuffer(default_id); - CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2); - iter_readpointer = test_ring_buffer->_readpointer.find(default_id); - CPPUNIT_ASSERT(iter_readpointer->first == default_id); - CPPUNIT_ASSERT(iter_readpointer->second == 0); + CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 1); iter_readpointer = test_ring_buffer->_readpointer.find(test_id1); CPPUNIT_ASSERT(iter_readpointer->first == test_id1); CPPUNIT_ASSERT(iter_readpointer->second == 0); @@ -877,10 +1226,7 @@ void MainBufferTest::testConference() // ringbuffers CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); test_ring_buffer = _mainbuffer.getRingBuffer(default_id); - CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 3); - iter_readpointer = test_ring_buffer->_readpointer.find(default_id); - CPPUNIT_ASSERT(iter_readpointer->first == default_id); - CPPUNIT_ASSERT(iter_readpointer->second == 0); + CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2); iter_readpointer = test_ring_buffer->_readpointer.find(test_id1); CPPUNIT_ASSERT(iter_readpointer->first == test_id1); CPPUNIT_ASSERT(iter_readpointer->second == 0); @@ -923,10 +1269,7 @@ void MainBufferTest::testConference() // ringbuffers CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 3); test_ring_buffer = _mainbuffer.getRingBuffer(default_id); - CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 3); - iter_readpointer = test_ring_buffer->_readpointer.find(default_id); - CPPUNIT_ASSERT(iter_readpointer->first == default_id); - CPPUNIT_ASSERT(iter_readpointer->second == 0); + CPPUNIT_ASSERT(test_ring_buffer->getNbReadPointer() == 2); iter_readpointer = test_ring_buffer->_readpointer.find(test_id1); CPPUNIT_ASSERT(iter_readpointer->first == test_id1); CPPUNIT_ASSERT(iter_readpointer->second == 0); @@ -1410,8 +1753,8 @@ void MainBufferTest::testConference() CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 2); _mainbuffer.unBindCallID(test_id2); - CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 1); - CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 1); + CPPUNIT_ASSERT(_mainbuffer._ringBufferMap.size() == 0); + CPPUNIT_ASSERT(_mainbuffer._callIDMap.size() == 0); } diff --git a/sflphone-common/test/mainbufferTest.h b/sflphone-common/test/mainbufferTest.h index 39da65c225dd7d666c9a6498a7f17d21fbcbe1d3..330228f9a92d011d4540f74a4cb902c1ff525c20 100644 --- a/sflphone-common/test/mainbufferTest.h +++ b/sflphone-common/test/mainbufferTest.h @@ -67,16 +67,16 @@ class MainBufferTest : public CppUnit::TestCase { CPPUNIT_TEST( testRingBufferReadPointer ); CPPUNIT_TEST( testCallIDSet ); CPPUNIT_TEST( testRingBufferInt ); - // CPPUNIT_TEST( testRingBufferNonDefaultID ); - // CPPUNIT_TEST( testRingBufferFloat ); - // CPPUNIT_TEST( testTwoPointer ); - // CPPUNIT_TEST( testGetPutData ); - // CPPUNIT_TEST( testGetDataAndCallID ); - // CPPUNIT_TEST( testAvailForGetPut ); - // CPPUNIT_TEST( testDiscardFlush ); - // CPPUNIT_TEST( testReadPointerInit ); - // CPPUNIT_TEST( testRingBufferSeveralPointers ); - // CPPUNIT_TEST( testConference ); + CPPUNIT_TEST( testRingBufferNonDefaultID ); + CPPUNIT_TEST( testRingBufferFloat ); + CPPUNIT_TEST( testTwoPointer ); + CPPUNIT_TEST( testBindUnbindBuffer ); + CPPUNIT_TEST( testGetPutDataByID ); + CPPUNIT_TEST( testGetPutData ); + CPPUNIT_TEST( testDiscardFlush ); + CPPUNIT_TEST( testReadPointerInit ); + CPPUNIT_TEST( testRingBufferSeveralPointers ); + CPPUNIT_TEST( testConference ); CPPUNIT_TEST_SUITE_END(); public: @@ -111,9 +111,9 @@ class MainBufferTest : public CppUnit::TestCase { void testBindUnbindBuffer(); - void testGetPutData(); + void testGetPutDataByID(); - void testGetDataAndCallID(); + void testGetPutData(); void testAvailForGetPut();