Skip to content

Commit 1c75096

Browse files
jaygel179Elpedio Adoptante Jr
andauthored
Fix issue with app name using default transport (#11)
* Fix for App Name issue * fix issue with python3 Co-authored-by: Elpedio Adoptante Jr <eadoptante@stackify.com>
1 parent 1777568 commit 1c75096

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

stackify/transport/default/http.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ def identify_application(self):
8484
@retrying.retry(wait_exponential_multiplier=1000, stop_max_delay=32000)
8585
def send_log_group(self, url, group):
8686
internal_logger.debug('Sending logs by group')
87+
group.AppName = self.environment_detail.configuredAppName
8788
group.Env = self.environment_detail.configuredEnvironmentName
8889
group.CDID = self.device_id
8990
group.CDAppID = self.device_app_id

test-docker.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
set -e
44

5+
# remove caches
6+
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
7+
58
VERSIONS=('2.7' '3.4' '3.5' '3.6' '3.7' '3.8')
69
# VERSIONS=('2.7')
710

tests/transport/default/test_init.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,37 @@
1+
import gzip
2+
import json
13
import logging
24
from unittest import TestCase
35
from mock import patch
6+
from requests.models import Response
7+
8+
try:
9+
from cStringIO import StringIO
10+
except Exception:
11+
try:
12+
from StringIO import StringIO
13+
except Exception:
14+
pass # python 3, we use a new function in gzip
415

516
from stackify.transport import application
617
from stackify.transport.default import DefaultTransport
718
from stackify.transport.default.log import LogMsg
819
from stackify.transport.default.log import LogMsgGroup
920

1021

22+
def parse_gzip_data(data):
23+
if hasattr(gzip, 'decompress'):
24+
return gzip.decompress(data).decode("utf-8")
25+
else:
26+
sio = StringIO()
27+
sio.write(data)
28+
sio.seek(0)
29+
g = gzip.GzipFile(fileobj=sio, mode='rb')
30+
transaction = g.read()
31+
g.close()
32+
return transaction.decode("utf-8")
33+
34+
1135
class AgentSocketTransportTest(TestCase):
1236
def setUp(self):
1337
self.config = application.ApiConfiguration(
@@ -37,11 +61,57 @@ def test_create_group_message(self):
3761

3862
@patch('requests.post')
3963
def test_send(self, mock_post):
64+
res = Response()
65+
res._content = json.dumps({
66+
'DeviceID': None,
67+
'DeviceAppID': None,
68+
'AppNameID': 'test',
69+
'EnvID': 0,
70+
'Env': 'test_environment',
71+
'AppName': 'test_appname',
72+
'AppEnvID': 'test',
73+
'DeviceAlias': 'test'
74+
}).encode('UTF-8')
75+
mock_post.side_effect = [res, Response()]
4076
message = self.default_transport.create_message(logging.makeLogRecord({'mgs': 'message', 'funcName': 'foo'}))
4177
group_message = self.default_transport.create_group_message([message])
4278

4379
self.default_transport.send(group_message)
4480

4581
assert mock_post.called
82+
assert mock_post.call_count == 2
4683
assert mock_post.call_args_list[0][0][0] == 'test_apiurl/Metrics/IdentifyApp'
4784
assert mock_post.call_args_list[0][1]['headers']['Content-Type'] == 'application/json'
85+
assert mock_post.call_args_list[1][0][0] == 'test_apiurl/Log/Save'
86+
assert mock_post.call_args_list[1][1]['headers']['Content-Type'] == 'application/json'
87+
88+
@patch('requests.post')
89+
def test_json_data(self, mock_post):
90+
res = Response()
91+
res._content = json.dumps({
92+
'DeviceID': None,
93+
'DeviceAppID': None,
94+
'AppNameID': 'test',
95+
'EnvID': 0,
96+
'Env': 'test_environment',
97+
'AppName': 'test_appname',
98+
'AppEnvID': 'test',
99+
'DeviceAlias': 'test'
100+
}).encode('UTF-8')
101+
mock_post.side_effect = [res, Response()]
102+
message = self.default_transport.create_message(logging.makeLogRecord({'mgs': 'message', 'funcName': 'foo'}))
103+
group_message = self.default_transport.create_group_message([message])
104+
105+
self.default_transport.send(group_message)
106+
107+
assert mock_post.called
108+
assert mock_post.call_count == 2
109+
assert mock_post.call_args_list[1][0][0] == 'test_apiurl/Log/Save'
110+
111+
payload = json.loads(parse_gzip_data(mock_post.call_args_list[1][1]['data']))
112+
assert payload.get('AppName') == 'test_appname'
113+
assert payload.get('Env') == 'test_environment'
114+
assert payload.get('ServerName')
115+
assert payload.get('AppNameID') == 'test'
116+
assert payload.get('Logger')
117+
assert payload.get('Msgs')

0 commit comments

Comments
 (0)