summaryrefslogtreecommitdiff
path: root/tests/test-performance/dbus-spammer/dbus-spammer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-performance/dbus-spammer/dbus-spammer.cpp')
-rw-r--r--tests/test-performance/dbus-spammer/dbus-spammer.cpp238
1 files changed, 0 insertions, 238 deletions
diff --git a/tests/test-performance/dbus-spammer/dbus-spammer.cpp b/tests/test-performance/dbus-spammer/dbus-spammer.cpp
deleted file mode 100644
index 2d84a60..0000000
--- a/tests/test-performance/dbus-spammer/dbus-spammer.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-#include <stdio.h>
-#include <signal.h>
-#include "dbus-services.h"
-
-sig_atomic_t volatile g_exit = 0;
-
-Maintainer::Maintainer(Threads* t) : QObject()
-{
- allOnline = false;
- threads = t;
- timerID = startTimer(0);
-}
-
-Maintainer::~Maintainer()
-{
- killTimer(timerID);
-}
-
-void Maintainer::timerEvent(QTimerEvent*)
-{
- if( !allOnline )
- {
- int count = 0;
- Threads::iterator th;
- for( th = threads->begin(); th != threads->end(); ++th )
- {
- DbusSpammer* t = dynamic_cast<DbusSpammer*>(*th);
- if( t )
- {
- if( t->firstTime )
- count++;
- }
- }
-
- allOnline = (count == 0) && (threads->count() > 0);
-
- if( allOnline )
- printf("All thread online and working!\n");
- }
-
- fflush(stdout);
- fflush(stderr);
-
- if( g_exit )
- QMetaObject::invokeMethod(QCoreApplication::instance(), "quit");
-}
-
-class CommandLineParser
-{
-public:
- CommandLineParser(int argc, char** argv)
- {
- threadCount = 10;
- dataSize = 512;
-
- parseArguments(argc, argv);
- }
-
-public:
- int threadCount;
- int dataSize;
-
-private:
- void parseArguments(int argc, char** argv)
- {
- int option, tmp;
-
- while( (option = getopt(argc, argv, "ht:s:")) != -1 )
- {
- switch( option )
- {
- case 'h':
- usage(0);
- return;
- case 't':
- tmp = atoi(optarg);
- if( tmp > 0 )
- {
- threadCount = tmp;
- printf("Thread count: %d\n", threadCount);
- }
- else
- {
- printf("Invalid thread count, using default value %d!\n", threadCount);
- }
- break;
- case 's':
- tmp = atoi(optarg);
- if( tmp > 0 )
- {
- dataSize = tmp;
- printf("Data size: %d\n", dataSize);
- }
- else
- {
- printf("Invalid data size, using default value %d!\n", dataSize);
- }
- break;
- default:
- usage(-1);
- return;
- }
- }
- }
-
- void usage(int theExitCode)
- {
- printf("usage: dbus-spammer [-h] [-t thread_count] [-s data_size]\n");
- printf("default values:\n");
- printf(" thread_count: %d\n", threadCount);
- printf(" data_size : %d\n", dataSize);
- exit(theExitCode);
- }
-};
-
-void signal_handler(int signo, siginfo_t *info, void *data)
-{
- switch( signo )
- {
- case SIGHUP:
- case SIGTERM:
- case SIGINT:
- default:
- puts("Caught exit signal!");
- g_exit = 1;
- }
-
- (void)info;
- (void)data;
-}
-
-bool installSignals()
-{
- struct sigaction sa;
-
- memset(&sa, 0, sizeof(struct sigaction));
- sa.sa_sigaction = signal_handler;
- sa.sa_flags = SA_SIGINFO;
-
- if( sigaction(SIGHUP, &sa, NULL) < 0 || sigaction(SIGTERM, &sa, NULL) < 0 || sigaction(SIGINT, &sa, NULL) < 0 )
- {
- puts("Failed to install signal handlers");
- return false;
- }
-
- return true;
-}
-
-int main(int argc, char **argv)
-{
- QCoreApplication app(argc, argv);
- CommandLineParser cmd(argc, argv);
-
- int count = cmd.threadCount;
-
- Threads threads;
- Servers servers;
-
- if( !installSignals() )
- {
- return -2;
- }
-
- if( !QDBusConnection::sessionBus().isConnected() )
- {
- puts("Cannot connect to the D-Bus session bus.");
- return -1;
- }
-
- Maintainer maintainer(&threads);
-
- printf("Starting pair: ");
- for( int i = 0; i < count; i++ )
- {
- printf("#%d", i);
- fflush(stdout);
- DbusServer* s = new DbusServer(i);
- s->start(QThread::NormalPriority);
- servers.push_back(s);
- usleep(100000);
-
- QThread* t = new DbusSpammer(i, s->getServiceName(), cmd.dataSize);
- threads.push_back(t);
- t->start(QThread::NormalPriority);
- }
-
- puts("");
-
- app.exec();
-
- Threads::iterator th;
- printf("Cleaning thread: ");
- for( th = threads.begin(); th != threads.end(); ++th )
- {
- DbusSpammer* t = dynamic_cast<DbusSpammer*>(*th);
- if( t )
- {
- printf("#%d", t->threadID);
-
- t->quit();
- int cnt = 0;
- while( t->isRunning() )
- {
- fflush(stdout);
- fflush(stderr);
- if( ++cnt == 1000 )
- {
- printf("[T!]");
- t->terminate();
- break;
- }
- usleep(1000);
- }
- delete t;
- }
- }
- puts(" ... done!");
-
- Servers::iterator sv;
- printf("Cleaning service: ");
- for( sv = servers.begin(); sv != servers.end(); ++sv )
- {
- DbusServer* s = dynamic_cast<DbusServer*>(*sv);
- if( s )
- {
- printf("#%d", s->getServiceID());
- s->quit();
- while( !s->isFinished() )
- usleep(1000);
-
- delete s;
- }
- }
-
- puts(" ... done!");
-
- return 0;
-}