From 8f36428c70df4b0588c695a0ba108afd3f6faeca Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Thu, 11 Dec 2014 22:52:20 +0100 Subject: [PATCH] Whisper test fix. --- libwhisper/Common.cpp | 14 ++++++++++---- test/whisperTopic.cpp | 16 ++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/libwhisper/Common.cpp b/libwhisper/Common.cpp index 0d54af089..afeca48a8 100644 --- a/libwhisper/Common.cpp +++ b/libwhisper/Common.cpp @@ -54,10 +54,16 @@ bool TopicFilter::matches(Envelope const& _e) const { for (TopicMask const& t: m_topicMasks) { - if (_e.topics().size() == t.size()) - for (unsigned i = 0; i < t.size(); ++i) - if (((t[i].first ^ _e.topics()[i]) & t[i].second) != 0) - goto NEXT_TOPICMASK; + for (unsigned i = 0; i < t.size(); ++i) + { + for (auto et: _e.topics()) + if (((t[i].first ^ et) & t[i].second) == 0) + goto NEXT_TOPICPART; + // failed to match topicmask against any topics: move on to next mask + goto NEXT_TOPICMASK; + NEXT_TOPICPART:; + } + // all topicmasks matched. return true; NEXT_TOPICMASK:; } diff --git a/test/whisperTopic.cpp b/test/whisperTopic.cpp index 493b37bc2..941c790e5 100644 --- a/test/whisperTopic.cpp +++ b/test/whisperTopic.cpp @@ -32,7 +32,7 @@ BOOST_AUTO_TEST_SUITE(whisper) BOOST_AUTO_TEST_CASE(topic) { - g_logVerbosity = 0; + g_logVerbosity = 20; bool started = false; unsigned result = 0; @@ -40,16 +40,16 @@ BOOST_AUTO_TEST_CASE(topic) { setThreadName("other"); - Host ph("Test", NetworkPreferences(30303, "", false, true)); + Host ph("Test", NetworkPreferences(50303, "", false, true)); auto wh = ph.registerCapability(new WhisperHost()); ph.start(); started = true; /// Only interested in odd packets - auto w = wh->installWatch(BuildTopicMask()("odd")); + auto w = wh->installWatch(BuildTopicMask("odd")); - for (int i = 0, last = 0; i < 100 && last < 81; ++i) + for (int i = 0, last = 0; i < 200 && last < 81; ++i) { for (auto i: wh->checkWatch(w)) { @@ -65,10 +65,12 @@ BOOST_AUTO_TEST_CASE(topic) while (!started) this_thread::sleep_for(chrono::milliseconds(50)); - Host ph("Test", NetworkPreferences(30300, "", false, true)); + Host ph("Test", NetworkPreferences(50300, "", false, true)); auto wh = ph.registerCapability(new WhisperHost()); + this_thread::sleep_for(chrono::milliseconds(500)); ph.start(); - ph.connect("127.0.0.1", 30303); + this_thread::sleep_for(chrono::milliseconds(500)); + ph.connect("127.0.0.1", 50303); KeyPair us = KeyPair::create(); for (int i = 0; i < 10; ++i) @@ -78,6 +80,8 @@ BOOST_AUTO_TEST_CASE(topic) } listener.join(); + g_logVerbosity = 0; + BOOST_REQUIRE_EQUAL(result, 1 + 9 + 25 + 49 + 81); }