1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2024-10-06 02:41:11 +01:00

fix for leaked file descriptors in daq

This commit is contained in:
Vasilis Flouris 2015-04-29 11:41:19 +01:00
parent cd6babeab1
commit 82fed172d5
2 changed files with 12 additions and 2 deletions

View File

@ -675,7 +675,7 @@ class RunConfiguration(object):
def _finalize_device_config(self): def _finalize_device_config(self):
self._load_default_config_if_necessary(self.device) self._load_default_config_if_necessary(self.device)
config = _merge_config_dicts(self._raw_config.get(self.device), config = _merge_config_dicts(self._raw_config.get(self.device, {}),
self._raw_config.get('device_config', {}), self._raw_config.get('device_config', {}),
list_duplicates='all') list_duplicates='all')
self.device_config = config self.device_config = config

View File

@ -20,6 +20,7 @@ import os
import sys import sys
import csv import csv
from collections import OrderedDict from collections import OrderedDict
from multiprocessing import Process, Queue
from wlauto import Instrument, Parameter from wlauto import Instrument, Parameter
from wlauto.exceptions import ConfigError, InstrumentError from wlauto.exceptions import ConfigError, InstrumentError
@ -209,7 +210,11 @@ class Daq(Instrument):
def _execute_command(self, command, **kwargs): def _execute_command(self, command, **kwargs):
# pylint: disable=E1101 # pylint: disable=E1101
result = daq.execute_command(self.server_config, command, **kwargs) q = Queue()
p = Process(target=_send_daq_command, args=(q, self.server_config, command), kwargs=kwargs)
p.start()
result = q.get()
p.join()
if result.status == daq.Status.OK: if result.status == daq.Status.OK:
pass # all good pass # all good
elif result.status == daq.Status.OKISH: elif result.status == daq.Status.OKISH:
@ -219,3 +224,8 @@ class Daq(Instrument):
else: else:
raise InstrumentError('DAQ: Unexpected result: {} - {}'.format(result.status, result.message)) raise InstrumentError('DAQ: Unexpected result: {} - {}'.format(result.status, result.message))
return result.data return result.data
def _send_daq_command(q, *args, **kwargs):
result = daq.execute_command(*args, **kwargs)
q.put(result)