summaryrefslogtreecommitdiff
path: root/subplot/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'subplot/server.py')
-rw-r--r--subplot/server.py69
1 files changed, 53 insertions, 16 deletions
diff --git a/subplot/server.py b/subplot/server.py
index 289e181..a604733 100644
--- a/subplot/server.py
+++ b/subplot/server.py
@@ -5,8 +5,6 @@ import random
import re
import requests
import shutil
-import socket
-import time
import urllib3
import yaml
@@ -14,7 +12,7 @@ import yaml
urllib3.disable_warnings()
-def start_chunk_server(ctx):
+def start_chunk_server(ctx, env=None):
daemon_start_on_port = globals()["daemon_start_on_port"]
srcdir = globals()["srcdir"]
@@ -35,7 +33,7 @@ def start_chunk_server(ctx):
"address": f"localhost:{port}",
}
- server_binary = os.path.abspath(os.path.join(srcdir, "target", "debug", "obnam-server"))
+ server_binary = ctx["server-binary"]
filename = "config.yaml"
yaml.safe_dump(config, stream=open(filename, "w"))
@@ -44,22 +42,18 @@ def start_chunk_server(ctx):
ctx["server_url"] = f"https://{config['address']}"
daemon_start_on_port(
- ctx,
- name="obnam-server",
- path=server_binary,
- args=filename,
- port=port,
+ ctx, name="obnam-server", path=server_binary, args=filename, port=port, env=env
)
-def stop_chunk_server(ctx):
+def stop_chunk_server(ctx, env=None):
logging.debug("Stopping obnam-server")
daemon_stop = globals()["daemon_stop"]
daemon_stop(ctx, name="obnam-server")
def post_file(ctx, filename=None, path=None, header=None, json=None):
- url = f"{ctx['server_url']}/chunks"
+ url = f"{ctx['server_url']}/v1/chunks"
headers = {header: json}
data = open(filename, "rb").read()
_request(ctx, requests.post, url, headers=headers, data=data)
@@ -71,12 +65,12 @@ def get_chunk_via_var(ctx, var=None):
def get_chunk_by_id(ctx, chunk_id=None):
- url = f"{ctx['server_url']}/chunks/{chunk_id}"
+ url = f"{ctx['server_url']}/v1/chunks/{chunk_id}"
_request(ctx, requests.get, url)
-def find_chunks_with_sha(ctx, sha=None):
- url = f"{ctx['server_url']}/chunks?sha256={sha}"
+def find_chunks_with_label(ctx, sha=None):
+ url = f"{ctx['server_url']}/v1/chunks?label={sha}"
_request(ctx, requests.get, url)
@@ -86,14 +80,16 @@ def delete_chunk_via_var(ctx, var=None):
def delete_chunk_by_id(ctx, chunk_id=None):
- url = f"{ctx['server_url']}/chunks/{chunk_id}"
+ url = f"{ctx['server_url']}/v1/chunks/{chunk_id}"
_request(ctx, requests.delete, url)
def make_chunk_file_be_empty(ctx, chunk_id=None):
chunk_id = ctx["vars"][chunk_id]
chunks = ctx["config"]["chunks"]
- for (dirname, _, _) in os.walk(chunks):
+ logging.debug(f"trying to empty chunk {chunk_id}")
+ for (dirname, _, filenames) in os.walk(chunks):
+ logging.debug(f"found directory {dirname}, with {filenames}")
filename = os.path.join(dirname, chunk_id + ".data")
if os.path.exists(filename):
logging.debug(f"emptying chunk file {filename}")
@@ -138,6 +134,33 @@ def json_body_matches(ctx, wanted=None):
assert_eq(body.get(key, "not.there"), wanted[key])
+def server_has_n_chunks(ctx, n=None):
+ assert_eq = globals()["assert_eq"]
+ n = int(n)
+ files = find_files(ctx["config"]["chunks"])
+ files = [x for x in files if x.endswith(".data")]
+ logging.debug(f"server_has_n_file_chunks: n={n}")
+ logging.debug(f"server_has_n_file_chunks: len(files)={len(files)}")
+ logging.debug(f"server_has_n_file_chunks: files={files}")
+ assert_eq(n, len(files))
+
+
+def server_stderr_contains(ctx, wanted=None):
+ assert_eq = globals()["assert_eq"]
+ assert_eq(_server_stderr_contains(ctx, wanted), True)
+
+
+def server_stderr_doesnt_contain(ctx, wanted=None):
+ assert_eq = globals()["assert_eq"]
+ assert_eq(_server_stderr_contains(ctx, wanted), False)
+
+
+def find_files(root):
+ for dirname, _, names in os.walk(root):
+ for name in names:
+ yield os.path.join(dirname, name)
+
+
# Make an HTTP request.
def _request(ctx, method, url, headers=None, data=None):
r = method(url, headers=headers, data=data, verify=False)
@@ -177,3 +200,17 @@ def _expand_vars(ctx, s):
result.append(value)
s = s[m.end() :]
return "".join(result)
+
+
+def _server_stderr_contains(ctx, wanted):
+ daemon_get_stderr = globals()["daemon_get_stderr"]
+
+ wanted = _expand_vars(ctx, wanted)
+
+ stderr = daemon_get_stderr(ctx, "obnam-server")
+
+ logging.debug(f"_server_stderr_contains:")
+ logging.debug(f" wanted: {wanted}")
+ logging.debug(f" stderr: {stderr}")
+
+ return wanted in stderr