Unittest - Helper code to easily parse tx.data

This commit is contained in:
Renato Alves 2014-07-19 02:28:52 +01:00
parent b58c6566af
commit 974045da7a
2 changed files with 36 additions and 1 deletions

View file

@ -8,7 +8,7 @@ import atexit
from time import sleep from time import sleep
from subprocess import Popen from subprocess import Popen
from .utils import (find_unused_port, release_port, port_used, run_cmd_wait, from .utils import (find_unused_port, release_port, port_used, run_cmd_wait,
which) which, parse_datafile)
from .exceptions import CommandError from .exceptions import CommandError
try: try:
@ -278,4 +278,16 @@ class Taskd(object):
else: else:
return True return True
def client_data(self, client):
"""Return a python list with the content of tx.data matching the given
task client. tx.data will be parsed to string and JSON.
"""
file = os.path.join(self.datadir,
client.credentials["org"],
"users",
client.credentials["userkey"],
"tx.data")
return parse_datafile(file)
# vim: ai sts=4 et sw=4 # vim: ai sts=4 et sw=4

View file

@ -9,6 +9,10 @@ from subprocess import Popen, PIPE, STDOUT
from threading import Thread from threading import Thread
from Queue import Queue, Empty from Queue import Queue, Empty
from time import sleep from time import sleep
try:
import simplejson as json
except ImportError:
import json
from .exceptions import CommandError from .exceptions import CommandError
USED_PORTS = set() USED_PORTS = set()
@ -247,4 +251,23 @@ except ImportError:
return name return name
return None return None
def parse_datafile(file):
"""Parse .data files on the client and server treating files as JSON
"""
data = []
with open(file) as fh:
for line in fh:
line = line.rstrip("\n")
# Turn [] strings into {} to be treated properly as JSON hashes
if line.startswith('[') and line.endswith(']'):
line = '{' + line[1:-1] + '}'
if line.startswith("{"):
data.append(json.loads(line))
else:
data.append(line)
return data
# vim: ai sts=4 et sw=4 # vim: ai sts=4 et sw=4