summaryrefslogtreecommitdiff
path: root/tests/internals/cascache.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/internals/cascache.py')
-rw-r--r--tests/internals/cascache.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/internals/cascache.py b/tests/internals/cascache.py
new file mode 100644
index 000000000..8eb5cc29f
--- /dev/null
+++ b/tests/internals/cascache.py
@@ -0,0 +1,63 @@
+import os
+import time
+from unittest.mock import MagicMock
+
+from buildstream._cas.cascache import CASCache
+from buildstream._message import MessageType
+from buildstream._messenger import Messenger
+
+
+def test_report_when_cascache_dies_before_asked_to(tmp_path, monkeypatch):
+ dummy_buildbox_casd = tmp_path.joinpath("buildbox-casd")
+ dummy_buildbox_casd.write_text("#!/bin/bash\nexit 0")
+ dummy_buildbox_casd.chmod(0o777)
+ monkeypatch.setenv("PATH", str(tmp_path), prepend=os.pathsep)
+
+ messenger = MagicMock(spec_set=Messenger)
+ cache = CASCache(str(tmp_path.joinpath("casd")), casd=True)
+ time.sleep(1)
+ cache.release_resources(messenger)
+
+ assert messenger.message.call_count == 1
+
+ message = messenger.message.call_args[0][0]
+ assert message.message_type == MessageType.BUG
+ assert "0" in message.message
+ assert "died" in message.message
+
+
+def test_report_when_cascache_exist_not_cleanly(tmp_path, monkeypatch):
+ dummy_buildbox_casd = tmp_path.joinpath("buildbox-casd")
+ dummy_buildbox_casd.write_text("#!/bin/bash\nwhile :\ndo\nsleep 60\ndone")
+ dummy_buildbox_casd.chmod(0o777)
+ monkeypatch.setenv("PATH", str(tmp_path), prepend=os.pathsep)
+
+ messenger = MagicMock(spec_set=Messenger)
+ cache = CASCache(str(tmp_path.joinpath("casd")), casd=True)
+ time.sleep(1)
+ cache.release_resources(messenger)
+
+ assert messenger.message.call_count == 1
+
+ message = messenger.message.call_args[0][0]
+ assert message.message_type == MessageType.BUG
+ assert "-15" in message.message
+ assert "cleanly" in message.message
+
+
+def test_report_when_cascache_is_forcefully_killed(tmp_path, monkeypatch):
+ dummy_buildbox_casd = tmp_path.joinpath("buildbox-casd")
+ dummy_buildbox_casd.write_text("#!/bin/bash\ntrap 'echo hello' SIGTERM\nwhile :\ndo\nsleep 60\ndone")
+ dummy_buildbox_casd.chmod(0o777)
+ monkeypatch.setenv("PATH", str(tmp_path), prepend=os.pathsep)
+
+ messenger = MagicMock(spec_set=Messenger)
+ cache = CASCache(str(tmp_path.joinpath("casd")), casd=True)
+ time.sleep(1)
+ cache.release_resources(messenger)
+
+ assert messenger.message.call_count == 1
+
+ message = messenger.message.call_args[0][0]
+ assert message.message_type == MessageType.WARN
+ assert "killed" in message.message