1
# -*- coding: utf-8 -*-
3
# Copyright 2010 Canonical Ltd. All rights reserved.
6
# Facundo Batista <facundo@canonical.com>
7
# Natalia Bidart <natalia.bidart@canonical.com>
9
"""Helpers for the integration tests."""
18
from twisted.internet import defer
21
LOREM_IPSUM = """Lorem ipsum dolor sit amet, consectetur adipiscing elit.
22
Nam dapibus commodo magna, et dignissim eros aliquam nec. Vivamus
23
bibendum, mi quis porta volutpat, velit turpis volutpat urna, at tempor
24
ante massa at turpis. Nulla at felis ac dui accumsan fermentum. Mauris
25
accumsan convallis vehicula. Sed urna justo, mattis feugiat cursus a,
26
semper non augue. Ut et congue velit. Fusce non nunc erat. Donec id
27
sagittis elit. Curabitur bibendum vulputate accumsan. Nunc pharetra
28
molestie orci, a mattis nulla sodales in.
31
def debug(prefix, msg, *args, **kwargs):
32
"""Print debug messages."""
34
tstamp = time.strftime("%H:%M:%S", time.localtime(t)) + str(t % 1)[1:5]
35
if 'previous_newline' in kwargs and kwargs['previous_newline']:
37
print tstamp, prefix, msg, ' '.join(map(str, args))
40
def walk_and_list_dir(directory, with_dirname=False):
41
"""List every directory and file under dirname.
43
This filters out all support directories.
46
dir_len = len(directory) + 1
47
for (dirname, dirpath, files) in os.walk(directory):
48
# remove special files from ubuntu one and from tests infrastructure
49
if '.config' in dirname or '.local' in dirname or '.mark' in dirname:
52
dirname = dirname[dir_len:]
53
result.append(dirname)
54
result.extend([os.path.join(dirname, f) for f in files])
56
# remove bogus empty nothing
64
def create_file_and_add_content(filepath, content=None):
65
"""Create a file under filepath and add random content to it."""
67
limit = random.randint(0, len(LOREM_IPSUM))
68
content = LOREM_IPSUM[:limit]
69
with open(filepath, 'w') as fd:
74
def _is_retry_exception(err):
75
"""Check if the exception is a retry one."""
76
if isinstance(err, dbus.exceptions.DBusException):
77
if err.get_dbus_name() == 'org.freedesktop.DBus.Error.NoReply':
83
"""Call the function until its deferred not timeouts (max n times)."""
85
@defer.inlineCallbacks
91
res = yield func(*a, **k)
92
except Exception, err:
94
if opportunities == 0 or not _is_retry_exception(err):
98
defer.returnValue(res)