Skip to content

Commit 6714d82

Browse files
committed
Introduce Opt-out for Metrics
1 parent 1b8bf96 commit 6714d82

4 files changed

Lines changed: 21 additions & 21 deletions

File tree

awscrt/mqtt.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ class Connection(NativeResource):
332332
proxy_options (Optional[awscrt.http.HttpProxyOptions]):
333333
Optional proxy options for all connections.
334334
335-
enable_metrics (bool): Enable IoT SDK metrics in MQTT CONNECT packet username field, including SDK name, version, and platform. Default to True.
335+
disable_metrics (bool): Disable IoT SDK metrics in MQTT CONNECT packet username field, including SDK name, version, and platform. Default to False.
336336
337337
metrics (Optional[AWSIoTMetrics]) : Optional metrics configuration for IoT SDK metrics reporting. If provided, the CRT will use the given metrics. If None, a default AWSIoTMetrics will be created.
338338
"""
@@ -361,7 +361,7 @@ def __init__(self,
361361
on_connection_success=None,
362362
on_connection_failure=None,
363363
on_connection_closed=None,
364-
enable_metrics=True,
364+
disable_metrics=False,
365365
metrics=None,
366366
):
367367

@@ -415,7 +415,7 @@ def __init__(self,
415415
self.password = password
416416
self.socket_options = socket_options if socket_options else SocketOptions()
417417
self.proxy_options = proxy_options if proxy_options else websocket_proxy_options
418-
if enable_metrics:
418+
if not disable_metrics:
419419
self._metrics = create_metrics_mqtt3(metrics, self.proxy_options, self.client.tls_ctx)
420420
else:
421421
self._metrics = None

awscrt/mqtt5.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,7 +1371,7 @@ class ClientOptions:
13711371
on_lifecycle_event_connection_success_fn (Callable[[LifecycleConnectSuccessData],]): Callback for Lifecycle Event Connection Success.
13721372
on_lifecycle_event_connection_failure_fn (Callable[[LifecycleConnectFailureData],]): Callback for Lifecycle Event Connection Failure.
13731373
on_lifecycle_event_disconnection_fn (Callable[[LifecycleDisconnectData],]): Callback for Lifecycle Event Disconnection.
1374-
enable_metrics (bool): Enable IoT SDK metrics in MQTT CONNECT packet username field, including SDK name, version, and platform. Default to True.
1374+
disable_metrics (bool): Disable IoT SDK metrics in MQTT CONNECT packet username field, including SDK name, version, and platform. Default to False.
13751375
metrics (Optional[AWSIoTMetrics]) : Optional metrics configuration for IoT SDK metrics reporting. If provided, the CRT will use the given metrics. If None, a default AWSIoTMetrics will be created.
13761376
13771377
"""
@@ -1400,7 +1400,7 @@ class ClientOptions:
14001400
on_lifecycle_event_connection_success_fn: Callable[[LifecycleConnectSuccessData], None] = None
14011401
on_lifecycle_event_connection_failure_fn: Callable[[LifecycleConnectFailureData], None] = None
14021402
on_lifecycle_event_disconnection_fn: Callable[[LifecycleDisconnectData], None] = None
1403-
enable_metrics: bool = True
1403+
disable_metrics: bool = False
14041404
metrics: Optional[AWSIoTMetrics] = None
14051405

14061406

@@ -1430,7 +1430,7 @@ def __init__(self, client_options: ClientOptions):
14301430
self._on_lifecycle_connection_failure_cb = _check_callback(
14311431
client_options.on_lifecycle_event_connection_failure_fn)
14321432
self._on_lifecycle_disconnection_cb = _check_callback(client_options.on_lifecycle_event_disconnection_fn)
1433-
self._enable_metrics = client_options.enable_metrics
1433+
self._disable_metrics = client_options.disable_metrics
14341434

14351435
def _ws_handshake_transform(self, http_request_binding, http_headers_binding, native_userdata):
14361436
if self._ws_handshake_transform_cb is None:
@@ -1778,7 +1778,7 @@ def __init__(
17781778
keep_alive_secs: int,
17791779
ack_timeout_secs: int,
17801780
clean_session: int,
1781-
enable_metrics: bool):
1781+
disable_metrics: bool):
17821782
self.host_name = host_name
17831783
self.port = port
17841784
self.client_id = "" if client_id is None else client_id
@@ -1789,7 +1789,7 @@ def __init__(
17891789
self.keep_alive_secs: int = 1200 if keep_alive_secs is None else keep_alive_secs
17901790
self.ack_timeout_secs: int = 0 if ack_timeout_secs is None else ack_timeout_secs
17911791
self.clean_session: bool = True if clean_session is None else clean_session
1792-
self.enable_metrics: bool = True if enable_metrics is None else enable_metrics
1792+
self.disable_metrics: bool = False if disable_metrics is None else disable_metrics
17931793

17941794

17951795
class Client(NativeResource):
@@ -1821,7 +1821,7 @@ def __init__(self, client_options: ClientOptions):
18211821
socket_options = SocketOptions()
18221822

18231823
# Handle metrics configuration
1824-
if client_options.enable_metrics:
1824+
if not client_options.disable_metrics:
18251825
self._metrics = create_metrics_mqtt5(client_options)
18261826
else:
18271827
self._metrics = None
@@ -1877,7 +1877,7 @@ def __init__(self, client_options: ClientOptions):
18771877
client_options.ack_timeout_sec,
18781878
client_options.topic_aliasing_options,
18791879
websocket_is_none,
1880-
client_options.enable_metrics,
1880+
not client_options.disable_metrics,
18811881
self._metrics,
18821882
core)
18831883

