diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-12-18 10:16:05 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-18 10:16:05 (GMT) |
commit | 82a34212908a749964deb419e6baf476a247ed84 (patch) | |
tree | d07cbb436284155a8497d75e9c6acb0a1f06795e /Swiften/Examples/BenchTool | |
parent | b5ad1ec998ec01501866c2ae5ea66c650b79c5cf (diff) | |
download | swift-82a34212908a749964deb419e6baf476a247ed84.zip swift-82a34212908a749964deb419e6baf476a247ed84.tar.bz2 |
Added initial BenchTool.
Diffstat (limited to 'Swiften/Examples/BenchTool')
-rw-r--r-- | Swiften/Examples/BenchTool/.gitignore | 1 | ||||
-rw-r--r-- | Swiften/Examples/BenchTool/BenchTool.cpp | 71 | ||||
-rw-r--r-- | Swiften/Examples/BenchTool/SConscript | 9 |
3 files changed, 81 insertions, 0 deletions
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 <boost/bind.hpp> +#include <boost/thread.hpp> + +#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 <Swiften/Base/sleep.h> +#include <Swiften/TLS/BlindCertificateTrustChecker.h> + +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<CoreClient*> 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"]) |