@@ -133,7 +133,7 @@ class InfluxDbInstance(object):
133
133
in a temporary place, using a config file template.
134
134
'''
135
135
136
- def __init__ (self , conf_template ):
136
+ def __init__ (self , conf_template , udp_enabled = False ):
137
137
# create a temporary dir to store all needed files
138
138
# for the influxdb server instance :
139
139
self .temp_dir_base = tempfile .mkdtemp ()
@@ -142,28 +142,28 @@ def __init__(self, conf_template):
142
142
tempdir = self .temp_dir_influxdb = tempfile .mkdtemp (
143
143
dir = self .temp_dir_base )
144
144
# we need some "free" ports :
145
- self .broker_port = get_free_port ()
146
- self .admin_port = get_free_port ()
147
- self .udp_port = get_free_port ()
148
- self .snapshot_port = get_free_port ()
149
-
150
- self .logs_file = os .path .join (self .temp_dir_base , 'logs.txt' )
151
-
152
- with open (conf_template ) as fh :
153
- conf = fh .read ().format (
154
- broker_port = self .broker_port ,
155
- admin_port = self .admin_port ,
156
- udp_port = self .udp_port ,
157
- broker_raft_dir = os .path .join (tempdir , 'raft' ),
158
- broker_node_dir = os .path .join (tempdir , 'db' ),
159
- cluster_dir = os .path .join (tempdir , 'state' ),
160
- logfile = self .logs_file ,
161
- snapshot_port = self .snapshot_port ,
162
- )
145
+
146
+ ports = dict (
147
+ broker_port = get_free_port (),
148
+ webui_port = get_free_port (),
149
+ admin_port = get_free_port (),
150
+ udp_port = get_free_port () if udp_enabled else - 1 ,
151
+ )
152
+
153
+ conf_data = dict (
154
+ broker_raft_dir = os .path .join (tempdir , 'raft' ),
155
+ broker_node_dir = os .path .join (tempdir , 'db' ),
156
+ cluster_dir = os .path .join (tempdir , 'state' ),
157
+ logs_file = os .path .join (self .temp_dir_base , 'logs.txt' ),
158
+ udp_enabled = 'true' if udp_enabled else 'false' ,
159
+ )
160
+ conf_data .update (ports )
161
+ self .__dict__ .update (conf_data )
163
162
164
163
conf_file = os .path .join (self .temp_dir_base , 'influxdb.conf' )
165
164
with open (conf_file , "w" ) as fh :
166
- fh .write (conf )
165
+ with open (conf_template ) as fh_template :
166
+ fh .write (fh_template .read ().format (** conf_data ))
167
167
168
168
# now start the server instance:
169
169
proc = self .proc = subprocess .Popen (
@@ -182,8 +182,13 @@ def __init__(self, conf_template):
182
182
# or you run a 286 @ 1Mhz ?
183
183
try :
184
184
while time .time () < timeout :
185
- if (is_port_open (self .broker_port )
185
+ if (is_port_open (self .webui_port )
186
186
and is_port_open (self .admin_port )):
187
+ # it's hard to check if a UDP port is open..
188
+ if udp_enabled :
189
+ # so let's just sleep 0.5 sec in this case
190
+ # to be sure that the server has open the port
191
+ time .sleep (0.5 )
187
192
break
188
193
time .sleep (0.5 )
189
194
if proc .poll () is not None :
@@ -192,13 +197,13 @@ def __init__(self, conf_template):
192
197
proc .terminate ()
193
198
proc .wait ()
194
199
raise RuntimeError ('Timeout waiting for influxdb to listen'
195
- ' on its broker port' )
200
+ ' on its ports (%s)' % ports )
196
201
except RuntimeError as err :
197
202
data = self .get_logs_and_output ()
198
203
data ['reason' ] = str (err )
199
204
data ['now' ] = datetime .datetime .now ()
200
205
raise RuntimeError ("%(now)s > %(reason)s. RC=%(rc)s\n "
201
- "stdout=%(out)r \n stderr=%(err)r \n logs=%(logs)r"
206
+ "stdout=%(out)s \n stderr=%(err)s \n logs=%(logs)r"
202
207
% data )
203
208
204
209
def get_logs_and_output (self ):
@@ -225,9 +230,11 @@ def close(self, remove_tree=True):
225
230
226
231
227
232
def _setup_influxdb_server (inst ):
228
- inst .influxd_inst = InfluxDbInstance (inst .influxdb_template_conf )
233
+ inst .influxd_inst = InfluxDbInstance (
234
+ inst .influxdb_template_conf ,
235
+ udp_enabled = getattr (inst , 'influxdb_udp_enabled' , False ))
229
236
inst .cli = InfluxDBClient ('localhost' ,
230
- inst .influxd_inst .broker_port ,
237
+ inst .influxd_inst .webui_port ,
231
238
'root' , '' , database = 'db' )
232
239
233
240
@@ -653,12 +660,14 @@ def test_tags_json_order(self):
653
660
class UdpTests (ManyTestCasesWithServerMixin ,
654
661
unittest .TestCase ):
655
662
663
+ influxdb_udp_enabled = True
664
+
656
665
influxdb_template_conf = os .path .join (THIS_DIR ,
657
- 'influxdb.udp_conf .template' )
666
+ 'influxdb.conf .template' )
658
667
659
668
def test_write_points_udp (self ):
660
669
cli = InfluxDBClient (
661
- 'localhost' , self .influxd_inst .broker_port ,
670
+ 'localhost' , self .influxd_inst .webui_port ,
662
671
'dont' , 'care' ,
663
672
database = 'db' ,
664
673
use_udp = True , udp_port = self .influxd_inst .udp_port
0 commit comments