1
1
# -*- coding: utf-8 -*-
2
2
3
+ import datetime
4
+ import pytz
3
5
import sys
4
6
if sys .version_info < (2 , 7 ):
5
7
import unittest2 as unittest
@@ -38,6 +40,18 @@ class Meta:
38
40
39
41
TestSeriesHelper .MySeriesHelper = MySeriesHelper
40
42
43
+ class MySeriesTimeHelper (SeriesHelper ):
44
+
45
+ class Meta :
46
+ client = TestSeriesHelper .client
47
+ series_name = 'events.stats.{server_name}'
48
+ fields = ['time' , 'some_stat' ]
49
+ tags = ['server_name' , 'other_tag' ]
50
+ bulk_size = 5
51
+ autocommit = True
52
+
53
+ TestSeriesHelper .MySeriesTimeHelper = MySeriesTimeHelper
54
+
41
55
def test_auto_commit (self ):
42
56
"""
43
57
Tests that write_points is called after the right number of events
@@ -66,14 +80,20 @@ def testSingleSeriesName(self):
66
80
"""
67
81
Tests JSON conversion when there is only one series name.
68
82
"""
69
- TestSeriesHelper .MySeriesHelper (
70
- server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 159 )
71
- TestSeriesHelper .MySeriesHelper (
72
- server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 158 )
73
- TestSeriesHelper .MySeriesHelper (
74
- server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 157 )
75
- TestSeriesHelper .MySeriesHelper (
76
- server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 156 )
83
+ dt = datetime .datetime (2016 , 1 , 2 , 3 , 4 , 5 , 678912 )
84
+ ts1 = dt
85
+ ts2 = "2016-10-11T01:02:03.123456789-04:00"
86
+ ts3 = 1234567890123456789
87
+ ts4 = pytz .timezone ("Europe/Berlin" ).localize (dt )
88
+
89
+ TestSeriesHelper .MySeriesTimeHelper (
90
+ time = ts1 , server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 159 )
91
+ TestSeriesHelper .MySeriesTimeHelper (
92
+ time = ts2 , server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 158 )
93
+ TestSeriesHelper .MySeriesTimeHelper (
94
+ time = ts3 , server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 157 )
95
+ TestSeriesHelper .MySeriesTimeHelper (
96
+ time = ts4 , server_name = 'us.east-1' , other_tag = 'ello' , some_stat = 156 )
77
97
expectation = [
78
98
{
79
99
"measurement" : "events.stats.us.east-1" ,
@@ -84,6 +104,7 @@ def testSingleSeriesName(self):
84
104
"fields" : {
85
105
"some_stat" : 159
86
106
},
107
+ "time" : "2016-01-02T03:04:05.678912+00:00" ,
87
108
},
88
109
{
89
110
"measurement" : "events.stats.us.east-1" ,
@@ -94,6 +115,7 @@ def testSingleSeriesName(self):
94
115
"fields" : {
95
116
"some_stat" : 158
96
117
},
118
+ "time" : "2016-10-11T01:02:03.123456789-04:00" ,
97
119
},
98
120
{
99
121
"measurement" : "events.stats.us.east-1" ,
@@ -104,6 +126,7 @@ def testSingleSeriesName(self):
104
126
"fields" : {
105
127
"some_stat" : 157
106
128
},
129
+ "time" : 1234567890123456789 ,
107
130
},
108
131
{
109
132
"measurement" : "events.stats.us.east-1" ,
@@ -114,23 +137,24 @@ def testSingleSeriesName(self):
114
137
"fields" : {
115
138
"some_stat" : 156
116
139
},
140
+ "time" : "2016-01-02T03:04:05.678912+01:00" ,
117
141
}
118
142
]
119
143
120
- rcvd = TestSeriesHelper .MySeriesHelper ._json_body_ ()
144
+ rcvd = TestSeriesHelper .MySeriesTimeHelper ._json_body_ ()
121
145
self .assertTrue (all ([el in expectation for el in rcvd ]) and
122
146
all ([el in rcvd for el in expectation ]),
123
147
'Invalid JSON body of time series returned from '
124
148
'_json_body_ for one series name: {0}.' .format (rcvd ))
125
- TestSeriesHelper .MySeriesHelper ._reset_ ()
149
+ TestSeriesHelper .MySeriesTimeHelper ._reset_ ()
126
150
self .assertEqual (
127
- TestSeriesHelper .MySeriesHelper ._json_body_ (),
151
+ TestSeriesHelper .MySeriesTimeHelper ._json_body_ (),
128
152
[],
129
153
'Resetting helper did not empty datapoints.' )
130
154
131
155
def testSeveralSeriesNames (self ):
132
156
'''
133
- Tests JSON conversion when there is only one series name .
157
+ Tests JSON conversion when there are multiple series names .
134
158
'''
135
159
TestSeriesHelper .MySeriesHelper (
136
160
server_name = 'us.east-1' , some_stat = 159 , other_tag = 'ello' )
@@ -184,6 +208,10 @@ def testSeveralSeriesNames(self):
184
208
]
185
209
186
210
rcvd = TestSeriesHelper .MySeriesHelper ._json_body_ ()
211
+ for r in rcvd :
212
+ self .assertTrue (r .get ('time' ),
213
+ "No time field in received JSON body." )
214
+ del (r ["time" ])
187
215
self .assertTrue (all ([el in expectation for el in rcvd ]) and
188
216
all ([el in rcvd for el in expectation ]),
189
217
'Invalid JSON body of time series returned from '
0 commit comments