This commit is contained in:
1 parent
9e0230731b
commit
e7905c667d
10 files changed
+224
-27
No files matched your search
+15
-3
@@ -17,6 +17,7 @@ from tests.test_schedule import Clock
|
||||
POWER_PATH = "/solar_api/v1/GetPowerFlowRealtimeData.fcgi"
|
||||
METER_PATH = "/solar_api/v1/GetMeterRealtimeData.cgi"
|
||||
BOILER_PATH = "/api/status/emrs"
|
||||
BOILER_CONFIG_PATH = "/api/config/emrs"
|
||||
|
||||
|
||||
class ScriptedHttp:
|
||||
@@ -47,7 +48,7 @@ class RetryTests(unittest.TestCase):
|
||||
sample = client.collect("test-house")
|
||||
self.assertEqual(sample["errors"], {})
|
||||
self.assertEqual(sample["readings"]["production_ac_w"], 2000)
|
||||
self.assertEqual(httpd.get_counts, {POWER_PATH: retries + 1, METER_PATH: 1, BOILER_PATH: 1})
|
||||
self.assertEqual(httpd.get_counts, {POWER_PATH: retries + 1, METER_PATH: 1, BOILER_PATH: 1, BOILER_CONFIG_PATH: 1})
|
||||
self.assertEqual(len(messages.output), retries)
|
||||
|
||||
def test_giving_up_after_three_retries_preserves_other_sources(self):
|
||||
@@ -57,7 +58,7 @@ class RetryTests(unittest.TestCase):
|
||||
client = FroniusClient(InverterConfig(base_url=base, min_request_interval_seconds=0))
|
||||
with self.assertLogs("solar_relay.fronius", level="WARNING"):
|
||||
sample = client.collect("test-house")
|
||||
self.assertEqual(httpd.get_counts, {POWER_PATH: 1, METER_PATH: 1, BOILER_PATH: 4})
|
||||
self.assertEqual(httpd.get_counts, {POWER_PATH: 1, METER_PATH: 1, BOILER_PATH: 4, BOILER_CONFIG_PATH: 1})
|
||||
self.assertEqual(len(httpd.get_failures[BOILER_PATH]), 1)
|
||||
self.assertEqual(sample["errors"], {"boiler": f"HTTP {failures[3]}"})
|
||||
self.assertIsNone(sample["readings"]["boiler_enabled"])
|
||||
@@ -73,7 +74,18 @@ class RetryTests(unittest.TestCase):
|
||||
self.assertLogs("solar_relay.fronius", level="WARNING"):
|
||||
result = client.collect("test-house")
|
||||
self.assertEqual(result["errors"], {})
|
||||
self.assertEqual([stamp for stamp, _ in http.requests], [0, 4, 8, 12, 16, 20])
|
||||
self.assertEqual([stamp for stamp, _ in http.requests], [0, 4, 8, 12, 16, 20, 24])
|
||||
|
||||
def test_protected_threshold_settings_use_fallback_without_retries_or_losing_state(self):
|
||||
with server() as (httpd, base):
|
||||
httpd.get_failures[BOILER_CONFIG_PATH] = [401, 401]
|
||||
client = FroniusClient(InverterConfig(base_url=base, min_request_interval_seconds=0, boiler_threshold_w=2400))
|
||||
result = client.collect("test")
|
||||
self.assertEqual(httpd.get_counts[BOILER_CONFIG_PATH], 1)
|
||||
self.assertEqual(result["errors"], {})
|
||||
self.assertTrue(result["readings"]["boiler_enabled"])
|
||||
self.assertEqual(result["readings"]["boiler_threshold_w"], 2400)
|
||||
self.assertEqual(result["readings"]["boiler_threshold_source"], "config")
|
||||
|
||||
def test_retries_preserve_clock_boundaries_and_one_saved_observation_per_poll(self):
|
||||
origin = datetime(2026, 11, 1, 12, tzinfo=timezone.utc).timestamp()
|
||||
|
||||
Reference in new issue
Block a user