summaryrefslogtreecommitdiff
path: root/selftest.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-08-13 15:14:03 -0400
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-08-13 15:14:03 -0400
commitfc18334dbbd4445a208ed1dcbe4070feaa385ce3 (patch)
treeecfc33f77db407ec6f83b1679dd6f36c65be8098 /selftest.cpp
parent4ce88d7f725626a42a217412788905aa00c7ce6a (diff)
downloadinfinitytier-fc18334dbbd4445a208ed1dcbe4070feaa385ce3.tar.gz
infinitytier-fc18334dbbd4445a208ed1dcbe4070feaa385ce3.zip
Version 0.4.3 (the real one): fix Gentoo ip config failures and crashes
This version fixes problems with locating the 'ip' command on Gentoo and possibly other Linux systems, and a problem that could cause a crash if EthernetTap was unable to locate one of the commands it invokes to configure IP information on tap devices. The code also now builds on Windows. It doesn't run yet, but it's a step. Windows port is in full swing. Finally, the multicast rate limit defaults were raised a little. More testing is needed here, and real world measurments.
Diffstat (limited to 'selftest.cpp')
-rw-r--r--selftest.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/selftest.cpp b/selftest.cpp
index cf4635b7..0792c1ee 100644
--- a/selftest.cpp
+++ b/selftest.cpp
@@ -33,6 +33,7 @@
#include <string>
#include <vector>
+#include "node/Constants.hpp"
#include "node/InetAddress.hpp"
#include "node/EllipticCurveKey.hpp"
#include "node/EllipticCurveKeyPair.hpp"
@@ -46,6 +47,7 @@
#include "node/Condition.hpp"
#include "node/NodeConfig.hpp"
#include "node/Dictionary.hpp"
+#include "node/RateLimiter.hpp"
#include <openssl/rand.h>
@@ -366,6 +368,32 @@ static int testOther()
return 0;
}
+static int testRateLimiter()
+{
+ RateLimiter limiter;
+ RateLimiter::Limit limit;
+
+ std::cout << "[ratelimiter] preload: 10000.0, rate: 1000.0/sec, max: 15000.0, min: -7500.0" << std::endl;
+ limit.bytesPerSecond = 1000.0;
+ limit.maxBalance = 15000.0;
+ limit.minBalance = -7500.0;
+ limiter.init(10000.0);
+ for(int i=0;i<25;++i) {
+ Thread::sleep(100);
+ std::cout << "[ratelimiter] delayed 0.1s, gate(1000.0): " << (limiter.gate(limit,1000.0) ? "OK" : "BLOCK");
+ std::cout << " (new balance afterwords: " << limiter.balance() << ")" << std::endl;
+ }
+ std::cout << "[ratelimiter] delaying 15s..." << std::endl;
+ Thread::sleep(15000);
+ for(int i=0;i<20;++i) {
+ Thread::sleep(1000);
+ std::cout << "[ratelimiter] delayed 1s, gate(2000.0): " << (limiter.gate(limit,2000.0) ? "OK" : "BLOCK");
+ std::cout << " (new balance afterwords: " << limiter.balance() << ")" << std::endl;
+ }
+
+ return 0;
+}
+
int main(int argc,char **argv)
{
int r = 0;
@@ -377,6 +405,7 @@ int main(int argc,char **argv)
r |= testPacket();
r |= testOther();
r |= testIdentity();
+ r |= testRateLimiter();
if (r)
std::cout << std::endl << "SOMETHING FAILED!" << std::endl;