Skip to content

Commit 2f001c0

Browse files
committed
Add and test nanosecond precision option.
1 parent efb17d4 commit 2f001c0

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

fluent/sender.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def __init__(self,
4848
timeout=3.0,
4949
verbose=False,
5050
buffer_overflow_handler=None,
51+
nanosecond_precision=False,
5152
**kwargs):
5253

5354
self.tag = tag
@@ -57,6 +58,7 @@ def __init__(self,
5758
self.timeout = timeout
5859
self.verbose = verbose
5960
self.buffer_overflow_handler = buffer_overflow_handler
61+
self.nanosecond_precision = nanosecond_precision
6062

6163
self.socket = None
6264
self.pendings = None
@@ -70,7 +72,10 @@ def __init__(self,
7072
self._close()
7173

7274
def emit(self, label, data):
73-
cur_time = int(time.time())
75+
if self.nanosecond_precision:
76+
cur_time = EventTime(time.time())
77+
else:
78+
cur_time = int(time.time())
7479
return self.emit_with_time(label, cur_time, data)
7580

7681
def emit_with_time(self, label, timestamp, data):

tests/test_sender.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import print_function
44
import unittest
55
import socket
6+
import msgpack
67

78
import fluent.sender
89
from tests import mockserver
@@ -64,6 +65,20 @@ def test_simple(self):
6465
self.assertTrue(data[0][1])
6566
self.assertTrue(isinstance(data[0][1], int))
6667

68+
def test_nanosecond(self):
69+
sender = self._sender
70+
sender.nanosecond_precision = True
71+
sender.emit('foo', {'bar': 'baz'})
72+
sender._close()
73+
data = self.get_data()
74+
eq = self.assertEqual
75+
eq(1, len(data))
76+
eq(3, len(data[0]))
77+
eq('test.foo', data[0][0])
78+
eq({'bar': 'baz'}, data[0][2])
79+
self.assertTrue(isinstance(data[0][1], msgpack.ExtType))
80+
eq(data[0][1].code, 0)
81+
6782
def test_no_last_error_on_successful_emit(self):
6883
sender = self._sender
6984
sender.emit('foo', {'bar': 'baz'})

0 commit comments

Comments
 (0)