summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-08-02 07:13:42 +0000
committerLars Wirzenius <liw@liw.fi>2021-08-02 07:13:42 +0000
commitaa7812a971f35fcb217a3e115f06a51f3706f5ca (patch)
tree4e67ca7a802fe50477f4039a27214401af68bafe
parent8c2f79fa3cecadd8e7d7f74df6938b25c81c5e9e (diff)
parent9f8e448153b9b35a36063c5a2a659c139ff0e31d (diff)
downloadobnam2-aa7812a971f35fcb217a3e115f06a51f3706f5ca.tar.gz
Merge branch 'feature/117-obnam_server_log' into 'main'
feat: configure log verbosity with OBNAM_SERVER_LOG envvar Closes #117 See merge request obnam/obnam!170
-rw-r--r--obnam.md25
-rw-r--r--src/bin/obnam-server.rs2
-rw-r--r--subplot/server.py30
-rw-r--r--subplot/server.yaml10
4 files changed, 63 insertions, 4 deletions
diff --git a/obnam.md b/obnam.md
index 5386dea..1a24d7a 100644
--- a/obnam.md
+++ b/obnam.md
@@ -1124,6 +1124,31 @@ and chunk-meta is {"sha256":"abc","generation":null,"ended":null}
and the body matches file data.dat
~~~
+
+## Obeys `OBNAM_SERVER_LOG` environment variable
+
+The chunk server logs its actions to stderr. Verbosity of the log depends on the
+`OBNAM_SERVER_LOG` envvar. This scenario verifies that the variable can make the
+server more chatty.
+
+~~~scenario
+given an installed obnam
+and a running chunk server
+and a file data1.dat containing some random data
+when I POST data1.dat to /chunks, with chunk-meta: {"sha256":"qwerty"}
+then the JSON body has a field chunk_id, henceforth ID
+and chunk server's stderr doesn't contain "Obnam server starting up"
+and chunk server's stderr doesn't contain "created chunk <ID>"
+
+given a running chunk server with environment {"OBNAM_SERVER_LOG": "info"}
+and a file data2.dat containing some random data
+when I POST data2.dat to /chunks, with chunk-meta: {"sha256":"xyz"}
+then the JSON body has a field chunk_id, henceforth ID
+and chunk server's stderr contains "Obnam server starting up"
+and chunk server's stderr contains "created chunk <ID>"
+~~~
+
+
# Acceptance criteria for the Obnam client
The scenarios in chapter verify that the Obnam client works as it
diff --git a/src/bin/obnam-server.rs b/src/bin/obnam-server.rs
index 1a469e6..f06b7b5 100644
--- a/src/bin/obnam-server.rs
+++ b/src/bin/obnam-server.rs
@@ -26,7 +26,7 @@ struct Opt {
#[tokio::main]
async fn main() -> anyhow::Result<()> {
- pretty_env_logger::init();
+ pretty_env_logger::init_custom_env("OBNAM_SERVER_LOG");
let opt = Opt::from_args();
let config = load_config(&opt.config)?;
diff --git a/subplot/server.py b/subplot/server.py
index cfe91ab..52ad8f4 100644
--- a/subplot/server.py
+++ b/subplot/server.py
@@ -12,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"]
@@ -44,11 +44,12 @@ 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")
@@ -145,6 +146,16 @@ def server_has_n_chunks(ctx, n=None):
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:
@@ -190,3 +201,16 @@ 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
diff --git a/subplot/server.yaml b/subplot/server.yaml
index 5b8a242..fad749a 100644
--- a/subplot/server.yaml
+++ b/subplot/server.yaml
@@ -2,6 +2,10 @@
function: start_chunk_server
cleanup: stop_chunk_server
+- given: "a running chunk server with environment {env:text}"
+ function: start_chunk_server
+ cleanup: stop_chunk_server
+
- when: "the chunk server is stopped"
function: stop_chunk_server
@@ -46,3 +50,9 @@
- then: "server has {n:int} chunks"
function: server_has_n_chunks
+
+- then: chunk server's stderr contains "{wanted:text}"
+ function: server_stderr_contains
+
+- then: chunk server's stderr doesn't contain "{wanted:text}"
+ function: server_stderr_doesnt_contain