feat(mqtt): add link diagnostics and improve network logging
This commit is contained in:
1 parent
366b086713
commit
3e3eec8d5d
11 files changed
+317
-30
No files matched your search
@@ -4,26 +4,36 @@
|
||||
|
||||
TEST(NetworkPolicy, MqttDownDisconnectsSlotsWithoutRequestingImmediateRetry) {
|
||||
const auto actions = NetworkPolicy::mqttActions(NetworkTransition::Down);
|
||||
EXPECT_TRUE(actions.disconnect_slots);
|
||||
EXPECT_TRUE(actions.stop_started_slots);
|
||||
EXPECT_FALSE(actions.retry_disconnected_slots_now);
|
||||
EXPECT_FALSE(actions.reset_reconnect_backoff);
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, MqttUpRequestsImmediateRetryWithoutDisconnectingSlots) {
|
||||
const auto actions = NetworkPolicy::mqttActions(NetworkTransition::Up);
|
||||
EXPECT_FALSE(actions.disconnect_slots);
|
||||
EXPECT_FALSE(actions.stop_started_slots);
|
||||
EXPECT_TRUE(actions.retry_disconnected_slots_now);
|
||||
EXPECT_TRUE(actions.reset_reconnect_backoff);
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, NoTransitionHasNoMqttSideEffects) {
|
||||
const auto actions = NetworkPolicy::mqttActions(NetworkTransition::None);
|
||||
EXPECT_FALSE(actions.disconnect_slots);
|
||||
EXPECT_FALSE(actions.stop_started_slots);
|
||||
EXPECT_FALSE(actions.retry_disconnected_slots_now);
|
||||
EXPECT_FALSE(actions.reset_reconnect_backoff);
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, LinkSwitchReconnectsMqttSlotsImmediately) {
|
||||
const auto actions = NetworkPolicy::mqttActions(NetworkTransition::Switched);
|
||||
EXPECT_TRUE(actions.disconnect_slots);
|
||||
EXPECT_TRUE(actions.stop_started_slots);
|
||||
EXPECT_TRUE(actions.retry_disconnected_slots_now);
|
||||
EXPECT_TRUE(actions.reset_reconnect_backoff);
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, MediumNamesAreStableForTransitionLogs) {
|
||||
EXPECT_STREQ("none", NetworkPolicy::mediumName(NetworkMedium::None));
|
||||
EXPECT_STREQ("ethernet", NetworkPolicy::mediumName(NetworkMedium::Ethernet));
|
||||
EXPECT_STREQ("wifi", NetworkPolicy::mediumName(NetworkMedium::WiFi));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, BootPrefersEthernetAndOtherwiseUsesConfiguredWifi) {
|
||||
@@ -32,6 +42,15 @@ TEST(NetworkPolicy, BootPrefersEthernetAndOtherwiseUsesConfiguredWifi) {
|
||||
EXPECT_EQ(NetworkMedium::None, NetworkPolicy::bootSelection(false, false));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, EthernetBootProbeHonorsFullDeadlineUntilConnected) {
|
||||
EXPECT_TRUE(NetworkPolicy::ethernetBootProbePending(true, false, 0, 8000));
|
||||
EXPECT_TRUE(NetworkPolicy::ethernetBootProbePending(true, false, 1500, 8000));
|
||||
EXPECT_TRUE(NetworkPolicy::ethernetBootProbePending(true, false, 7999, 8000));
|
||||
EXPECT_FALSE(NetworkPolicy::ethernetBootProbePending(true, false, 8000, 8000));
|
||||
EXPECT_FALSE(NetworkPolicy::ethernetBootProbePending(true, true, 100, 8000));
|
||||
EXPECT_FALSE(NetworkPolicy::ethernetBootProbePending(false, false, 100, 8000));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, EthernetFailureWaitsForGraceAndConnectedWifi) {
|
||||
NetworkPolicy::AutomaticSelectionInput input = {
|
||||
NetworkMedium::Ethernet, false, true, true, false, 0,
|
||||
@@ -57,6 +76,41 @@ TEST(NetworkPolicy, SwitchingLockPinsTheCurrentMedium) {
|
||||
EXPECT_EQ(NetworkMedium::WiFi, NetworkPolicy::automaticSelection(input));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, DiagnosticsIdentifyEthernetFallbackCause) {
|
||||
using Reason = NetworkDiagnosticReason;
|
||||
EXPECT_EQ(Reason::EthernetInitFailed,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
false, false, false, false, NetworkMedium::WiFi, false, 0));
|
||||
EXPECT_EQ(Reason::EthernetLinkUnknown,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, false, false, false, NetworkMedium::WiFi, false, 0));
|
||||
EXPECT_EQ(Reason::EthernetLinkDown,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, false, false, NetworkMedium::WiFi, false, 0));
|
||||
EXPECT_EQ(Reason::EthernetAwaitingIp,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, true, false, NetworkMedium::WiFi, false, 0));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, DiagnosticsExplainWhyReadyEthernetHasNotBeenSelected) {
|
||||
using Reason = NetworkDiagnosticReason;
|
||||
EXPECT_EQ(Reason::SwitchingLocked,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, true, true, NetworkMedium::WiFi, true,
|
||||
NetworkPolicy::kEthernetFailbackStableMs));
|
||||
EXPECT_EQ(Reason::EthernetStabilizing,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, true, true, NetworkMedium::WiFi, false,
|
||||
NetworkPolicy::kEthernetFailbackStableMs - 1));
|
||||
EXPECT_EQ(Reason::EthernetReady,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, true, true, NetworkMedium::WiFi, false,
|
||||
NetworkPolicy::kEthernetFailbackStableMs));
|
||||
EXPECT_EQ(Reason::EthernetActive,
|
||||
NetworkPolicy::automaticDiagnosticReason(
|
||||
true, true, true, true, NetworkMedium::Ethernet, false, 0));
|
||||
}
|
||||
|
||||
TEST(NetworkPolicy, NtpIsScheduledOncePerConnectivityEdge) {
|
||||
EXPECT_TRUE(NetworkPolicy::ntpPendingAfterConnectivitySample(
|
||||
false, false, false, true));
|
||||
|
||||
Reference in new issue
Block a user