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