shill: Handle success/failure events from dhcpcd.
BUG=chromium-os:16718
TEST=unit tests
Change-Id: I36d8b737a060f7b295ebab26aa37b4e71022b4f0
Reviewed-on: http://gerrit.chromium.org/gerrit/2880
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/ipconfig_unittest.cc b/ipconfig_unittest.cc
index 0ff911a..efb565f 100644
--- a/ipconfig_unittest.cc
+++ b/ipconfig_unittest.cc
@@ -52,7 +52,7 @@
properties.domain_search.push_back("zoo.org");
properties.domain_search.push_back("zoo.com");
properties.mtu = 700;
- ipconfig_->UpdateProperties(properties);
+ ipconfig_->UpdateProperties(properties, true);
EXPECT_EQ("1.2.3.4", ipconfig_->properties().address);
EXPECT_EQ(24, ipconfig_->properties().subnet_cidr);
EXPECT_EQ("11.22.33.44", ipconfig_->properties().broadcast_address);
@@ -67,31 +67,40 @@
EXPECT_EQ(700, ipconfig_->properties().mtu);
}
+namespace {
+
class UpdateCallbackTest {
public:
- UpdateCallbackTest(IPConfigRefPtr ipconfig)
+ UpdateCallbackTest(IPConfigRefPtr ipconfig, bool success)
: ipconfig_(ipconfig),
+ success_(success),
called_(false) {}
- void Callback(IPConfigRefPtr ipconfig) {
+ void Callback(IPConfigRefPtr ipconfig, bool success) {
called_ = true;
- EXPECT_EQ(ipconfig.get(), ipconfig_.get());
+ EXPECT_EQ(ipconfig_.get(), ipconfig.get());
+ EXPECT_EQ(success_, success);
}
bool called() const { return called_; }
private:
IPConfigRefPtr ipconfig_;
+ bool success_;
bool called_;
};
+} // namespace {}
+
TEST_F(IPConfigTest, UpdateCallback) {
- UpdateCallbackTest callback_test(ipconfig_);
- ASSERT_FALSE(callback_test.called());
- ipconfig_->RegisterUpdateCallback(
- NewCallback(&callback_test, &UpdateCallbackTest::Callback));
- ipconfig_->UpdateProperties(IPConfig::Properties());
- EXPECT_TRUE(callback_test.called());
+ for (int success = 0; success < 2; success++) {
+ UpdateCallbackTest callback_test(ipconfig_, success);
+ ASSERT_FALSE(callback_test.called());
+ ipconfig_->RegisterUpdateCallback(
+ NewCallback(&callback_test, &UpdateCallbackTest::Callback));
+ ipconfig_->UpdateProperties(IPConfig::Properties(), success);
+ EXPECT_TRUE(callback_test.called());
+ }
}
} // namespace shill