This is an automated email from the ASF dual-hosted git repository.

juergbi pushed a commit to branch juerg/remote-cache-ci
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit f92ddcceb08fde2aa1ae691249b683bf5cba9d54
Author: Jürg Billeter <[email protected]>
AuthorDate: Thu May 20 10:06:18 2021 +0200

    tests/remoteexecution/remotecache.py: Add test for remote-cache
    
    This tests `remote-cache` with remote execution. It verifies that build
    outputs are not downloaded if not necessary.
---
 tests/remoteexecution/remotecache.py | 58 ++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/tests/remoteexecution/remotecache.py 
b/tests/remoteexecution/remotecache.py
new file mode 100644
index 0000000..02759c2
--- /dev/null
+++ b/tests/remoteexecution/remotecache.py
@@ -0,0 +1,58 @@
+# Pylint doesn't play well with fixtures and dependency injection from pytest
+# pylint: disable=redefined-outer-name
+
+import os
+import pytest
+
+from buildstream.testing import cli_remote_execution as cli  # pylint: 
disable=unused-import
+from buildstream.testing.integration import assert_contains
+
+
+pytestmark = pytest.mark.remoteexecution
+
+
+DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "project")
+
+
+# Test building an executable with remote-execution and remote-cache enabled
[email protected](DATA_DIR)
+def test_remote_autotools_build(cli, datafiles, remote_services):
+    project = str(datafiles)
+    checkout = os.path.join(cli.directory, "checkout")
+    element_name = "autotools/amhello.bst"
+
+    services = cli.ensure_services()
+    assert set(services) == set(["action-cache", "execution", "storage"])
+
+    # Enable remote cache and remove explicit remote execution CAS 
configuration.
+    cli.configure({"cache": {"remote-cache": {"url": 
remote_services.storage_service}}})
+    del cli.config["remote-execution"]["storage-service"]
+
+    # Build element with remote execution.
+    result = cli.run(project=project, args=["build", element_name])
+    result.assert_success()
+
+    # Attempt checkout from local cache by temporarily disabling remote cache.
+    # This should fail as the build result shouldn't have been downloaded to 
the local cache.
+    del cli.config["cache"]["remote-cache"]
+    result = cli.run(project=project, args=["artifact", "checkout", 
element_name, "--directory", checkout])
+    result.assert_main_error(ErrorDomain.STREAM, "uncached-checkout-attempt")
+
+    # Re-enable remote cache and attempt checkout again.
+    cli.configure({"cache": {"remote-cache": {"url": 
remote_services.storage_service}}})
+    result = cli.run(project=project, args=["artifact", "checkout", 
element_name, "--directory", checkout])
+    result.assert_success()
+
+    assert_contains(
+        checkout,
+        [
+            "/usr",
+            "/usr/lib",
+            "/usr/bin",
+            "/usr/share",
+            "/usr/bin/hello",
+            "/usr/share/doc",
+            "/usr/share/doc/amhello",
+            "/usr/share/doc/amhello/README",
+        ],
+    )

Reply via email to