summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJames Ennis <james.ennis@codethink.com>2018-04-24 16:38:02 +0100
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-06-07 16:41:33 -0400
commit8a0c0a9a8b2daf33b11b7717b7037584f67bfdec (patch)
tree72c1c07fa784f3cd74859d16591b67ffed64d0f1 /tests
parent58adbe0b3ca29e1d88d2003abca5192381512054 (diff)
downloadbuildstream-8a0c0a9a8b2daf33b11b7717b7037584f67bfdec.tar.gz
element_generators.py: Add a utility function to create arbitrary size elements
New file consisting of functions that allow us to generate elements on the fly __init__.py now includes create_element_size()
Diffstat (limited to 'tests')
-rw-r--r--tests/testutils/__init__.py1
-rw-r--r--tests/testutils/element_generators.py40
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/testutils/__init__.py b/tests/testutils/__init__.py
index 7e5b792a2..93143b505 100644
--- a/tests/testutils/__init__.py
+++ b/tests/testutils/__init__.py
@@ -1,3 +1,4 @@
from .runcli import cli, cli_integration
from .repo import create_repo, ALL_REPO_KINDS
from .artifactshare import create_artifact_share
+from .element_generators import create_element_size
diff --git a/tests/testutils/element_generators.py b/tests/testutils/element_generators.py
new file mode 100644
index 000000000..3f6090da8
--- /dev/null
+++ b/tests/testutils/element_generators.py
@@ -0,0 +1,40 @@
+import os
+
+from buildstream import _yaml
+
+
+# create_element_size()
+#
+# This will open a "<name>_data" file for writing and write
+# <size> MB of urandom (/dev/urandom) "stuff" into the file.
+# A bst import element file is then created: <name>.bst
+#
+# Args:
+# name: (str) of the element name (e.g. target.bst)
+# path: (str) pathway to the project/elements directory
+# dependencies: A list of strings (can also be an empty list)
+# size: (int) size of the element in bytes
+#
+# Returns:
+# Nothing (creates a .bst file of specified size)
+#
+def create_element_size(name, path, dependencies, size):
+ os.makedirs(path, exist_ok=True)
+
+ # Create a file to be included in this element's artifact
+ with open(os.path.join(path, name + '_data'), 'wb+') as f:
+ f.write(os.urandom(size))
+
+ # Simplest case: We want this file (of specified size) to just
+ # be an import element.
+ element = {
+ 'kind': 'import',
+ 'sources': [
+ {
+ 'kind': 'local',
+ 'path': os.path.join(path, name + '_data')
+ }
+ ],
+ 'depends': dependencies
+ }
+ _yaml.dump(element, os.path.join(path, name))