You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:13:30 UTC
[buildstream] 09/43: virtual_directory_import.py: Add random test
generator
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch jmac/cas_to_cas_oct_v2
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit ef7c4cdbe7b686eabdacec59950e088091c5fe4c
Author: Jim MacArthur <ji...@codethink.co.uk>
AuthorDate: Fri Oct 5 13:43:49 2018 +0100
virtual_directory_import.py: Add random test generator
---
tests/storage/virtual_directory_import.py | 37 ++++++++++++++++++++++++++++---
1 file changed, 34 insertions(+), 3 deletions(-)
diff --git a/tests/storage/virtual_directory_import.py b/tests/storage/virtual_directory_import.py
index b76fef7..2e5163c 100644
--- a/tests/storage/virtual_directory_import.py
+++ b/tests/storage/virtual_directory_import.py
@@ -1,5 +1,6 @@
import os
import pytest
+import random
from tests.testutils import cli
from buildstream.storage import CasBasedDirectory
@@ -27,6 +28,7 @@ root_filesets = [
]
empty_hash_ref = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+RANDOM_SEED = 69105
def generate_import_roots(directory):
@@ -48,6 +50,33 @@ def generate_import_roots(directory):
os.symlink(content, os.path.join(rootdir, path))
+def generate_random_root(directory):
+ random.seed(RANDOM_SEED)
+ rootname = "root6"
+ rootdir = os.path.join(directory, "content", rootname)
+ things = []
+ locations = ['.']
+ for i in range(0, 100):
+ location = random.choice(locations)
+ thingname = "node{}".format(i)
+ thing = random.choice(['dir', 'link', 'file'])
+ target = os.path.join(rootdir, location, thingname)
+ if thing == 'dir':
+ os.makedirs(target)
+ locations.append(os.path.join(location, thingname))
+ elif thing == 'file':
+ with open(target, "wt") as f:
+ f.write("This is node {}\n".format(i))
+ elif thing == 'link':
+ # TODO: Make some relative symlinks
+ if random.randint(1, 3) == 1 or len(things) == 0:
+ os.symlink("/broken", target)
+ else:
+ os.symlink(random.choice(things), target)
+ things.append(os.path.join(location, thingname))
+ print("Generated {}/{} ".format(rootdir, things[-1]))
+
+
def file_contents(path):
with open(path, "r") as f:
result = f.read()
@@ -64,6 +93,7 @@ def create_new_casdir(root_number, fake_context, tmpdir):
assert d.ref.hash != empty_hash_ref
return d
+
def create_new_filedir(root_number, tmpdir):
root = os.path.join(tmpdir, "vdir")
os.makedirs(root)
@@ -117,7 +147,7 @@ def test_cas_import(cli, tmpdir, original, overlay):
fake_context.artifactdir = tmpdir
# Create some fake content
generate_import_roots(tmpdir)
-
+ generate_random_root(tmpdir)
d = create_new_casdir(original, fake_context, tmpdir)
d2 = create_new_casdir(overlay, fake_context, tmpdir)
d.import_files(d2)
@@ -145,12 +175,13 @@ def test_cas_import(cli, tmpdir, original, overlay):
assert os.path.isdir(realpath)
-@pytest.mark.parametrize("root", [1, 2, 3, 4, 5])
+@pytest.mark.parametrize("root", [1, 2, 3, 4, 5, 6])
def test_directory_listing(cli, tmpdir, root):
fake_context = FakeContext()
fake_context.artifactdir = tmpdir
# Create some fake content
generate_import_roots(tmpdir)
+ generate_random_root(tmpdir)
d = create_new_filedir(root, tmpdir)
filelist = list(d.list_relative_paths())
@@ -162,4 +193,4 @@ def test_directory_listing(cli, tmpdir, root):
print("{}".format(filelist))
print("filelist for root {} via CasBasedDirectory:".format(root))
print("{}".format(filelist2))
- assert(filelist==filelist2)
+ assert filelist == filelist2