Skip to content

Commit d948055

Browse files
refactor: just always set the value
Don't try and be clever and only do it if there was a change, just always set it.
1 parent 09ca656 commit d948055

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

src/charm.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,7 @@ def _on_start(self, _):
109109
self.unit.status = ActiveStatus()
110110

111111
def _on_leader_elected(self, _event: LeaderElectedEvent):
112-
grpc_endpoint, http_endpoint, ca_cert = self._current_tracing_config()
113-
if grpc_endpoint or http_endpoint or ca_cert:
114-
self._update_charm_tracing_config()
112+
self._update_charm_tracing_config()
115113

116114
# Read current relation data rather than relying on locally cached
117115
# state. This avoids replaying stale credentials if this unit becomes

tests/test_charm.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ def test_metrics_endpoint_relation(self, mock_remove_user, mock_add_user,
157157
def test_tracing_relation_updates_endpoints(self, mock_set_tracing_config, *_):
158158
harness = self.harness
159159
harness.set_leader(True)
160+
mock_set_tracing_config.reset_mock()
160161

161162
relation_id = harness.add_relation("charm-tracing", "tempo-coordinator")
162163
harness.add_relation_unit(relation_id, "tempo-coordinator/0")
@@ -171,6 +172,21 @@ def test_tracing_relation_updates_endpoints(self, mock_set_tracing_config, *_):
171172
ca_cert=None,
172173
)
173174

