From 82a34212908a749964deb419e6baf476a247ed84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sat, 18 Dec 2010 11:16:05 +0100 Subject: Added initial BenchTool. diff --git a/Swiften/Client/ClientXMLTracer.h b/Swiften/Client/ClientXMLTracer.h index f3cfd08..43fdda3 100644 --- a/Swiften/Client/ClientXMLTracer.h +++ b/Swiften/Client/ClientXMLTracer.h @@ -8,12 +8,12 @@ #include -#include "Swiften/Client/Client.h" +#include namespace Swift { class ClientXMLTracer { public: - ClientXMLTracer(Client* client) { + ClientXMLTracer(CoreClient* client) { client->onDataRead.connect(boost::bind(&ClientXMLTracer::printData, '<', _1)); client->onDataWritten.connect(boost::bind(&ClientXMLTracer::printData, '>', _1)); } diff --git a/Swiften/Examples/BenchTool/.gitignore b/Swiften/Examples/BenchTool/.gitignore new file mode 100644 index 0000000..8220b3b --- /dev/null +++ b/Swiften/Examples/BenchTool/.gitignore @@ -0,0 +1 @@ +BenchTool diff --git a/Swiften/Examples/BenchTool/BenchTool.cpp b/Swiften/Examples/BenchTool/BenchTool.cpp new file mode 100644 index 0000000..a5c0925 --- /dev/null +++ b/Swiften/Examples/BenchTool/BenchTool.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include +#include + +#include "Swiften/Client/Client.h" +#include "Swiften/Network/TimerFactory.h" +#include "Swiften/Network/BoostNetworkFactories.h" +#include "Swiften/EventLoop/EventLoop.h" +#include "Swiften/EventLoop/SimpleEventLoop.h" +#include "Swiften/Roster/GetRosterRequest.h" +#include "Swiften/Client/ClientXMLTracer.h" +#include +#include + +using namespace Swift; + +SimpleEventLoop eventLoop; +BoostNetworkFactories networkFactories(&eventLoop); +int numberOfConnectedClients = 0; + +void handleConnected() { + numberOfConnectedClients++; + std::cout << "Connected " << numberOfConnectedClients << std::endl; +} + +int main(int, char**) { + int numberOfInstances = 1000; + + char* jid = getenv("SWIFT_BENCHTOOL_JID"); + if (!jid) { + std::cerr << "Please set the SWIFT_BENCHTOOL_JID environment variable" << std::endl; + return -1; + } + char* pass = getenv("SWIFT_BENCHTOOL_PASS"); + if (!pass) { + std::cerr << "Please set the SWIFT_BENCHTOOL_PASS environment variable" << std::endl; + return -1; + } + + BlindCertificateTrustChecker trustChecker; + std::vector clients; + for (int i = 0; i < numberOfInstances; ++i) { + CoreClient* client = new Swift::CoreClient(&eventLoop, &networkFactories, JID(jid), String(pass)); + client->setCertificateTrustChecker(&trustChecker); + client->onConnected.connect(&handleConnected); + clients.push_back(client); + } + + for (size_t i = 0; i < clients.size(); ++i) { + clients[i]->connect(); + } + + { + Timer::ref timer = networkFactories.getTimerFactory()->createTimer(30000); + timer->onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop)); + timer->start(); + + eventLoop.run(); + } + + for (size_t i = 0; i < clients.size(); ++i) { + delete clients[i]; + } + + return 0; +} diff --git a/Swiften/Examples/BenchTool/SConscript b/Swiften/Examples/BenchTool/SConscript new file mode 100644 index 0000000..bfd4cea --- /dev/null +++ b/Swiften/Examples/BenchTool/SConscript @@ -0,0 +1,9 @@ +import os + +Import("env") + +myenv = env.Clone() +myenv.UseFlags(myenv["SWIFTEN_FLAGS"]) +myenv.UseFlags(myenv["SWIFTEN_DEP_FLAGS"]) + +myenv.Program("BenchTool", ["BenchTool.cpp"]) diff --git a/Swiften/Examples/SConscript b/Swiften/Examples/SConscript index 7b9b491..9b9a35a 100644 --- a/Swiften/Examples/SConscript +++ b/Swiften/Examples/SConscript @@ -8,4 +8,5 @@ SConscript(dirs = [ "ConnectivityTest", "LinkLocalTool", "ParserTester", + "BenchTool", ]) -- cgit v0.10.2-6-g49f6