summaryrefslogtreecommitdiff
path: root/AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp
diff options
context:
space:
mode:
authorJens Lorenz <jlorenz@de.adit-jv.com>2018-04-04 09:47:25 +0200
committerJens Lorenz <jlorenz@de.adit-jv.com>2018-04-09 17:00:47 +0200
commit29b816429d141584af128256545ca0dc96ce0be3 (patch)
tree1a92719a70418f91284174eb0c079018c65c8bfa /AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp
parente9240071f34ae96f72f4befd19f6fa68cc721ad1 (diff)
downloadaudiomanager-29b816429d141584af128256545ca0dc96ce0be3.tar.gz
AMUtil: Rework of socketHandler to avoid calls of invalidated objects
This patch tries to follow the idea raised in PR26. Following two patches have been reworked: commit: cfe0e77aaf87a0590ceea42f6afa62b0c7d95e80 commit: bc33226f59910a960f62d419ba10d4ea761e3724 The biggest change applies to the internal database. Instead of having a vector for all items which will be copied inside the worker thread the new approach aims a central map which allows to store the sh_poll elements in containers. By this a container is valid until it is remove from map. The remove of items inside a map is now centralized within the worker and only the worker is responsible to keep the ppoll list and the map in sync. This patch also extends the unit tests to stress different timer scenarios. Signed-off-by: Aleksandar Donchev <Aleksander.Donchev@partner.bmw.de> Signed-off-by: Jens Lorenz <jlorenz@de.adit-jv.com>
Diffstat (limited to 'AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp')
-rw-r--r--AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp366
1 files changed, 287 insertions, 79 deletions
diff --git a/AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp b/AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp
index 7e059a8..bd4aee4 100644
--- a/AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp
+++ b/AudioManagerUtilities/test/AmSocketHandlerTest/CAmSocketHandlerTest.cpp
@@ -30,15 +30,17 @@
#include <fcntl.h>
#include <sys/un.h>
#include <sys/poll.h>
-
+#include "CAmDltWrapper.h"
#include "CAmSocketHandler.h"
-//todo: expand test, implement more usecases
-//todo: test removeFD
+
+#undef ENABLED_SOCKETHANDLER_TEST_OUTPUT
+#undef ENABLED_TIMERS_TEST_OUTPUT
#define SOCK_PATH "/tmp/mysock"
-#define SOCKET_TEST_LOOPS_COUNT 1000
+#define SOCKET_TEST_LOOPS_COUNT 50
+#define TIMERS_TO_TEST 100
using namespace testing;
using namespace am;
@@ -48,6 +50,11 @@ static const char * TEST_SOCKET_DATA_FINAL = "finish!";
static const std::chrono::time_point<std::chrono::high_resolution_clock> TP_ZERO;
+struct TestUserData
+{
+ int i;
+ float f;
+};
MockIAmSignalHandler *pMockSignalHandler = NULL;
static void signalHandler(int sig, siginfo_t *siginfo, void *context)
@@ -149,6 +156,41 @@ void am::CAmTimer::timerCallback(sh_timerHandle_t handle, void* userData)
}
}
+CAmTimerStressTest::CAmTimerStressTest(CAmSocketHandler *myHandler, const timespec &timeout, const int32_t repeats) :
+ MockIAmTimerCb(), mpSocketHandler(myHandler), mUpdateTimeout(timeout), pTimerCallback(this, &CAmTimerStressTest::timerCallback), mRepeats(repeats), mHandle(0)
+{
+}
+
+am::CAmTimerStressTest::~CAmTimerStressTest()
+{
+}
+
+void am::CAmTimerStressTest::timerCallback(sh_timerHandle_t handle, void* pUserData)
+{
+ mpSocketHandler->removeTimer(handle);
+ MockIAmTimerCb::timerCallback(handle, pUserData);
+ sh_timerHandle_t handle1;
+ mpSocketHandler->addTimer(mUpdateTimeout, &pTimerCallback, handle1, &(*((TestUserData*)pUserData)), true);
+}
+
+CAmTimerStressTest2::CAmTimerStressTest2(CAmSocketHandler *myHandler, const timespec &timeout, const int32_t repeats) :
+ MockIAmTimerCb(), mpSocketHandler(myHandler), mUpdateTimeout(timeout), pTimerCallback(this, &CAmTimerStressTest2::timerCallback), mRepeats(repeats), mHandle(0)
+{
+}
+
+am::CAmTimerStressTest2::~CAmTimerStressTest2()
+{
+}
+
+void am::CAmTimerStressTest2::timerCallback(sh_timerHandle_t handle, void* pUserData)
+{
+ #ifdef ENABLED_SOCKETHANDLER_TEST_OUTPUT
+ std::cout<<"timerCallback handle=" << handle <<std::endl;
+ #endif
+ MockIAmTimerCb::timerCallback(handle, pUserData);
+}
+
+
CAmTimerMeasurment::CAmTimerMeasurment(CAmSocketHandler *myHandler, const timespec &timeout, const std::string & label, const int32_t repeats, void * userData) :
MockIAmTimerCb()
, pTimerCallback(this, &CAmTimerMeasurment::timerCallback)
@@ -200,18 +242,107 @@ void am::CAmTimerMeasurment::timerCallback(sh_timerHandle_t handle, void* userDa
}
}
+void* sendTestData(int sock, const struct sockaddr* servAddr, unsigned int size, __useconds_t time = 0u)
+{
+ int ret = connect(sock, servAddr, size);
+ if (ret < 0)
+ {
+ std::cerr << "ERROR: connect() failed\n" << std::endl;
+ return (NULL);
+ }
+
+ for (int i = 1; i < SOCKET_TEST_LOOPS_COUNT; i++)
+ {
+ std::string string(TEST_SOCKET_DATA);
+ send(sock, string.c_str(), string.size(), 0);
+ if (time)
+ usleep(time);
+ }
+ std::string string(TEST_SOCKET_DATA_FINAL);
+ send(sock, string.c_str(), string.size(), 0);
+}
+
void* playWithSocketServer(void* data)
{
- CAmSocketHandler *pSockethandler = (CAmSocketHandler*) data;
- pSockethandler->start_listenting();
- return (NULL);
+ int sock = *((int*)data);
+ struct sockaddr_in servAddr;
+ unsigned short servPort = 6060;
+ struct hostent *host;
+
+ if ((host = (struct hostent*) gethostbyname("localhost")) == 0)
+ {
+ std::cout << "ERROR: gethostbyname() failed\n" << std::endl;
+ exit(1);
+ }
+
+ memset(&servAddr, 0, sizeof(servAddr));
+ servAddr.sin_family = AF_INET;
+ servAddr.sin_addr.s_addr = inet_addr(inet_ntoa(*(struct in_addr*) (host->h_addr_list[0])));
+ servAddr.sin_port = htons(servPort);
+ sleep(1);
+
+ return sendTestData(sock, (struct sockaddr*)&servAddr, sizeof(servAddr));
}
void* playWithUnixSocketServer(void* data)
{
- CAmSocketHandler *pSockethandler = (CAmSocketHandler*) data;
- pSockethandler->start_listenting();
- return (NULL);
+ int sock = *((int*)data);
+ struct sockaddr_un servAddr;
+ memset(&servAddr, 0, sizeof(servAddr));
+ strcpy(servAddr.sun_path, SOCK_PATH);
+ servAddr.sun_family = AF_UNIX;
+ sleep(1);
+
+ return sendTestData(sock, (struct sockaddr*)&servAddr, sizeof(servAddr));
+}
+
+void* threadCallbackUnixSocketAndTimers(void* data)
+{
+ int sock = *((int*)data);
+ struct sockaddr_un servAddr;
+ memset(&servAddr, 0, sizeof(servAddr));
+ strcpy(servAddr.sun_path, SOCK_PATH);
+ servAddr.sun_family = AF_UNIX;
+ sleep(1);
+
+ return sendTestData(sock, (struct sockaddr*)&servAddr, sizeof(servAddr), 500000);
+}
+
+TEST(CAmSocketHandlerTest, stressTestUnixSocketAndTimers)
+{
+
+ pthread_t serverThread;
+
+ int socket_;
+
+ CAmSocketHandler myHandler;
+ ASSERT_FALSE(myHandler.fatalErrorOccurred());
+ CAmSamplePluginStressTest::sockType_e type = CAmSamplePlugin::UNIX;
+ CAmSamplePluginStressTest myplugin(&myHandler, type);
+
+ EXPECT_CALL(myplugin,receiveData(Field(&pollfd::revents, Eq(POLL_IN)),_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
+ EXPECT_CALL(myplugin,dispatchData(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
+ EXPECT_CALL(myplugin,check(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
+
+ for(int i=0;i<myplugin.getTimers().size();i++)
+ {
+ EXPECT_CALL(*myplugin.getTimers()[i],timerCallback(_,_)).Times(AnyNumber());
+ }
+
+
+ if ((socket_ = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
+ {
+ std::cout << "socket problem" << std::endl;
+ }
+ ASSERT_GT(socket_, -1);
+
+ //creates a thread that handles the serverpart
+ pthread_create(&serverThread, NULL, threadCallbackUnixSocketAndTimers, &socket_);
+
+ myHandler.start_listenting();
+
+ pthread_join(serverThread, NULL);
+ shutdown(socket_, SHUT_RDWR);
}
TEST(CAmSocketHandlerTest, timersOneshot)
@@ -341,6 +472,70 @@ TEST(CAmSocketHandlerTest, timersGeneral)
myHandler.start_listenting();
}
+TEST(CAmSocketHandlerTest, timersStressTest)
+{
+ CAmSocketHandler myHandler;
+ ASSERT_FALSE(myHandler.fatalErrorOccurred());
+
+ sh_timerHandle_t handle;
+ TestUserData userData;
+ userData.i = 1;
+ userData.f = 1.f;
+
+ timespec timeout4;
+ timeout4.tv_nsec = 0;
+ timeout4.tv_sec = 60;
+
+ timespec timeoutTime;
+ timeoutTime.tv_sec = 0;
+ timeoutTime.tv_nsec = 10000000;// 0,01
+
+ std::vector<CAmTimerStressTest*> timers(TIMERS_TO_TEST, NULL);
+
+ for (auto & timer: timers)
+ {
+ timer = new CAmTimerStressTest(&myHandler, timeoutTime, 0);
+ ASSERT_EQ(myHandler.addTimer(timeoutTime, &(timer->pTimerCallback), handle, &userData, true), E_OK);
+ EXPECT_CALL(*timer, timerCallback(_,&userData)).Times(AnyNumber());
+ }
+
+ timespec timeoutTime11, timeout12, timeout13;
+ timeoutTime11.tv_sec = 1;
+ timeoutTime11.tv_nsec = 34000000;
+ CAmTimerMeasurment testCallback11(&myHandler, timeoutTime11, "repeated 1", std::numeric_limits<int32_t>::max());
+
+ timeout12.tv_sec = 0;
+ timeout12.tv_nsec = 100000000;
+ CAmTimerMeasurment testCallback12(&myHandler, timeout12, "repeated 2", std::numeric_limits<int32_t>::max());
+
+ timeout13.tv_sec = 3;
+ timeout13.tv_nsec = 333000000;
+ CAmTimerMeasurment testCallback13(&myHandler, timeout13, "oneshot 3");
+
+ ASSERT_EQ(myHandler.addTimer(timeoutTime11, &testCallback11.pTimerCallback, handle, NULL, true), E_OK);
+ EXPECT_CALL(testCallback11,timerCallback(_,NULL)).Times(AnyNumber());
+
+ ASSERT_EQ(myHandler.addTimer(timeout12, &testCallback12.pTimerCallback, handle, NULL, true), E_OK);
+ EXPECT_CALL(testCallback12,timerCallback(_,NULL)).Times(AnyNumber());
+
+ ASSERT_EQ(myHandler.addTimer(timeout13, &testCallback13.pTimerCallback, handle, NULL), E_OK);
+ EXPECT_CALL(testCallback13,timerCallback(_,NULL)).Times(Exactly(1));
+
+
+ CAmTimerSockethandlerController testCallback4(&myHandler, timeout4);
+
+ ASSERT_EQ(myHandler.addTimer(timeout4, &testCallback4.pTimerCallback, handle, NULL), E_OK);
+
+ EXPECT_CALL(testCallback4,timerCallback(_,NULL)).Times(Exactly(1));
+ myHandler.start_listenting();
+
+ for (auto & timer: timers)
+ {
+ delete timer, timer = NULL;
+ }
+}
+
+
TEST(CAmSocketHandlerTest,playWithTimers)
{
CAmSocketHandler myHandler;
@@ -348,15 +543,16 @@ TEST(CAmSocketHandlerTest,playWithTimers)
timespec timeoutTime, timeout2, timeout3, timeout4;
timeoutTime.tv_sec = 1;
timeoutTime.tv_nsec = 34000000;
- CAmTimerMeasurment testCallback1(&myHandler, timeoutTime, "repeatedCallback 1", std::numeric_limits<int32_t>::max());
+ CAmTimerMeasurment testCallback1(&myHandler, timeoutTime, "repeated 1", std::numeric_limits<int32_t>::max());
timeout2.tv_nsec = 2000000;
timeout2.tv_sec = 0;
- CAmTimerMeasurment testCallback2(&myHandler, timeout2, "repeatedCallback 2", std::numeric_limits<int32_t>::max());
+ CAmTimerMeasurment testCallback2(&myHandler, timeout2, "repeated 2", std::numeric_limits<int32_t>::max());
timeout3.tv_nsec = 333000000;
timeout3.tv_sec = 3;
- CAmTimerMeasurment testCallback3(&myHandler, timeout3, "oneshotCallback 3");
+ CAmTimerMeasurment testCallback3(&myHandler, timeout3, "oneshot 3");
+
timeout4.tv_nsec = 0;
timeout4.tv_sec = 8;
CAmTimerSockethandlerController testCallback4(&myHandler, timeout4);
@@ -479,94 +675,52 @@ TEST(CAmSocketHandlerTest,playWithUNIXSockets)
ASSERT_FALSE(myHandler.fatalErrorOccurred());
CAmSamplePlugin::sockType_e type = CAmSamplePlugin::UNIX;
CAmSamplePlugin myplugin(&myHandler, type);
+ ASSERT_TRUE(myplugin.isSocketOpened());
EXPECT_CALL(myplugin,receiveData(Field(&pollfd::revents, Eq(POLL_IN)),_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
EXPECT_CALL(myplugin,dispatchData(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
EXPECT_CALL(myplugin,check(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
- //creates a thread that handles the serverpart
- pthread_create(&serverThread, NULL, playWithUnixSocketServer, &myHandler);
-
- sleep(1); //we need that here because the port needs to be opened
if ((socket_ = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
std::cout << "socket problem" << std::endl;
-
- }
-
- memset(&servAddr, 0, sizeof(servAddr));
- strcpy(servAddr.sun_path, SOCK_PATH);
- servAddr.sun_family = AF_UNIX;
- if (connect(socket_, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0)
- {
- std::cout << "ERROR: connect() failed\n" << std::endl;
}
+ ASSERT_GT(socket_, -1);
+ //creates a thread that handles the serverpart
+ pthread_create(&serverThread, NULL, playWithUnixSocketServer, &socket_);
- for (int i = 1; i < SOCKET_TEST_LOOPS_COUNT; i++)
- {
- std::string stringToSend(TEST_SOCKET_DATA);
- send(socket_, stringToSend.c_str(), stringToSend.size(), 0);
- }
- std::string stringToSend(TEST_SOCKET_DATA_FINAL);
- send(socket_, stringToSend.c_str(), stringToSend.size(), 0);
+ myHandler.start_listenting();
pthread_join(serverThread, NULL);
-
+ shutdown(socket_, SHUT_RDWR);
}
TEST(CAmSocketHandlerTest,playWithSockets)
{
pthread_t serverThread;
- struct sockaddr_in servAddr;
- unsigned short servPort = 6060;
- struct hostent *host;
int socket_;
CAmSocketHandler myHandler;
ASSERT_FALSE(myHandler.fatalErrorOccurred());
CAmSamplePlugin::sockType_e type = CAmSamplePlugin::INET;
CAmSamplePlugin myplugin(&myHandler, type);
-
+ ASSERT_TRUE(myplugin.isSocketOpened());
EXPECT_CALL(myplugin,receiveData(Field(&pollfd::revents, Eq(POLL_IN)),_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
EXPECT_CALL(myplugin,dispatchData(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
EXPECT_CALL(myplugin,check(_,_)).Times(Exactly(SOCKET_TEST_LOOPS_COUNT));
- //creates a thread that handles the serverpart
- pthread_create(&serverThread, NULL, playWithSocketServer, &myHandler);
-
- sleep(1); //we need that here because the port needs to be opened
if ((socket_ = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
std::cout << "socket problem" << std::endl;
-
- }
-
- if ((host = (struct hostent*) gethostbyname("localhost")) == 0)
- {
- std::cout << "ERROR: gethostbyname() failed\n" << std::endl;
- exit(1);
}
+ ASSERT_GT(socket_, -1);
+ //creates a thread that handles the serverpart
+ pthread_create(&serverThread, NULL, playWithSocketServer, &socket_);
- memset(&servAddr, 0, sizeof(servAddr));
- servAddr.sin_family = AF_INET;
- servAddr.sin_addr.s_addr = inet_addr(inet_ntoa(*(struct in_addr*) (host->h_addr_list[0])));
- servAddr.sin_port = htons(servPort);
-
- if (connect(socket_, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0)
- {
- std::cout << "ERROR: connect() failed\n" << std::endl;
- }
-
- for (int i = 1; i < SOCKET_TEST_LOOPS_COUNT; i++)
- {
- std::string string(TEST_SOCKET_DATA);
- send(socket_, string.c_str(), string.size(), 0);
- }
- std::string string(TEST_SOCKET_DATA_FINAL);
- send(socket_, string.c_str(), string.size(), 0);
+ myHandler.start_listenting();
pthread_join(serverThread, NULL);
-
+ shutdown(socket_, SHUT_RDWR);
}
int main(int argc, char **argv)
@@ -582,12 +736,12 @@ am::CAmSamplePlugin::CAmSamplePlugin(CAmSocketHandler *mySocketHandler, sockType
sampleCheckCB(this, &CAmSamplePlugin::check), //
mSocketHandler(mySocketHandler), //
mConnecthandle(), //
- mReceiveHandle(), //
- msgList()
+ mReceiveHandle(), //
+ msgList(),
+ mSocket(-1)
{
int yes = 1;
- int socketHandle;
struct sockaddr_in servAddr;
struct sockaddr_un unixAddr;
unsigned int servPort = 6060;
@@ -595,26 +749,30 @@ am::CAmSamplePlugin::CAmSamplePlugin(CAmSocketHandler *mySocketHandler, sockType
switch (socketType)
{
case UNIX:
- socketHandle = socket(AF_UNIX, SOCK_STREAM, 0);
+ mSocket = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(mSocket==-1)
+ return;
unixAddr.sun_family = AF_UNIX;
strcpy(unixAddr.sun_path, SOCK_PATH);
unlink(unixAddr.sun_path);
- bind(socketHandle, (struct sockaddr *) &unixAddr, strlen(unixAddr.sun_path) + sizeof(unixAddr.sun_family));
+ bind(mSocket, (struct sockaddr *) &unixAddr, strlen(unixAddr.sun_path) + sizeof(unixAddr.sun_family));
break;
case INET:
- socketHandle = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- setsockopt(socketHandle, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
+ mSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+ if(mSocket==-1)
+ return;
+ setsockopt(mSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = INADDR_ANY;
servAddr.sin_port = htons(servPort);
- bind(socketHandle, (struct sockaddr *) &servAddr, sizeof(servAddr));
+ bind(mSocket, (struct sockaddr *) &servAddr, sizeof(servAddr));
break;
default:
break;
}
- if (listen(socketHandle, 3) < 0)
+ if (listen(mSocket, 3) < 0)
{
#ifdef ENABLED_SOCKETHANDLER_TEST_OUTPUT
std::cout << "listen ok" << std::endl;
@@ -622,12 +780,12 @@ am::CAmSamplePlugin::CAmSamplePlugin(CAmSocketHandler *mySocketHandler, sockType
} /* if */
int a = 1;
- ioctl(socketHandle, FIONBIO, (char *) &a);
- setsockopt(socketHandle, SOL_SOCKET, SO_KEEPALIVE, (char *) &a, sizeof(a));
+ ioctl(mSocket, FIONBIO, (char *) &a);
+ setsockopt(mSocket, SOL_SOCKET, SO_KEEPALIVE, (char *) &a, sizeof(a));
short events = 0;
events |= POLLIN;
- mySocketHandler->addFDPoll(socketHandle, events, NULL, &connectFiredCB, NULL, NULL, NULL, mConnecthandle);
+ mySocketHandler->addFDPoll(mSocket, events, NULL, &connectFiredCB, NULL, NULL, NULL, mConnecthandle);
#ifdef ENABLED_SOCKETHANDLER_TEST_OUTPUT
std::cout << "setup server - listening" << std::endl;
#endif
@@ -714,3 +872,53 @@ bool am::CAmSamplePlugin::check(const sh_pollHandle_t handle, void *userData)
return false;
}
+CAmSamplePluginStressTest::CAmSamplePluginStressTest(CAmSocketHandler *mySocketHandler, sockType_e socketType):CAmSamplePlugin(mySocketHandler,socketType)
+, mTimers(TIMERS_TO_TEST, NULL)
+{
+ sh_timerHandle_t handle;
+ TestUserData userData;
+ userData.i = 1;
+ userData.f = 1.f;
+ timespec timeoutTime;
+ timeoutTime.tv_sec = 0;
+ timeoutTime.tv_nsec = 10000000;// 0,01
+ for (auto & timer : mTimers)
+ {
+ timer = new CAmTimerStressTest2(mySocketHandler, timeoutTime, 0);
+ if (mySocketHandler->addTimer(timeoutTime, &(timer->pTimerCallback), handle, &userData, true) == E_OK);
+ timer->setHandle(handle);
+
+ EXPECT_CALL(*timer, timerCallback(_,&userData)).Times(AnyNumber());
+ }
+}
+
+CAmSamplePluginStressTest::~CAmSamplePluginStressTest()
+{
+ for (auto & timer : mTimers)
+ {
+ delete timer, timer = NULL;
+ }
+}
+
+void CAmSamplePluginStressTest::receiveData(const pollfd pollfd, const sh_pollHandle_t handle, void* userData)
+{
+ CAmSamplePlugin::receiveData(pollfd, handle, userData);
+
+ sh_timerHandle_t handle1;
+ for (auto & timer : mTimers)
+ {
+ ASSERT_EQ(mSocketHandler->removeTimer(timer->getHandle()), E_OK);
+ ASSERT_EQ(mSocketHandler->addTimer(timer->getUpdateTimeout(), &(timer->pTimerCallback), handle1, NULL, true), E_OK);
+ timer->setHandle(handle1);
+ }
+}
+
+bool CAmSamplePluginStressTest::dispatchData(const sh_pollHandle_t handle, void* userData)
+{
+ return CAmSamplePlugin::dispatchData( handle, userData);
+}
+
+bool CAmSamplePluginStressTest::check(const sh_pollHandle_t handle, void* userData)
+{
+ return CAmSamplePlugin::check( handle, userData);
+}