175+
@patch("builtins.open", new_callable=mock_open, read_data=agent_conf)
176+
@patch("controlsocket.ControlSocketClient.set_charm_tracing_config")
177+
def test_tracing_relation_cleared_on_leader_elected_without_relations(
178+
self, mock_set_tracing_config, *_
179+
):
180+
harness = self.harness
181+
182+
harness.set_leader(True)
183+
184+
mock_set_tracing_config.assert_called_once_with(
185+
grpc_endpoint=None,
186+
http_endpoint=None,
187+
ca_cert=None,
188+
)
189+
174190
@patch("builtins.open", new_callable=mock_open, read_data=agent_conf)
175191
@patch("controlsocket.ControlSocketClient.set_charm_tracing_config")
176192
def test_tracing_relation_replayed_on_leader_elected(
@@ -187,11 +203,6 @@ def test_tracing_relation_replayed_on_leader_elected(
187203

188204
mock_set_tracing_config.assert_not_called()
189205

190-
harness.charm._stored.tracing_endpoints = {
191-
"otlp_grpc": "stale-grpc:4317",
192-
"otlp_http": "http://stale-http:4318",
193-
}
194-
harness.charm._stored.ca_cert = "stale-ca-cert"
195206
harness.set_leader(True)
196207

197208
mock_set_tracing_config.assert_called_once_with(
@@ -214,13 +225,14 @@ def test_tracing_relation_change_ignores_not_ready(
214225
mock_set_tracing_config.assert_not_called()
215226

216227
@patch("builtins.open", new_callable=mock_open, read_data=agent_conf)
217-
@patch(
218-
"controlsocket.ControlSocketClient.set_charm_tracing_config",
219-
side_effect=SocketConnectionError("could not connect to socket"),
220-
)
221-
def test_tracing_relation_update_sets_blocked_on_socket_error(self, *_):
228+
@patch("controlsocket.ControlSocketClient.set_charm_tracing_config")
229+
def test_tracing_relation_update_sets_blocked_on_socket_error(
230+
self, mock_set_tracing_config, *_
231+
):
222232
harness = self.harness
223233
harness.set_leader(True)
234+
mock_set_tracing_config.reset_mock()
235+
mock_set_tracing_config.side_effect = SocketConnectionError("could not connect to socket")
224236

225237
relation_id = harness.add_relation("charm-tracing", "tempo-coordinator")
226238
harness.add_relation_unit(relation_id, "tempo-coordinator/0")
@@ -242,6 +254,7 @@ def test_tracing_relation_update_sets_blocked_on_socket_error(self, *_):
242254
def test_tracing_status_error_clears_after_success(self, mock_set_tracing_config, *_):
243255
harness = self.harness
244256
harness.set_leader(True)
257+
mock_set_tracing_config.reset_mock()
245258

246259
relation_id = harness.add_relation("charm-tracing", "tempo-coordinator")
247260
harness.add_relation_unit(relation_id, "tempo-coordinator/0")
@@ -269,6 +282,7 @@ def test_tracing_status_error_clears_after_success(self, mock_set_tracing_config
269282
def test_tracing_relation_removed_clears_endpoints(self, mock_set_tracing_config, *_):
270283
harness = self.harness
271284
harness.set_leader(True)
285+
mock_set_tracing_config.reset_mock()
272286

273287
relation_id = harness.add_relation("charm-tracing", "tempo-coordinator")
274288
harness.add_relation_unit(relation_id, "tempo-coordinator/0")
@@ -296,6 +310,7 @@ def test_tracing_relation_removed_clears_endpoints(self, mock_set_tracing_config
296310
def test_receive_ca_cert_updates_tracing_config(self, mock_set_tracing_config, *_):
297311
harness = self.harness
298312
harness.set_leader(True)
313+
mock_set_tracing_config.reset_mock()
299314

300315
relation_id = harness.add_relation("charm-tracing-ca-cert", "cert-provider")
301316
harness.add_relation_unit(relation_id, "cert-provider/0")
@@ -331,6 +346,7 @@ def test_receive_ca_cert_update_ignores_empty_cert_list(
331346
def test_receive_ca_cert_removed_clears_tracing_ca_cert(self, mock_set_tracing_config, *_):
332347
harness = self.harness
333348
harness.set_leader(True)
349+
mock_set_tracing_config.reset_mock()
334350

335351
relation_id = harness.add_relation("charm-tracing-ca-cert", "cert-provider")
336352
harness.add_relation_unit(relation_id, "cert-provider/0")
@@ -409,6 +425,7 @@ def test_dbcluster_relation_changed_single_addr(
409425
mock_get_agent_id.return_value = '0'
410426

411427
harness.set_leader()
428+
harness.charm._stored.tracing_status_error = None
412429

413430
# Have another unit enter the relation.
414431
# Its bind address should end up in the application data bindings list.
@@ -508,6 +525,7 @@ def test_dbcluster_relation_departed(
508525
mock_get_agent_id.return_value = '0'
509526

510527
harness.set_leader()
528+
harness.charm._stored.tracing_status_error = None
511529

512530
# Have another unit enter the relation.
513531
relation_id = harness.add_relation('dbcluster', harness.charm.app.name)
@@ -538,6 +556,7 @@ def test_dbcluster_relation_departed(
538556
def test_s3_relation_credentials_changed(self, mock_add_s3_credentials):
539557
harness = self.harness
540558
harness.set_leader(True)
559+
harness.charm._stored.tracing_status_error = None
541560

542561
relation_id = harness.add_relation("s3-backend", "s3-integrator")
543562
harness.add_relation_unit(relation_id, "s3-integrator/0")
@@ -567,6 +586,7 @@ def test_s3_relation_credentials_changed(self, mock_add_s3_credentials):
567586
def test_s3_status_pending_clears_after_collect(self, mock_add_s3_credentials):
568587
harness = self.harness
569588
harness.set_leader(True)
589+
harness.charm._stored.tracing_status_error = None
570590

571591
relation_id = harness.add_relation("s3-backend", "s3-integrator")
572592
harness.add_relation_unit(relation_id, "s3-integrator/0")
@@ -595,6 +615,7 @@ def test_s3_status_pending_clears_after_collect(self, mock_add_s3_credentials):
595615
def test_s3_relation_credentials_changed_failure_sets_blocked(self, _mock_add):
596616
harness = self.harness
597617
harness.set_leader(True)
618+
harness.charm._stored.tracing_status_error = None
598619

599620
relation_id = harness.add_relation("s3-backend", "s3-integrator")
600621
harness.add_relation_unit(relation_id, "s3-integrator/0")
@@ -673,6 +694,7 @@ def test_s3_relation_replay_failure_sets_blocked_status(self, _mock_add):
673694
)
674695

675696
harness.set_leader(True)
697+
harness.charm._stored.tracing_status_error = None
676698
with patch.object(harness.charm, "api_port", return_value=17070):
677699
harness.evaluate_status()
678700
self.assertIsInstance(harness.charm.unit.status, BlockedStatus)
@@ -682,6 +704,7 @@ def test_s3_relation_replay_failure_sets_blocked_status(self, _mock_add):
682704
def test_s3_relation_credentials_updated(self, mock_add_s3_credentials):
683705
harness = self.harness
684706
harness.set_leader(True)
707+
harness.charm._stored.tracing_status_error = None
685708

686709
relation_id = harness.add_relation("s3-backend", "s3-integrator")
687710
harness.add_relation_unit(relation_id, "s3-integrator/0")
@@ -762,6 +785,7 @@ def test_s3_relation_credentials_gone_non_leader(self, mock_remove_s3_credential
762785
def test_s3_relation_credentials_gone_failure_sets_blocked(self, _mock_remove):
763786
harness = self.harness
764787
harness.set_leader(True)
788+
harness.charm._stored.tracing_status_error = None
765789

766790
relation_id = harness.add_relation("s3-backend", "s3-integrator")
767791
harness.add_relation_unit(relation_id, "s3-integrator/0")

0 commit comments

Comments
 (0)