Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: chrome/browser/net/dns_probe_runner_unittest.cc

Issue 13270005: Display DNS probe results. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix more browser test issues Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/dns_probe_runner_unittest.cc
diff --git a/chrome/browser/net/dns_probe_runner_unittest.cc b/chrome/browser/net/dns_probe_runner_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..08485045a6fd9fe8497763af1c08f7da2f57f436
--- /dev/null
+++ b/chrome/browser/net/dns_probe_runner_unittest.cc
@@ -0,0 +1,100 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/bind.h"
+#include "base/memory/weak_ptr.h"
+#include "base/message_loop.h"
+#include "base/run_loop.h"
+#include "chrome/browser/net/dns_probe_runner.h"
+#include "chrome/browser/net/dns_probe_test_util.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "net/dns/dns_client.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using base::MessageLoopForIO;
+using base::RunLoop;
+using content::TestBrowserThreadBundle;
+using net::MockDnsClientRule;
+
+namespace chrome_browser_net {
+
+namespace {
+
+class TestDnsProbeRunnerCallback {
+ public:
+ TestDnsProbeRunnerCallback()
+ : callback_(base::Bind(&TestDnsProbeRunnerCallback::OnCalled,
+ base::Unretained(this))),
+ called_(false) {}
+
+ const base::Closure& callback() const { return callback_; }
+ bool called() const { return called_; }
+
+ private:
+ void OnCalled() {
+ DCHECK(!called_);
+ called_ = true;
+ }
+
+ base::Closure callback_;
+ bool called_;
+};
+
+class DnsProbeRunnerTest : public testing::Test {
+ protected:
+ void RunTest(MockDnsClientRule::Result good_query_result,
mmenke 2013/06/25 17:40:27 nit: We no longer do a bad query, so should get r
Deprecated (see juliatuttle) 2013/06/26 22:23:56 Done.
+ DnsProbeRunner::Result expected_probe_result);
+
+ TestBrowserThreadBundle bundle_;
+ DnsProbeRunner runner_;
+};
+
+void DnsProbeRunnerTest::RunTest(
+ MockDnsClientRule::Result good_query_result,
+ DnsProbeRunner::Result expected_probe_result) {
+ TestDnsProbeRunnerCallback callback;
+
+ runner_.SetClient(CreateMockDnsClientForProbes(good_query_result));
+ runner_.RunProbe(callback.callback());
+ if (good_query_result != MockDnsClientRule::FAIL_SYNC)
+ EXPECT_TRUE(runner_.IsRunning());
+
+ RunLoop().RunUntilIdle();
+ EXPECT_FALSE(runner_.IsRunning());
+ EXPECT_TRUE(callback.called());
+ EXPECT_EQ(expected_probe_result, runner_.result());
+}
+
+TEST_F(DnsProbeRunnerTest, Null) {
+ // Test that we can simply construct and destroy a DnsProbeRunner.
+}
mmenke 2013/06/25 17:40:27 I don't think we really need this one.
Deprecated (see juliatuttle) 2013/06/26 22:23:56 I've had them crash before, but okay.
+
+TEST_F(DnsProbeRunnerTest, Probe_OK) {
+ RunTest(MockDnsClientRule::OK, DnsProbeRunner::CORRECT);
+}
+
+TEST_F(DnsProbeRunnerTest, Probe_EMPTY) {
+ RunTest(MockDnsClientRule::EMPTY, DnsProbeRunner::INCORRECT);
+}
+
+TEST_F(DnsProbeRunnerTest, Probe_TIMEOUT) {
+ RunTest(MockDnsClientRule::TIMEOUT, DnsProbeRunner::UNREACHABLE);
+}
+
+TEST_F(DnsProbeRunnerTest, Probe_FAIL_ASYNC) {
+ RunTest(MockDnsClientRule::FAIL_ASYNC, DnsProbeRunner::INCORRECT);
+}
+
+TEST_F(DnsProbeRunnerTest, Probe_FAIL_SYNC) {
+ RunTest(MockDnsClientRule::FAIL_SYNC, DnsProbeRunner::INCORRECT);
+}
+
+TEST_F(DnsProbeRunnerTest, TwoProbes) {
+ RunTest(MockDnsClientRule::OK, DnsProbeRunner::CORRECT);
+ RunTest(MockDnsClientRule::EMPTY, DnsProbeRunner::INCORRECT);
+}
+
+} // namespace
+
+} // namespace chrome_browser_net

Powered by Google App Engine
This is Rietveld 408576698