Commit 0e4d500588f16260d92002d4242aedaad24699a5
1 parent
2eed0cfe
fix(example-stress): distribute over 10 topcs to get more out of some brokers
Some brokers work a lot better if you don't hammer everything on a single topic. Others are less fuzzed about it.
Showing
1 changed file
with
11 additions
and
3 deletions
example/stress/main.cpp
| @@ -30,7 +30,7 @@ int main() | @@ -30,7 +30,7 @@ int main() | ||
| 30 | int64_t totalLatency = 0; | 30 | int64_t totalLatency = 0; |
| 31 | 31 | ||
| 32 | // Subscribe to the topic we are going to stress test. | 32 | // Subscribe to the topic we are going to stress test. |
| 33 | - client.subscribe("test/test/test", [&received, &totalLatency](const std::string topic, const std::string payload) | 33 | + client.subscribe("example/stress/+", [&received, &totalLatency](const std::string topic, const std::string payload) |
| 34 | { | 34 | { |
| 35 | // Calculate the latency. | 35 | // Calculate the latency. |
| 36 | auto now = std::chrono::steady_clock::now(); | 36 | auto now = std::chrono::steady_clock::now(); |
| @@ -47,13 +47,17 @@ int main() | @@ -47,13 +47,17 @@ int main() | ||
| 47 | // means. | 47 | // means. |
| 48 | bool is_failing = true; | 48 | bool is_failing = true; |
| 49 | auto start = std::chrono::steady_clock::now(); | 49 | auto start = std::chrono::steady_clock::now(); |
| 50 | + int channel = 0; | ||
| 50 | while (true) | 51 | while (true) |
| 51 | { | 52 | { |
| 52 | auto now = std::chrono::steady_clock::now(); | 53 | auto now = std::chrono::steady_clock::now(); |
| 53 | auto now_ms = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count(); | 54 | auto now_ms = std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count(); |
| 54 | 55 | ||
| 55 | - // Publish the current time, so we can check the latency. | ||
| 56 | - if (!client.publish("test/test/test", std::to_string(now_ms), false)) | 56 | + // Publish the current time, so we can check the latency. We distribute |
| 57 | + // it over multiple topics, to give brokers a chance to distrubte the | ||
| 58 | + // load on their side. | ||
| 59 | + channel = (channel + 1) % 10; | ||
| 60 | + if (!client.publish("example/stress/" + std::to_string(channel), std::to_string(now_ms), false)) | ||
| 57 | { | 61 | { |
| 58 | failed++; | 62 | failed++; |
| 59 | } | 63 | } |
| @@ -69,6 +73,10 @@ int main() | @@ -69,6 +73,10 @@ int main() | ||
| 69 | { | 73 | { |
| 70 | std::cout << "Sent: " << sent << "/s - Received: " << received << "/s - Failed: " << failed << "/s - Avg Latency: " << (totalLatency / received) << "us" << std::endl; | 74 | std::cout << "Sent: " << sent << "/s - Received: " << received << "/s - Failed: " << failed << "/s - Avg Latency: " << (totalLatency / received) << "us" << std::endl; |
| 71 | } | 75 | } |
| 76 | + else | ||
| 77 | + { | ||
| 78 | + std::cout << "Sent: " << sent << "/s - Received: " << received << "/s - Failed: " << failed << "/s " << std::endl; | ||
| 79 | + } | ||
| 72 | sent = 0; | 80 | sent = 0; |
| 73 | received = 0; | 81 | received = 0; |
| 74 | failed = 0; | 82 | failed = 0; |