Extend DnsTlsServer to store validation state
This change also fixes a bug in PrivateDnsConfiguration which DoT
servers not valid for the network might somehow be counted as
validated servers. For instance, if a validation for DoT server
finishes after the server is removed, the server is mistakenly
deemed as a validated server.
Bug: 79727473
Test: cd packages/modules/DnsResolver && atest
Change-Id: Idee1f34f59dce1451b7b3e87fd20e6795af883ba
diff --git a/resolv_tls_unit_test.cpp b/resolv_tls_unit_test.cpp
index 78f98cb..919ff6f 100644
--- a/resolv_tls_unit_test.cpp
+++ b/resolv_tls_unit_test.cpp
@@ -800,6 +800,18 @@
EXPECT_FALSE(s2 == s1);
}
+void checkEqual(const DnsTlsServer& s1, const DnsTlsServer& s2) {
+ EXPECT_TRUE(s1 == s1);
+ EXPECT_TRUE(s2 == s2);
+ EXPECT_TRUE(isAddressEqual(s1, s1));
+ EXPECT_TRUE(isAddressEqual(s2, s2));
+
+ EXPECT_FALSE(s1 < s2);
+ EXPECT_FALSE(s2 < s1);
+ EXPECT_TRUE(s1 == s2);
+ EXPECT_TRUE(s2 == s1);
+}
+
class ServerTest : public BaseTest {};
TEST_F(ServerTest, IPv4) {
@@ -873,6 +885,18 @@
EXPECT_TRUE(s2.wasExplicitlyConfigured());
}
+TEST_F(ServerTest, State) {
+ DnsTlsServer s1(V4ADDR1), s2(V4ADDR1);
+ checkEqual(s1, s2);
+ s1.setValidationState(Validation::success);
+ checkEqual(s1, s2);
+ s2.setValidationState(Validation::fail);
+ checkEqual(s1, s2);
+
+ EXPECT_EQ(s1.validationState(), Validation::success);
+ EXPECT_EQ(s2.validationState(), Validation::fail);
+}
+
TEST(QueryMapTest, Basic) {
DnsTlsQueryMap map;