Skip to content
Snippets Groups Projects
Commit 50cab443 authored by Martin Blanchard's avatar Martin Blanchard
Browse files

tests/utils/cas.py: Extend CAS server helper

#79
parent 46b87d1a
No related branches found
No related tags found
No related merge requests found
...@@ -30,6 +30,7 @@ from buildgrid.server.cas.service import ContentAddressableStorageService ...@@ -30,6 +30,7 @@ from buildgrid.server.cas.service import ContentAddressableStorageService
from buildgrid.server.cas.instance import ByteStreamInstance from buildgrid.server.cas.instance import ByteStreamInstance
from buildgrid.server.cas.instance import ContentAddressableStorageInstance from buildgrid.server.cas.instance import ContentAddressableStorageInstance
from buildgrid.server.cas.storage.disk import DiskStorage from buildgrid.server.cas.storage.disk import DiskStorage
from buildgrid.utils import create_digest, merkle_tree_maker
@contextmanager @contextmanager
...@@ -124,6 +125,15 @@ class Server: ...@@ -124,6 +125,15 @@ class Server:
def get(self, digest): def get(self, digest):
return self.__storage.get_blob(digest).read() return self.__storage.get_blob(digest).read()
def store_blob(self, blob):
digest = create_digest(blob)
write_buffer = self.__storage.begin_write(digest)
write_buffer.write(blob)
self.__storage.commit_write(digest, write_buffer)
return digest
def compare_blobs(self, digest, blob): def compare_blobs(self, digest, blob):
if not self.__storage.has_blob(digest): if not self.__storage.has_blob(digest):
return False return False
...@@ -133,6 +143,16 @@ class Server: ...@@ -133,6 +143,16 @@ class Server:
return blob == stored_blob return blob == stored_blob
def store_message(self, message):
message_blob = message.SerializeToString()
message_digest = create_digest(message_blob)
write_buffer = self.__storage.begin_write(message_digest)
write_buffer.write(message_blob)
self.__storage.commit_write(message_digest, write_buffer)
return message_digest
def compare_messages(self, digest, message): def compare_messages(self, digest, message):
if not self.__storage.has_blob(digest): if not self.__storage.has_blob(digest):
return False return False
...@@ -144,6 +164,17 @@ class Server: ...@@ -144,6 +164,17 @@ class Server:
return message_blob == stored_blob return message_blob == stored_blob
def store_file(self, file_path):
with open(file_path, 'rb') as file_bytes:
file_blob = file_bytes.read()
file_digest = create_digest(file_blob)
write_buffer = self.__storage.begin_write(file_digest)
write_buffer.write(file_blob)
self.__storage.commit_write(file_digest, write_buffer)
return file_digest
def compare_files(self, digest, file_path): def compare_files(self, digest, file_path):
if not self.__storage.has_blob(digest): if not self.__storage.has_blob(digest):
return False return False
...@@ -156,6 +187,17 @@ class Server: ...@@ -156,6 +187,17 @@ class Server:
return file_blob == stored_blob return file_blob == stored_blob
def store_folder(self, folder_path):
last_digest = None
for node, blob, _ in merkle_tree_maker(folder_path):
write_buffer = self.__storage.begin_write(node.digest)
write_buffer.write(blob)
self.__storage.commit_write(node.digest, write_buffer)
last_digest = node.digest
return last_digest
def compare_directories(self, digest, directory_path): def compare_directories(self, digest, directory_path):
if not self.__storage.has_blob(digest): if not self.__storage.has_blob(digest):
return False return False
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment