Skip to content

Commit e982323

Browse files
authored
Add version as tag to internal metrics. (#100)
1 parent 5ce2efc commit e982323

File tree

5 files changed

+42
-10
lines changed

5 files changed

+42
-10
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ name: Linters & Tests
22

33
on:
44
push:
5+
branches: [ master ]
56
pull_request:
6-
types:
7-
- opened
8-
- reopened
7+
branches: [ master ]
98
workflow_call:
109
inputs:
1110
env_yml:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
setuptools.setup(
1616
name='wavefront-sdk-python',
17-
version='1.8.11', # The version number. Update with each pull request.
17+
version='1.8.12', # The version number. Update with each pull request.
1818
author='Wavefront by VMware',
1919
url='https://github.com/wavefrontHQ/wavefront-sdk-python',
2020
license='Apache-2.0',

test/test_client.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import requests
1313

1414
from wavefront_sdk.client import WavefrontClient
15+
from wavefront_sdk.common.metrics import registry
1516
from wavefront_sdk.entities.tracing.span_log import SpanLog
1617

1718

@@ -29,6 +30,22 @@ def setUp(self):
2930
self._response = Mock()
3031
self._response.status_code = 200
3132

33+
def test_send_version_with_internal_metrics(self):
34+
no_registry = registry.WavefrontSdkMetricsRegistry(
35+
wf_metric_sender=None)
36+
with patch.object(
37+
registry,
38+
'WavefrontSdkMetricsRegistry',
39+
return_value=no_registry) as mock_registry:
40+
WavefrontClient(
41+
'no_server',
42+
'no_token',
43+
flush_interval_seconds=86400,
44+
enable_internal_metrics=True)
45+
self.assertRegex(
46+
mock_registry.call_args[1]['tags']['version'],
47+
r'^(v\d+\.\d+\.\d+)|(unknown)$')
48+
3249
def test_send_span_with_span_logs(self):
3350

3451
self._sender.send_span(

wavefront_sdk/client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ def __init__(self, server, token, max_queue_size=50000, batch_size=10000,
9292
ingestion_type = 'proxy'
9393

9494
if enable_internal_metrics:
95+
version = utils.get_version(constants.WAVEFRONT_SDK_PYTHON)
9596
self._sdk_metrics_registry = registry.WavefrontSdkMetricsRegistry(
9697
wf_metric_sender=self,
98+
tags={'version': version},
9799
prefix=f'{constants.SDK_METRIC_PREFIX}'
98100
f'.core.sender.{ingestion_type}'
99101
)

wavefront_sdk/common/utils.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -435,21 +435,35 @@ def event_to_json(name, start_time, end_time, source, tags,
435435
return str(json.dumps(event))
436436

437437

438-
def get_sem_ver(name):
439-
"""Return semantic version of sdk used in Wavefront reportable format.
440-
441-
Ex: <major>.<2-digit-minor><2-digit-patch> (1.0603 => v1.6.3)
438+
def get_version(name):
439+
"""Return semantic version of sdk used ex: 'v1.6.3'.
442440
443441
@param name: SDK Name
444442
@type name: str
445-
@return: Semantic version in wavefront format as String
443+
@return: The version of this library. ex: 'v1.6.3' If version can't be
444+
found, returns 'unknown'
446445
"""
447446
try:
448447
version = pkg_resources.require(name)[0].version
449-
return get_sem_ver_value(version)
448+
return "v" + version
450449
except pkg_resources.DistributionNotFound:
451450
LOGGER.warning('Unable to get version info,'
452451
' No distribution found for : %s', name)
452+
return "unknown"
453+
454+
455+
def get_sem_ver(name):
456+
"""Return semantic version of sdk used in Wavefront reportable format.
457+
458+
Ex: <major>.<2-digit-minor><2-digit-patch> (1.0603 => v1.6.3)
459+
460+
@param name: SDK Name
461+
@type name: str
462+
@return: Semantic version in wavefront format as String. Ex: '1.0603'
463+
"""
464+
version = get_version(name)
465+
if version.startswith('v'):
466+
return get_sem_ver_value(version[1:])
453467
return "0.0"
454468

455469

0 commit comments

Comments
 (0)