@@ -1894,7 +1894,7 @@ def __init__(self, client_options: ClientOptions):
18941894
ack_timeout_secs=client_options.ack_timeout_sec,
18951895
clean_session=(
18961896
client_options.session_behavior < ClientSessionBehaviorType.REJOIN_ALWAYS if client_options.session_behavior else True),
1897-
enable_metrics=client_options.enable_metrics)
1897+
disable_metrics=client_options.disable_metrics)
18981898

18991899
def start(self):
19001900
"""Notifies the MQTT5 client that you want it maintain connectivity to the configured endpoint.
@@ -2148,5 +2148,5 @@ def new_connection(self, on_connection_interrupted=None, on_connection_resumed=N
21482148
websocket_proxy_options=None,
21492149
websocket_handshake_transform=None,
21502150
proxy_options=None,
2151-
enable_metrics=self.adapter_options.enable_metrics
2151+
disable_metrics=self.adapter_options.disable_metrics
21522152
)

test/test_mqtt.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ def _test_mqtt311_direct_connect_basic_auth(self):
630630
port=input_port,
631631
username=input_username,
632632
password=input_password,
633-
enable_metrics=False)
633+
disable_metrics=True)
634634
connection.connect().result(TIMEOUT)
635635
connection.disconnect().result(TIMEOUT)
636636

@@ -762,7 +762,7 @@ def sign_function(transform_args, **kwargs):
762762
password=input_password,
763763
use_websockets=True,
764764
websocket_handshake_transform=sign_function,
765-
enable_metrics=False)
765+
disable_metrics=True)
766766
connection.connect().result(TIMEOUT)
767767
connection.disconnect().result(TIMEOUT)
768768

@@ -853,7 +853,7 @@ def _test_mqtt311_direct_connect_basic_auth_metrics_enabled(self):
853853
bootstrap = ClientBootstrap(elg, resolver)
854854
client = Client(bootstrap, None)
855855

856-
# Create connection with enable_metrics=True explicitly
856+
# Create connection with disable_metrics=False explicitly
857857
# This should fail because metrics appends to username, corrupting basic auth
858858
connection = Connection(
859859
client=client,
@@ -862,7 +862,7 @@ def _test_mqtt311_direct_connect_basic_auth_metrics_enabled(self):
862862
port=input_port,
863863
username=input_username,
864864
password=input_password,
865-
enable_metrics=True)
865+
disable_metrics=False)
866866

867867
# Connection should fail because metrics corrupts the username for basic auth
868868
exception_occurred = False

test/test_mqtt5.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def _test_direct_connect_minimum(self):
217217

218218
client_options = mqtt5.ClientOptions(
219219
host_name=input_host_name,
220-
enable_metrics=False
220+
disable_metrics=True
221221
)
222222
callbacks = Mqtt5TestCallbacks()
223223
client = self._create_client(client_options=client_options, callbacks=callbacks)
@@ -244,7 +244,7 @@ def _test_direct_connect_basic_auth(self):
244244
host_name=input_host_name,
245245
port=input_port,
246246
connect_options=connect_options,
247-
enable_metrics=False
247+
disable_metrics=True
248248
)
249249
callbacks = Mqtt5TestCallbacks()
250250
client = self._create_client(client_options=client_options, callbacks=callbacks)
@@ -431,7 +431,7 @@ def _test_websocket_connect_basic_auth(self):
431431
host_name=input_host_name,
432432
port=input_port,
433433
connect_options=connect_options,
434-
enable_metrics=False
434+
disable_metrics=True
435435
)
436436
callbacks = Mqtt5TestCallbacks()
437437
client_options.websocket_handshake_transform = callbacks.ws_handshake_transform
@@ -2216,13 +2216,13 @@ def _test_direct_connect_basic_auth_metrics_enabled(self):
22162216
host_name=input_host_name,
22172217
port=input_port,
22182218
connect_options=connect_options,
2219-
enable_metrics=True
2219+
disable_metrics=False
22202220
)
22212221
callbacks = Mqtt5TestCallbacks()
22222222
client = self._create_client(client_options=client_options, callbacks=callbacks)
22232223

22242224
# Verify metrics are enabled
2225-
self.assertTrue(client_options.enable_metrics)
2225+
self.assertFalse(client_options.disable_metrics)
22262226

22272227
client.start()
22282228
# Connection should fail because metrics corrupts the username for basic auth

0 commit comments

Comments
 (0)