rad:zwTxygwuz5LDGBq255RA2CbNGrz8
radicle-ci-brokerc7b0b393679bfa249f22013232b0549b1deb36d3
{ "request": "trigger", "version": 1, "event_type": "push", "repository": { "id": "rad:zwTxygwuz5LDGBq255RA2CbNGrz8", "name": "radicle-ci-broker", "description": "Radicle CI broker", "private": false, "default_branch": "main", "delegates": [ "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV", "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT" ] }, "pusher": { "id": "did:key:z6Mkjb5wVmmDsonp4uPMmhgfPrkG3a487BhibcrN1F2VjdH5", "alias": "seed.robossembler.org" }, "before": "c7b0b393679bfa249f22013232b0549b1deb36d3", "after": "c7b0b393679bfa249f22013232b0549b1deb36d3", "branch": "main", "commits": [ "c7b0b393679bfa249f22013232b0549b1deb36d3" ] }
.radicle/native.yaml
shell: | cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- -Dwarnings cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast subplot docgen ci-broker.subplot -o doc/ci-broker.html make -C doc publish
git clone /home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8 /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
git config advice.detachedHead false
git checkout c7b0b393679bfa249f22013232b0549b1deb36d3
git show c7b0b393679bfa249f22013232b0549b1deb36d3
timeout 600 bash -c set -xeuo pipefail
cargo --version
rustc --version
cargo fmt --check
cargo clippy --all-targets --workspace -- -Dwarnings
cargo build --all-targets --workspace
cargo doc --workspace
cargo test --workspace --no-fail-fast
subplot docgen ci-broker.subplot -o doc/ci-broker.html
make -C doc publish
git clone /home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8 /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
Command arguments:
"git"
"clone"
"/home/_rad/.radicle/storage/zwTxygwuz5LDGBq255RA2CbNGrz8"
"/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src"
In directory: /
Exit code: 0
Output (stdout and stderr):
Cloning into '/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src'... done.
git config advice.detachedHead false
Command arguments:
"git"
"config"
"advice.detachedHead"
"false"
In directory: /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
Exit code: 0
git checkout c7b0b393679bfa249f22013232b0549b1deb36d3
Command arguments:
"git"
"checkout"
"c7b0b393679bfa249f22013232b0549b1deb36d3"
In directory: /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
Exit code: 0
Output (stdout and stderr):
HEAD is now at c7b0b39 feat: add cibtool subcommand to use filters on recorded events
git show c7b0b393679bfa249f22013232b0549b1deb36d3
Command arguments:
"git"
"show"
"c7b0b393679bfa249f22013232b0549b1deb36d3"
In directory: /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
Exit code: 0
Output (stdout and stderr):
commit c7b0b393679bfa249f22013232b0549b1deb36d3 Author: Lars Wirzenius <liw@liw.fi> Date: Wed Sep 11 12:17:59 2024 +0300 feat: add cibtool subcommand to use filters on recorded events Signed-off-by: Lars Wirzenius <liw@liw.fi> diff --git a/ci-broker.md b/ci-broker.md index aefb876..443ca22 100644 --- a/ci-broker.md +++ b/ci-broker.md @@ -1179,6 +1179,51 @@ when I run bash radenv.sh cibtool event broker --output broker-events.json node- then file broker-events.json contains "RefChanged"" ~~~ + +## Filter recorded broker events + +_What:_ Node operator can see what broker events an event filter +allow. + +_Why:_ This is helpful so that node operators can see verify their +event filter works as they expect. + +_Who:_ `cib-dev`, `node-ops` + +~~~scenario +given file radenv.sh +given file setup-node.sh +when I run bash radenv.sh bash setup-node.sh + +given an installed synthetic-events +given file refsfetched.json +given file set-rid +when I run bash radenv.sh env HOME=../homedir python3 set-rid refsfetched.json testy +when I run synthetic-events synt.sock refsfetched.json --log log.txt + +given an installed cibtool +when I run bash radenv.sh cibtool event record --output node-events.json +when I run bash radenv.sh cibtool event broker --output broker-events.json node-events.json + +given file allow.yaml +when I run cibtool event filter allow.yaml broker-events.json +then stdout contains "RefChanged" + +given file deny.yaml +when I run cibtool event filter deny.yaml broker-events.json +then stdout is exactly "" +~~~ + +~~~{#allow.yaml .file .yaml} +filters: +- !Branch "main" +~~~ + +~~~{#deny.yaml .file .yaml} +filters: +- !Branch "this-does-not-exist" +~~~ + # Acceptance criteria for logging The CI broker writes log messages to its standard error output diff --git a/src/bin/cibtool.rs b/src/bin/cibtool.rs index c036e55..899e9d7 100644 --- a/src/bin/cibtool.rs +++ b/src/bin/cibtool.rs @@ -30,7 +30,7 @@ use radicle_git_ext::Oid; use radicle_ci_broker::{ broker::BrokerError, db::{Db, DbError, QueueId, QueuedEvent}, - event::BrokerEvent, + event::{BrokerEvent, NodeEventError}, logger, msg::{RunId, RunResult}, notif::NotificationChannel, @@ -183,6 +183,7 @@ impl Subcommand for EventCmd { EventSubCmd::Remove(x) => x.run(args)?, EventSubCmd::Record(x) => x.run(args)?, EventSubCmd::Broker(x) => x.run(args)?, + EventSubCmd::Filter(x) => x.run(args)?, } Ok(()) } @@ -200,6 +201,7 @@ enum EventSubCmd { Remove(cibtoolcmd::RemoveEvent), Record(cibtoolcmd::RecordEvents), Broker(cibtoolcmd::BrokerEvents), + Filter(cibtoolcmd::FilterEvents), } #[derive(Parser)] @@ -326,12 +328,24 @@ enum CibToolError { #[error("failed to read node events from file {0}")] ReadEvents(PathBuf, #[source] std::io::Error), + #[error("failed to read broker events from file {0}")] + ReadBrokerEvents(PathBuf, #[source] std::io::Error), + #[error("failed to read node events as UTF8 from file {0}")] NodeEventNotUtf8(PathBuf, #[source] std::string::FromUtf8Error), + #[error("failed to read broker events as UTF8 from file {0}")] + BrokerEventNotUtf8(PathBuf, #[source] std::string::FromUtf8Error), + #[error("failed to read node events as JSON from file {0}")] JsonToNodeEvent(PathBuf, #[source] serde_json::Error), #[error("failed to create file for broker events: {0}")] CreateBrokerEventsFile(PathBuf, #[source] std::io::Error), + + #[error("failed to read filters from YAML file {0}")] + ReadFilters(PathBuf, #[source] radicle_ci_broker::event::NodeEventError), + + #[error("failed to check if event is allowed: {0:#?}")] + EventIsAllowed(BrokerEvent, #[source] NodeEventError), } diff --git a/src/bin/cibtoolcmd/event.rs b/src/bin/cibtoolcmd/event.rs index 55ee98f..cc94b2e 100644 --- a/src/bin/cibtoolcmd/event.rs +++ b/src/bin/cibtoolcmd/event.rs @@ -1,6 +1,6 @@ use std::io::Write; -use radicle_ci_broker::event::NodeEventSource; +use radicle_ci_broker::event::{EventFilter, NodeEventSource}; use super::*; @@ -410,3 +410,50 @@ impl Leaf for BrokerEvents { Ok(()) } } + +/// Filter broker events recorded in a file. +/// +/// Those broker events allowed by the filter are written to the +/// standard output, as one JSON object per line. +#[derive(Parser)] +pub struct FilterEvents { + /// Read event filter from this YAML file. + filters: PathBuf, + + /// Read broker events from this file. + input: PathBuf, +} + +impl Leaf for FilterEvents { + fn run(&self, _args: &Args) -> Result<(), CibToolError> { + let filters = EventFilter::from_yaml_file(&self.filters) + .map_err(|e| CibToolError::ReadFilters(self.filters.clone(), e))?; + + let bytes = std::fs::read(&self.input) + .map_err(|e| CibToolError::ReadBrokerEvents(self.input.clone(), e))?; + let text = String::from_utf8(bytes) + .map_err(|e| CibToolError::BrokerEventNotUtf8(self.input.clone(), e))?; + + let mut broker_events = vec![]; + for line in text.lines() { + let event: BrokerEvent = serde_json::from_str(line) + .map_err(|e| CibToolError::JsonToNodeEvent(self.input.clone(), e))?; + broker_events.push(event); + } + + for event in broker_events.iter() { + for filter in filters.iter() { + if event + .is_allowed(filter) + .map_err(|e| CibToolError::EventIsAllowed(event.clone(), e))? + { + let json = serde_json::to_string_pretty(event) + .map_err(|e| CibToolError::EventToJson(event.clone(), e))?; + println!("{json}"); + } + } + } + + Ok(()) + } +} diff --git a/src/event.rs b/src/event.rs index 2152b3c..431a552 100644 --- a/src/event.rs +++ b/src/event.rs @@ -191,6 +191,10 @@ pub enum NodeEventError { #[error("failed to parser filters file: {0}")] FiltersJsonFile(PathBuf, #[source] serde_json::Error), + /// An error parsing YAML as filters, when read from a file. + #[error("failed to parser filters file: {0}")] + FiltersYamlFile(PathBuf, #[source] serde_yml::Error), + /// An error parsing JSON as filters, from an in-memory string. #[error("failed to parser filters as JSON")] FiltersJsonString(#[source] serde_json::Error), @@ -280,6 +284,15 @@ impl EventFilter { .map_err(|e| NodeEventError::FiltersJsonFile(filename.into(), e))?; Ok(filters.filters) } + + /// Read filters from a YAML file. + pub fn from_yaml_file(filename: &Path) -> Result<Vec<Self>, NodeEventError> { + let filters = + read(filename).map_err(|e| NodeEventError::ReadFilterFile(filename.into(), e))?; + let filters: Filters = serde_yml::from_slice(&filters) + .map_err(|e| NodeEventError::FiltersYamlFile(filename.into(), e))?; + Ok(filters.filters) + } } /// A set of filters for [`NodeEventSource`] to use. This struct @@ -371,7 +384,7 @@ impl BrokerEvent { } /// Is this broker event allowed by a filter? - fn is_allowed(&self, filter: &EventFilter) -> Result<bool, NodeEventError> { + pub fn is_allowed(&self, filter: &EventFilter) -> Result<bool, NodeEventError> { let res = self.is_allowed_helper(filter)?; Ok(res) }
timeout 600 bash -c set -xeuo pipefail
cargo --version
rustc --version
cargo fmt --check
cargo clippy --all-targets --workspace -- -Dwarnings
cargo build --all-targets --workspace
cargo doc --workspace
cargo test --workspace --no-fail-fast
subplot docgen ci-broker.subplot -o doc/ci-broker.html
make -C doc publish
Command arguments:
"timeout"
"600"
"bash"
"-c"
"set -xeuo pipefail\ncargo --version\nrustc --version\n\ncargo fmt --check\ncargo clippy --all-targets --workspace -- -Dwarnings\ncargo build --all-targets --workspace\ncargo doc --workspace\ncargo test --workspace --no-fail-fast\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nmake -C doc publish\n"
In directory: /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src
Exit code: 101
Output (stdout and stderr):
+ cargo --version cargo 1.80.1 (376290515 2024-07-16) + rustc --version rustc 1.80.1 (3f5fd8dd4 2024-08-06) + cargo fmt --check + cargo clippy --all-targets --workspace -- -Dwarnings Compiling proc-macro2 v1.0.86 Compiling unicode-ident v1.0.12 Compiling version_check v0.9.5 Compiling libc v0.2.158 Compiling typenum v1.17.0 Checking cfg-if v1.0.0 Compiling serde v1.0.209 Compiling shlex v1.3.0 Compiling thiserror v1.0.63 Compiling memchr v2.7.4 Compiling once_cell v1.19.0 Compiling byteorder v1.5.0 Compiling syn v1.0.109 Compiling bitflags v2.6.0 Checking subtle v2.6.1 Compiling crossbeam-utils v0.8.20 Compiling pkg-config v0.3.30 Compiling rustix v0.38.35 Compiling linux-raw-sys v0.4.14 Compiling anyhow v1.0.86 Compiling itoa v1.0.11 Compiling generic-array v0.14.7 Compiling ahash v0.8.11 Compiling log v0.4.22 Compiling regex-syntax v0.8.4 Checking cpufeatures v0.2.13 Compiling num-conv v0.1.0 Compiling time-core v0.1.2 Compiling same-file v1.0.6 Compiling utf8parse v0.2.2 Compiling allocator-api2 v0.2.18 Compiling time-macros v0.2.18 Compiling aho-corasick v1.1.3 Compiling anstyle-parse v0.2.5 Compiling walkdir v2.5.0 Compiling anstyle-query v1.1.1 Compiling anstyle v1.0.8 Compiling colorchoice v1.0.2 Compiling is_terminal_polyfill v1.70.1 Compiling ucd-trie v0.1.6 Compiling bstr v1.10.0 Compiling quote v1.0.37 Compiling anstream v0.6.15 Compiling powerfmt v0.2.0 Compiling libm v0.2.8 Compiling doc-comment v0.3.3 Compiling syn v2.0.77 Compiling jobserver v0.1.32 Compiling getrandom v0.2.15 Compiling crossbeam-epoch v0.9.18 Compiling unic-common v0.9.0 Compiling vcpkg v0.2.15 Compiling unicode-width v0.1.13 Compiling cc v1.1.15 Compiling rand_core v0.6.4 Compiling unic-char-range v0.9.0 Compiling heck v0.5.0 Compiling unic-char-property v0.9.0 Compiling crossbeam-deque v0.8.5 Compiling unic-ucd-version v0.9.0 Compiling deranged v0.3.11 Compiling proc-macro-error-attr v1.0.4 Compiling unicase v2.7.0 Compiling encoding_rs v0.8.34 Compiling clap_lex v0.7.2 Compiling strsim v0.11.1 Compiling serde_json v1.0.127 Compiling arraydeque v0.5.1 Checking tinyvec_macros v0.1.1 Compiling fastrand v2.1.1 Checking tinyvec v1.8.0 Checking crypto-common v0.1.6 Checking block-buffer v0.10.4 Checking block-padding v0.3.3 Compiling clap_builder v4.5.15 Checking universal-hash v0.5.1 Checking digest v0.10.7 Checking inout v0.1.3 Compiling unic-ucd-segment v0.9.0 Checking cipher v0.4.4 Compiling proc-macro-error v1.0.4 Checking opaque-debug v0.3.1 Compiling deunicode v1.6.0 Compiling regex-automata v0.4.7 Compiling tempfile v3.12.0 Compiling time v0.3.36 Checking signature v1.6.4 Compiling smawk v0.3.2 Compiling amplify_syn v2.0.1 Compiling unicode-linebreak v0.1.5 Compiling pulldown-cmark v0.12.0 Compiling ryu v1.0.18 Compiling textwrap v0.16.1 Checking unicode-normalization v0.1.23 Compiling humansize v2.1.3 Checking ed25519 v1.5.3 Compiling slug v0.1.6 Compiling unic-segment v0.9.0 Compiling getopts v0.2.21 Compiling libz-sys v1.1.20 Compiling pikchr v0.1.3 Compiling libgit2-sys v0.17.0+1.8.1 Compiling subplot v0.11.0 Compiling percent-encoding v2.3.1 Compiling humantime v2.1.0 Checking amplify_num v0.5.3 Compiling lazy_static v1.5.0 Compiling utf8-width v0.1.7 Checking unicode-bidi v0.3.15 Compiling pulldown-cmark-escape v0.11.0 Checking ascii v1.1.0 Checking ct-codecs v1.1.2 Checking form_urlencoded v1.2.1 Compiling html-escape v0.2.13 Checking ec25519 v0.1.0 Compiling sqlite3-src v0.5.1 Checking polyval v0.6.2 Compiling amplify_derive v4.0.1 Checking idna v0.5.0 Checking sha2 v0.10.8 Compiling tracing-core v0.1.32 Compiling base64 v0.22.1 Checking base64ct v1.6.0 Checking keccak v0.1.5 Compiling file_diff v1.0.0 Compiling pin-project-lite v0.2.14 Compiling line-col v0.2.1 Checking sha3 v0.10.8 Checking pem-rfc7468 v0.7.0 Checking ghash v0.5.1 Checking aes v0.8.4 Checking ctr v0.9.2 Checking aead v0.5.2 Checking hashbrown v0.14.5 Checking equivalent v1.0.1 Compiling globset v0.4.14 Compiling regex v1.10.6 Compiling cfg_aliases v0.2.1 Checking base32 v0.4.0 Compiling data-encoding v2.6.0 Compiling nix v0.29.0 Checking ssh-encoding v0.2.0 Checking blowfish v0.9.1 Checking aes-gcm v0.10.3 Compiling ignore v0.4.22 Compiling env_filter v0.1.2 Checking cbc v0.1.2 Checking chacha20 v0.9.1 Checking indexmap v2.5.0 Checking poly1305 v0.8.0 Compiling env_logger v0.11.5 Checking pbkdf2 v0.12.2 Compiling adler2 v2.0.0 Checking radicle-std-ext v0.1.0 Checking zeroize v1.8.1 Compiling miniz_oxide v0.8.0 Checking ssh-cipher v0.2.0 Compiling globwalk v0.9.1 Checking bcrypt-pbkdf v0.10.0 Checking rand v0.8.5 Compiling xattr v1.3.1 Compiling data-encoding-macro-internal v0.1.13 Compiling filetime v0.2.25 Compiling crc32fast v1.4.2 Checking base-x v0.2.11 Compiling slog v2.7.0 Checking signature v2.2.0 Compiling tar v0.4.41 Checking ssh-key v0.6.6 Compiling flate2 v1.0.33 Checking qcheck v1.0.0 Checking cvt v0.1.2 Checking data-encoding-macro v0.1.15 Compiling glob v0.3.1 Checking multibase v0.9.1 Checking terminal_size v0.3.0 Checking radicle-dag v0.9.0 Compiling serde_yml v0.0.11 Checking amplify v4.7.0 Checking normpath v1.3.0 Checking fs2 v0.4.3 Checking state v0.5.3 Checking libyml v0.0.4 Compiling radicle-surf v0.22.0 Checking base64 v0.13.1 Checking shell-words v1.1.0 Checking nonempty v0.5.0 Checking cyphergraphy v0.3.0 Checking arc-swap v1.7.1 Checking crossbeam-channel v0.5.13 Checking fs_at v0.2.1 Checking base64 v0.21.7 Checking siphasher v1.0.1 Checking remove_dir_all v0.8.3 Checking cypheraddr v0.4.0 Checking unescape v0.1.0 Checking slog-scope v4.4.0 Checking uuid v1.10.0 Compiling serde_derive v1.0.209 Compiling thiserror-impl v1.0.63 Compiling zerocopy-derive v0.7.35 Compiling clap_derive v4.5.13 Compiling git-testament-derive v0.2.0 Compiling tracing-attributes v0.1.27 Checking socks5-client v0.4.1 Compiling culpa-macros v1.0.2 Checking html-page v0.4.0 Compiling ctor v0.2.8 Checking cyphernet v0.5.2 Compiling git-testament v0.2.5 Compiling zerocopy v0.7.35 Compiling culpa v1.0.2 Compiling subplotlib-derive v0.11.0 Compiling tracing v0.1.40 Compiling pest v2.7.11 Compiling git-ref-format-core v0.3.0 Checking radicle-ssh v0.9.0 Compiling ppv-lite86 v0.2.20 Compiling git-ref-format-macro v0.3.0 Compiling clap v4.5.16 Compiling rand_chacha v0.3.1 Compiling hashlink v0.8.4 Compiling hashlink v0.9.1 Compiling pest_meta v2.7.11 Compiling yaml-rust2 v0.8.1 Compiling tempfile-fast v0.3.4 Compiling pest_generator v2.7.11 Compiling pest_derive v2.7.11 Checking url v2.5.2 Checking nonempty v0.9.0 Checking localtime v1.3.1 Compiling serde_path_to_error v0.1.16 Checking git-ref-format v0.3.0 Compiling marked-yaml v0.7.1 Checking slog-json v2.6.1 Compiling roadmap v0.6.1 Compiling tera v1.20.0 Checking git2 v0.19.0 Checking radicle-git-ext v0.8.0 Compiling subplot-build v0.11.0 Compiling subplotlib v0.11.0 Compiling radicle-ci-broker v0.6.2 (/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src) Checking sqlite3-sys v0.15.2 Checking sqlite v0.32.0 Checking radicle-crypto v0.11.0 Checking radicle-cob v0.12.0 Checking radicle v0.13.0 Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.21s + cargo build --all-targets --workspace Compiling cfg-if v1.0.0 Compiling bitflags v2.6.0 Compiling memchr v2.7.4 Compiling once_cell v1.19.0 Compiling log v0.4.22 Compiling itoa v1.0.11 Compiling subtle v2.6.1 Compiling typenum v1.17.0 Compiling libc v0.2.158 Compiling regex-syntax v0.8.4 Compiling percent-encoding v2.3.1 Compiling fastrand v2.1.1 Compiling serde v1.0.209 Compiling thiserror v1.0.63 Compiling utf8parse v0.2.2 Compiling crossbeam-utils v0.8.20 Compiling is_terminal_polyfill v1.70.1 Compiling anstyle-query v1.1.1 Compiling anstyle-parse v0.2.5 Compiling rustix v0.38.35 Compiling anstyle v1.0.8 Compiling ryu v1.0.18 Compiling colorchoice v1.0.2 Compiling cpufeatures v0.2.13 Compiling ahash v0.8.11 Compiling anyhow v1.0.86 Compiling num-conv v0.1.0 Compiling time-core v0.1.2 Compiling powerfmt v0.2.0 Compiling getrandom v0.2.15 Compiling clap_lex v0.7.2 Compiling anstream v0.6.15 Compiling strsim v0.11.1 Compiling encoding_rs v0.8.34 Compiling time-macros v0.2.18 Compiling deranged v0.3.11 Compiling hashbrown v0.14.5 Compiling crossbeam-epoch v0.9.18 Compiling aho-corasick v1.1.3 Compiling pest v2.7.11 Compiling generic-array v0.14.7 Compiling bstr v1.10.0 Compiling rand_core v0.6.4 Compiling crossbeam-deque v0.8.5 Compiling tinyvec_macros v0.1.1 Compiling rand_chacha v0.3.1 Compiling tinyvec v1.8.0 Compiling clap_builder v4.5.15 Compiling hashlink v0.8.4 Compiling hashlink v0.9.1 Compiling rand v0.8.5 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling block-padding v0.3.3 Compiling digest v0.10.7 Compiling universal-hash v0.5.1 Compiling inout v0.1.3 Compiling lazy_static v1.5.0 Compiling opaque-debug v0.3.1 Compiling utf8-width v0.1.7 Compiling signature v1.6.4 Compiling subplot v0.11.0 Compiling cipher v0.4.4 Compiling yaml-rust2 v0.8.1 Compiling ed25519 v1.5.3 Compiling html-escape v0.2.13 Compiling ascii v1.1.0 Compiling linux-raw-sys v0.4.14 Compiling ct-codecs v1.1.2 Compiling tempfile v3.12.0 Compiling unicode-normalization v0.1.23 Compiling unicode-bidi v0.3.15 Compiling amplify_num v0.5.3 Compiling regex-automata v0.4.7 Compiling pest_meta v2.7.11 Compiling time v0.3.36 Compiling pulldown-cmark v0.12.0 Compiling idna v0.5.0 Compiling tempfile-fast v0.3.4 Compiling ec25519 v0.1.0 Compiling sha2 v0.10.8 Compiling polyval v0.6.2 Compiling libz-sys v1.1.20 Compiling tracing-core v0.1.32 Compiling pest_generator v2.7.11 Compiling form_urlencoded v1.2.1 Compiling serde_path_to_error v0.1.16 Compiling serde_json v1.0.127 Compiling git-ref-format-core v0.3.0 Compiling keccak v0.1.5 Compiling marked-yaml v0.7.1 Compiling clap v4.5.16 Compiling base64ct v1.6.0 Compiling byteorder v1.5.0 Compiling base64 v0.22.1 Compiling git-ref-format-macro v0.3.0 Compiling amplify v4.7.0 Compiling roadmap v0.6.1 Compiling pem-rfc7468 v0.7.0 Compiling tracing v0.1.40 Compiling git-testament-derive v0.2.0 Compiling cyphergraphy v0.3.0 Compiling sha3 v0.10.8 Compiling url v2.5.2 Compiling libgit2-sys v0.17.0+1.8.1 Compiling ghash v0.5.1 Compiling regex v1.10.6 Compiling globset v0.4.14 Compiling pest_derive v2.7.11 Compiling ctr v0.9.2 Compiling aes v0.8.4 Compiling aead v0.5.2 Compiling base32 v0.4.0 Compiling equivalent v1.0.1 Compiling git-ref-format v0.3.0 Compiling cypheraddr v0.4.0 Compiling sqlite3-src v0.5.1 Compiling ssh-encoding v0.2.0 Compiling blowfish v0.9.1 Compiling ignore v0.4.22 Compiling env_filter v0.1.2 Compiling chacha20 v0.9.1 Compiling git2 v0.19.0 Compiling env_logger v0.11.5 Compiling aes-gcm v0.10.3 Compiling cbc v0.1.2 Compiling pbkdf2 v0.12.2 Compiling poly1305 v0.8.0 Compiling data-encoding v2.6.0 Compiling radicle-std-ext v0.1.0 Compiling zeroize v1.8.1 Compiling bcrypt-pbkdf v0.10.0 Compiling git-testament v0.2.5 Compiling indexmap v2.5.0 Compiling socks5-client v0.4.1 Compiling sqlite3-sys v0.15.2 Compiling xattr v1.3.1 Compiling crc32fast v1.4.2 Compiling filetime v0.2.25 Compiling signature v2.2.0 Compiling base-x v0.2.11 Compiling sqlite v0.32.0 Compiling ssh-cipher v0.2.0 Compiling flate2 v1.0.33 Compiling globwalk v0.9.1 Compiling data-encoding-macro v0.1.15 Compiling tar v0.4.41 Compiling cyphernet v0.5.2 Compiling radicle-ssh v0.9.0 Compiling multibase v0.9.1 Compiling nix v0.29.0 Compiling tera v1.20.0 Compiling ssh-key v0.6.6 Compiling cvt v0.1.2 Compiling culpa v1.0.2 Compiling qcheck v1.0.0 Compiling slog v2.7.0 Compiling terminal_size v0.3.0 Compiling nonempty v0.9.0 Compiling radicle-dag v0.9.0 Compiling normpath v1.3.0 Compiling subplotlib-derive v0.11.0 Compiling localtime v1.3.1 Compiling fs2 v0.4.3 Compiling crossbeam-channel v0.5.13 Compiling radicle-surf v0.22.0 Compiling fs_at v0.2.1 Compiling state v0.5.3 Compiling siphasher v1.0.1 Compiling base64 v0.21.7 Compiling remove_dir_all v0.8.3 Compiling unescape v0.1.0 Compiling libyml v0.0.4 Compiling nonempty v0.5.0 Compiling shell-words v1.1.0 Compiling arc-swap v1.7.1 Compiling base64 v0.13.1 Compiling html-page v0.4.0 Compiling uuid v1.10.0 Compiling slog-scope v4.4.0 Compiling slog-json v2.6.1 Compiling serde_yml v0.0.11 Compiling radicle-git-ext v0.8.0 Compiling radicle-crypto v0.11.0 Compiling radicle-cob v0.12.0 Compiling radicle v0.13.0 Compiling subplot-build v0.11.0 Compiling subplotlib v0.11.0 Compiling radicle-ci-broker v0.6.2 (/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src) Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.68s + cargo doc --workspace Checking unicode-ident v1.0.12 Documenting unicode-ident v1.0.12 Documenting cfg-if v1.0.0 Documenting typenum v1.17.0 Documenting libc v0.2.158 Documenting subtle v2.6.1 Documenting bitflags v2.6.0 Documenting cpufeatures v0.2.13 Documenting tinyvec_macros v0.1.1 Documenting opaque-debug v0.3.1 Documenting memchr v2.7.4 Documenting ed25519 v1.5.3 Documenting linux-raw-sys v0.4.14 Documenting percent-encoding v2.3.1 Documenting unicode-bidi v0.3.15 Documenting ascii v1.1.0 Checking proc-macro2 v1.0.86 Documenting proc-macro2 v1.0.86 Documenting ct-codecs v1.1.2 Documenting log v0.4.22 Documenting amplify_num v0.5.3 Documenting tinyvec v1.8.0 Checking git-ref-format-core v0.3.0 Checking quote v1.0.37 Documenting fastrand v2.1.1 Documenting form_urlencoded v1.2.1 Documenting itoa v1.0.11 Checking syn v2.0.77 Checking syn v1.0.109 Documenting byteorder v1.5.0 Documenting base64ct v1.6.0 Documenting keccak v0.1.5 Checking data-encoding v2.6.0 Documenting base32 v0.4.0 Documenting rustix v0.38.35 Documenting quote v1.0.37 Documenting hashbrown v0.14.5 Documenting equivalent v1.0.1 Documenting unicode-normalization v0.1.23 Documenting sqlite3-src v0.5.1 Documenting data-encoding v2.6.0 Checking amplify_syn v2.0.1 Checking proc-macro-error v1.0.4 Documenting data-encoding-macro-internal v0.1.13 Documenting ryu v1.0.18 Documenting once_cell v1.19.0 Documenting pem-rfc7468 v0.7.0 Documenting zeroize v1.8.1 Documenting radicle-std-ext v0.1.0 Documenting signature v2.2.0 Documenting powerfmt v0.2.0 Documenting serde_derive v1.0.209 Documenting thiserror-impl v1.0.63 Documenting amplify_syn v2.0.1 Documenting proc-macro-error-attr v1.0.4 Documenting idna v0.5.0 Documenting data-encoding-macro v0.1.15 Documenting generic-array v0.14.7 Documenting indexmap v2.5.0 Documenting utf8parse v0.2.2 Documenting base-x v0.2.11 Documenting deranged v0.3.11 Documenting getrandom v0.2.15 Documenting libz-sys v1.1.20 Documenting sqlite3-sys v0.15.2 Documenting tempfile v3.12.0 Documenting nix v0.29.0 Documenting aho-corasick v1.1.3 Documenting anstyle-parse v0.2.5 Documenting proc-macro-error v1.0.4 Documenting multibase v0.9.1 Documenting thiserror v1.0.63 Documenting ec25519 v0.1.0 Documenting crypto-common v0.1.6 Documenting block-padding v0.3.3 Documenting block-buffer v0.10.4 Documenting amplify_derive v4.0.1 Documenting libgit2-sys v0.17.0+1.8.1 Documenting rand_core v0.6.4 Documenting sqlite v0.32.0 Documenting cvt v0.1.2 Documenting radicle-ssh v0.9.0 Documenting git-ref-format-macro v0.3.0 Documenting serde v1.0.209 Documenting time-macros v0.2.18 Documenting regex-syntax v0.8.4 Documenting inout v0.1.3 Documenting anstyle-query v1.1.1 Documenting rand v0.8.5 Documenting colorchoice v1.0.2 Documenting digest v0.10.7 Documenting universal-hash v0.5.1 Documenting aead v0.5.2 Documenting is_terminal_polyfill v1.70.1 Documenting time-core v0.1.2 Documenting anstyle v1.0.8 Documenting cipher v0.4.4 Documenting amplify v4.7.0 Documenting num-conv v0.1.0 Documenting fs_at v0.2.1 Documenting terminal_size v0.3.0 Documenting culpa-macros v1.0.2 Documenting radicle-dag v0.9.0 Compiling radicle-ci-broker v0.6.2 (/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src) Documenting qcheck v1.0.0 Documenting slog v2.7.0 Documenting crossbeam-utils v0.8.20 Documenting polyval v0.6.2 Documenting poly1305 v0.8.0 Documenting sha2 v0.10.8 Documenting sha3 v0.10.8 Documenting pbkdf2 v0.12.2 Documenting anstream v0.6.15 Documenting time v0.3.36 Documenting regex-automata v0.4.7 Documenting strsim v0.11.1 Checking heck v0.5.0 Documenting clap_lex v0.7.2 Documenting normpath v1.3.0 Documenting ctr v0.9.2 Documenting aes v0.8.4 Documenting cyphergraphy v0.3.0 Documenting blowfish v0.9.1 Documenting ghash v0.5.1 Documenting chacha20 v0.9.1 Documenting ssh-encoding v0.2.0 Documenting url v2.5.2 Documenting git-ref-format-core v0.3.0 Documenting cbc v0.1.2 Documenting serde_json v1.0.127 Documenting nonempty v0.9.0 Documenting heck v0.5.0 Documenting lazy_static v1.5.0 Documenting utf8-width v0.1.7 Documenting remove_dir_all v0.8.3 Documenting cypheraddr v0.4.0 Documenting regex v1.10.6 Documenting clap_builder v4.5.15 Documenting bcrypt-pbkdf v0.10.0 Documenting aes-gcm v0.10.3 Documenting localtime v1.3.1 Documenting crossbeam-channel v0.5.13 Documenting clap_derive v4.5.13 Documenting culpa v1.0.2 Documenting git2 v0.19.0 Documenting git-ref-format v0.3.0 Documenting html-escape v0.2.13 Documenting fs2 v0.4.3 Documenting filetime v0.2.25 Documenting subplotlib-derive v0.11.0 Documenting siphasher v1.0.1 Documenting state v0.5.3 Documenting socks5-client v0.4.1 Documenting libyml v0.0.4 Documenting ssh-cipher v0.2.0 Documenting unescape v0.1.0 Documenting arc-swap v1.7.1 Documenting base64 v0.22.1 Documenting shell-words v1.1.0 Documenting slog-json v2.6.1 Documenting html-page v0.4.0 Documenting uuid v1.10.0 Documenting anyhow v1.0.86 Documenting clap v4.5.16 Documenting cyphernet v0.5.2 Documenting ssh-key v0.6.6 Documenting serde_yml v0.0.11 Documenting slog-scope v4.4.0 Documenting subplotlib v0.11.0 Documenting radicle-git-ext v0.8.0 Documenting radicle-crypto v0.11.0 Documenting radicle-surf v0.22.0 Documenting radicle-cob v0.12.0 Documenting radicle v0.13.0 Documenting radicle-ci-broker v0.6.2 (/srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src) Finished `dev` profile [unoptimized + debuginfo] target(s) in 33.75s Generated /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/doc/radicle_ci_broker/index.html and 3 other files + cargo test --workspace --no-fail-fast Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s Running unittests src/lib.rs (target/debug/deps/radicle_ci_broker-529a0a4eb0d6e6c7) running 40 tests {"msg":"broker database: /tmp/.tmpBzaLme/db.db","level":"INFO","ts":"2024-09-12T11:43:59.774262363Z"} {"msg":"broker database: /tmp/.tmpAw6Hfe/db.db","level":"INFO","ts":"2024-09-12T11:43:59.774339303Z"} {"msg":"broker database: /tmp/.tmpjLT2W2/db.db","level":"INFO","ts":"2024-09-12T11:43:59.774400063Z"} {"msg":"broker database: /tmp/.tmpbY6Aqi/db.db","level":"INFO","ts":"2024-09-12T11:43:59.774491463Z"} test broker::test::does_not_have_a_default_adapter_initially ... ok test broker::test::adds_adapter ... ok test broker::test::does_not_find_unknown_repo ... ok {"msg":"broker database: /tmp/.tmpHyDjTb/db.db","level":"INFO","ts":"2024-09-12T11:43:59.995546404Z"} {"msg":"broker database: /tmp/.tmpEOGnP7/db.db","level":"INFO","ts":"2024-09-12T11:43:59.996061515Z"} {"msg":"broker database: /tmp/.tmpoPpNZz/db.db","level":"INFO","ts":"2024-09-12T11:43:59.996149315Z"} {"msg":"adapter exit code","level":"DEBG","ts":"2024-09-12T11:44:00.048979441Z","exit_code":1} {"msg":"adapter stderr","level":"DEBG","ts":"2024-09-12T11:44:00.049021231Z","stderr":"woe be me"} test adapter::test::adapter_exits_nonzero ... ok {"msg":"broker database: /tmp/.tmpCBxNwx/db.db","level":"INFO","ts":"2024-09-12T11:44:00.050731714Z"} test adapter::test::adapter_produces_as_bad_message ... ok test event::test::branch_is_not_patch_update ... ok test event::test::get_no_push_branch ... ok test event::test::get_push_branch ... ok test event::test::patch_branch_is_not_patch_update ... ok test event::test::patch_update ... ok test event::test::test_parse_invalid_ref ... ok test event::test::test_parse_patch_ref ... ok {"msg":"adapter exit code","level":"DEBG","ts":"2024-09-12T11:44:00.070554953Z","exit_code":0} test adapter::test::adapter_reports_success ... ok {"msg":"adapter was terminated by signal","level":"DEBG","ts":"2024-09-12T11:44:00.070959624Z"} test event::test_broker_event::name_for_branch ... {"okmsg ":"adapter did not exit voluntarily","level":"WARN","ts":"2024-09-12T11:44:00.070998174Z"} test event::test_broker_event::name_for_shutdown ... ok test adapter::test::adapter_is_killed_after_second_message ... ok test event::test_broker_event::nid_for_plain_branch_name ... ok test event::test_broker_event::nid_for_ref_with_namespace ... ok test event::test::test_parse_push_ref ... ok test adapter::test::adapter_first_message_isnt_triggered ... ok test adapter::test::adapter_is_not_executable ... ok test event::test_broker_event::nid_for_ref_without_namespace ... ok test event::test_parse_ref::namespaced_branch_with_slashes ... ok test event::test_parse_ref::namespaced_branch ... ok test event::test_parse_ref::namespaced_patch ... ok test run::test::serialize_run_state ... ok test event::test_parse_ref::plain_branch_name_is_none ... ok {"msg":"no first response message","level":"ERRO","ts":"2024-09-12T11:44:00.080531643Z"} {"msg":"no second response message","level":"ERRO","ts":"2024-09-12T11:44:00.080569533Z"} {"msg":"adapter was terminated by signal","level":"DEBG","ts":"2024-09-12T11:44:00.080600433Z"} {"msg":"adapter did not exit voluntarily","level":"WARN","ts":"2024-09-12T11:44:00.080625753Z"} test adapter::test::adapter_is_killed_before_any_messages ... ok {"msg":"adapter exit code","level":"DEBG","ts":"2024-09-12T11:44:00.085314873Z","exit_code":0} {"msg":"start CI run","level":"INFO","ts":"2024-09-12T11:44:00.085517644Z"} {test adapter::test::adapter_reports_failure ... ok "msg":"trigger event: Trigger {\n common: EventCommonFields {\n version: 1,\n event_type: Push,\n repository: Repository {\n id: RepoId(rad:z3FcesBHopZtcpmqadEvhwhKcmYkk),\n name: \"acme\",\n description: \"Acme's repository\",\n private: false,\n default_branch: \"master\",\n delegates: [\n Did(\"did:key:z6MkjDYijMZZTnd6wJAvUDz1wodsjtofaoMGzXFkuUB5XGHX\"),\n ],\n },\n },\n push: Some(\n PushEvent {\n pusher: Author {\n id: Did(\"did:key:z6MkjDYijMZZTnd6wJAvUDz1wodsjtofaoMGzXFkuUB5XGHX\"),\n alias: None,\n },\n before: Oid(\n f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354,\n ),\n after: Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n branch: \"master\",\n commits: [\n Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n ],\n },\n ),\n patch: None,\n}","level":"DEBG","ts":"2024-09-12T11:44:00.085720914Z"} test adapter::test::adapter_has_bad_interpreter ... ok test adapter::test::adapter_does_not_exist ... ok {"msg":"too many response messages","level":"ERRO","ts":"2024-09-12T11:44:00.087436128Z"} test adapter::test::adapter_outputs_too_many_messages ... ok test msg::tests::trigger_push ... ok {"msg":"no second response message","level":"ERRO","ts":"2024-09-12T11:44:00.142958628Z"} {"msg":"adapter was terminated by signal","level":"DEBG","ts":"2024-09-12T11:44:00.142997288Z"} {"msg":"adapter did not exit voluntarily","level":"WARN","ts":"2024-09-12T11:44:00.143021438Z"} test adapter::test::adapter_is_killed_after_first_message ... ok test msg::tests::trigger_patch ... ok test broker::test::finds_default_adapter_for_unknown_repo ... ok test broker::test::has_no_adapters_initially ... ok test broker::test::sets_a_default_adapter_initially ... ok {"msg":"start CI run","level":"INFO","ts":"2024-09-12T11:44:00.318224358Z"} {"msg":"trigger event: Trigger {\n common: EventCommonFields {\n version: 1,\n event_type: Push,\n repository: Repository {\n id: RepoId(rad:z2c8o8NMbEECod8aY4ngw426sMjrj),\n name: \"acme\",\n description: \"Acme's repository\",\n private: false,\n default_branch: \"master\",\n delegates: [\n Did(\"did:key:z6MkmagNijtqFkawhvdR62EURs9EGQhz36zTpex8xSVDzLhQ\"),\n ],\n },\n },\n push: Some(\n PushEvent {\n pusher: Author {\n id: Did(\"did:key:z6MkmagNijtqFkawhvdR62EURs9EGQhz36zTpex8xSVDzLhQ\"),\n alias: None,\n },\n before: Oid(\n f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354,\n ),\n after: Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n branch: \"master\",\n commits: [\n Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n ],\n },\n ),\n patch: None,\n}","level":"DEBG","ts":"2024-09-12T11:44:00.318382448Z"} {"msg":"adapter exit code","level":"DEBG","ts":"2024-09-12T11:44:00.350777973Z","exit_code":1} {"msg":"adapter stderr","level":"DEBG","ts":"2024-09-12T11:44:00.350821323Z","stderr":"woe be me"} {"msg":"failed to run adapter or it failed to run CI: child process failed with wait status 1","level":"ERRO","ts":"2024-09-12T11:44:00.436732074Z"} {"msg":"Finish CI run","level":"INFO","ts":"2024-09-12T11:44:00.436790214Z"} {"msg":"finished CI run: Run {\n broker_run_id: RunId {\n id: \"a0fe88f1-8a99-4788-a6bd-26a131dd6883\",\n },\n adapter_run_id: Some(\n RunId {\n id: \"xyzzy\",\n },\n ),\n adapter_info_url: None,\n repo_id: RepoId(rad:z3FcesBHopZtcpmqadEvhwhKcmYkk),\n repo_name: \"acme\",\n timestamp: \"2024-09-12 11:44:00Z\",\n whence: Branch {\n name: \"push-event-has-no-branch-name\",\n commit: Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n who: Some(\n \"did:key:z6MkjDYijMZZTnd6wJAvUDz1wodsjtofaoMGzXFkuUB5XGHX\",\n ),\n },\n state: Finished,\n result: Some(\n Success,\n ),\n}","level":"DEBG","ts":"2024-09-12T11:44:00.436980764Z"} test broker::test::adapter_fails ... ok {"msg":"adapter exit code","level":"DEBG","ts":"2024-09-12T11:44:00.499731759Z","exit_code":0} {"msg":"Finish CI run","level":"INFO","ts":"2024-09-12T11:44:00.539273589Z"} {"msg":"finished CI run: Run {\n broker_run_id: RunId {\n id: \"5b1f21c2-5722-4858-b129-01b7920ba974\",\n },\n adapter_run_id: Some(\n RunId {\n id: \"xyzzy\",\n },\n ),\n adapter_info_url: None,\n repo_id: RepoId(rad:z2c8o8NMbEECod8aY4ngw426sMjrj),\n repo_name: \"acme\",\n timestamp: \"2024-09-12 11:44:00Z\",\n whence: Branch {\n name: \"push-event-has-no-branch-name\",\n commit: Oid(\n 532c92e4ec973d79c25652c581ae82d238e46a06,\n ),\n who: Some(\n \"did:key:z6MkmagNijtqFkawhvdR62EURs9EGQhz36zTpex8xSVDzLhQ\",\n ),\n },\n state: Finished,\n result: Some(\n Success,\n ),\n}","level":"DEBG","ts":"2024-09-12T11:44:00.539456959Z"} test broker::test::executes_adapter ... ok test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s Running unittests src/bin/cib.rs (target/debug/deps/cib-d1cec5285f483326) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/bin/cibtool.rs (target/debug/deps/cibtool-311c6ffe3e634b61) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/bin/synthetic-events.rs (target/debug/deps/synthetic_events-adda872da669a936) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/subplot.rs (target/debug/deps/subplot-4e1003637ce2f32d) running 36 tests test adapter_with_url_runs_successfully ... ok test can_trigger_a_ci_run ... FAILED test dummy_adapter_runs_successfully ... ok test add_information_about_run_that_s_finished_successfully_to_database ... FAILED test acceptance_criteria_for_upgrades ... FAILED test add_information_about_triggered_run_to_database ... FAILED test adapter_can_provide_url_for_info_on_run ... FAILED test add_information_about_run_that_s_finished_in_failure_to_database ... FAILED test events_can_be_queued_and_removed_from_queue ... FAILED test filter_recorded_broker_events ... FAILED test gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file ... FAILED test gives_helpful_error_message_if_node_socket_can_t_be_found ... FAILED test insert_events_into_queue ... FAILED test insert_many_events_into_queue ... FAILED test logs_adapter_stderr_output ... FAILED test logs_start_and_successful_end ... FAILED test process_queued_events ... FAILED test produces_a_report_page_upon_request ... FAILED test produces_a_json_status_file ... FAILED test record_node_events ... FAILED test reports_it_version ... FAILED test shuts_down_when_requested ... FAILED test smoke_test__runs_adapter ... FAILED test stops_if_the_node_connection_breaks ... FAILED test we_can_run_rad ... FAILED test update_and_show_information_about_run_to_running ... FAILED test add_information_about_run_that_s_running_to_database ... FAILED test don_t_insert_event_for_non_existent_repository ... FAILED test convert_recorded_node_events_into_broker_events ... FAILED test don_t_insert_events_into_queue_when_not_allowed_by_filter ... FAILED test shows_config_as_json ... ok test logs_termination_due_to_error ... FAILED test can_add_shutdown_event_to_queue ... ok test event_synthesizer_terminates_after_first_connection ... ok test count_in_a_single_process has been running for over 60 seconds test count_in_concurrent_processes has been running for over 60 seconds test count_in_a_single_process ... ok test count_in_concurrent_processes ... ok failures: ---- can_trigger_a_ci_run stdout ---- unknown: scenario: Can trigger a CI run ci-broker.md:930:1: step: given file radenv.sh ci-broker.md:931:1: step: given file setup-node.sh ci-broker.md:932:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotPCarbCan-trigger-a-CI-run ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotPCarbCan-trigger-a-CI-run/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'can_trigger_a_ci_run' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:3098:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ---- add_information_about_run_that_s_finished_successfully_to_database stdout ---- unknown: scenario: Add information about run that's finished successfully to database ci-broker.md:1000:1: step: given file radenv.sh ci-broker.md:1001:1: step: given file setup-node.sh ci-broker.md:1002:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotlkmJlAdd-information-about-run-that-s-finished-successfully-to-database ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotlkmJlAdd-information-about-run-that-s-finished-successfully-to-database/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'add_information_about_run_that_s_finished_successfully_to_database' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:3509:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- acceptance_criteria_for_upgrades stdout ---- unknown: scenario: Acceptance criteria for upgrades ci-broker.md:1375:1: step: given file radenv.sh ci-broker.md:1376:1: step: given file setup-node.sh ci-broker.md:1377:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotTmz5yAcceptance-criteria-for-upgrades ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotTmz5yAcceptance-criteria-for-upgrades/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'acceptance_criteria_for_upgrades' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:5315:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- add_information_about_triggered_run_to_database stdout ---- unknown: scenario: Add information about triggered run to database ci-broker.md:952:1: step: given file radenv.sh ci-broker.md:953:1: step: given file setup-node.sh ci-broker.md:954:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotWqvojAdd-information-about-triggered-run-to-database ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotWqvojAdd-information-about-triggered-run-to-database/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'add_information_about_triggered_run_to_database' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:3232:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- adapter_can_provide_url_for_info_on_run stdout ---- unknown: scenario: Adapter can provide URL for info on run ci-broker.md:314:1: step: given file radenv.sh ci-broker.md:315:1: step: given file setup-node.sh ci-broker.md:316:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotzpJquAdapter-can-provide-URL-for-info-on-run ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotzpJquAdapter-can-provide-URL-for-info-on-run/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'adapter_can_provide_url_for_info_on_run' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:792:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- add_information_about_run_that_s_finished_in_failure_to_database stdout ---- unknown: scenario: Add information about run that's finished in failure to database ci-broker.md:1025:1: step: given file radenv.sh ci-broker.md:1026:1: step: given file setup-node.sh ci-broker.md:1027:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot3a8okAdd-information-about-run-that-s-finished-in-failure-to-database ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot3a8okAdd-information-about-run-that-s-finished-in-failure-to-database/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'add_information_about_run_that_s_finished_in_failure_to_database' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:3675:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- events_can_be_queued_and_removed_from_queue stdout ---- unknown: scenario: Events can be queued and removed from queue ci-broker.md:877:1: step: given file radenv.sh ci-broker.md:878:1: step: given file setup-node.sh ci-broker.md:879:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotbhHF9Events-can-be-queued-and-removed-from-queue ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotbhHF9Events-can-be-queued-and-removed-from-queue/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'events_can_be_queued_and_removed_from_queue' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:2910:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- filter_recorded_broker_events stdout ---- unknown: scenario: Filter recorded broker events ci-broker.md:1193:1: step: given file radenv.sh ci-broker.md:1194:1: step: given file setup-node.sh ci-broker.md:1195:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotpmMAqFilter-recorded-broker-events ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotpmMAqFilter-recorded-broker-events/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'filter_recorded_broker_events' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4761:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file stdout ---- unknown: scenario: Gives helpful error message if it doesn't understand its configuration file ci-broker.md:382:1: step: given file radenv.sh ci-broker.md:383:1: step: given file setup-node.sh ci-broker.md:384:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotWdH0PGives-helpful-error-message-if-it-doesn-t-understand-its-configuration-file ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotWdH0PGives-helpful-error-message-if-it-doesn-t-understand-its-configuration-file/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1027:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- gives_helpful_error_message_if_node_socket_can_t_be_found stdout ---- unknown: scenario: Gives helpful error message if node socket can't be found ci-broker.md:354:1: step: given file radenv.sh ci-broker.md:355:1: step: given file setup-node.sh ci-broker.md:356:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotL9QvUGives-helpful-error-message-if-node-socket-can-t-be-found ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotL9QvUGives-helpful-error-message-if-node-socket-can-t-be-found/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'gives_helpful_error_message_if_node_socket_can_t_be_found' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:901:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- insert_events_into_queue stdout ---- unknown: scenario: Insert events into queue ci-broker.md:656:1: step: given file radenv.sh ci-broker.md:657:1: step: given file setup-node.sh ci-broker.md:658:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotRb4fRInsert-events-into-queue ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotRb4fRInsert-events-into-queue/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'insert_events_into_queue' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:2104:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- insert_many_events_into_queue stdout ---- unknown: scenario: Insert many events into queue ci-broker.md:685:1: step: given file radenv.sh ci-broker.md:686:1: step: given file setup-node.sh ci-broker.md:687:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotyydhVInsert-many-events-into-queue ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotyydhVInsert-many-events-into-queue/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'insert_many_events_into_queue' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:2262:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- logs_adapter_stderr_output stdout ---- unknown: scenario: Logs adapter stderr output ci-broker.md:495:1: step: given file radenv.sh ci-broker.md:496:1: step: given file setup-node.sh ci-broker.md:497:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplottsiTgLogs-adapter-stderr-output ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplottsiTgLogs-adapter-stderr-output/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'logs_adapter_stderr_output' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1602:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- logs_start_and_successful_end stdout ---- unknown: scenario: Logs start and successful end ci-broker.md:1265:1: step: given file radenv.sh ci-broker.md:1266:1: step: given file setup-node.sh ci-broker.md:1267:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotdtyiALogs-start-and-successful-end ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotdtyiALogs-start-and-successful-end/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'logs_start_and_successful_end' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4918:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- process_queued_events stdout ---- unknown: scenario: Process queued events ci-broker.md:749:1: step: given file radenv.sh ci-broker.md:750:1: step: given file setup-node.sh ci-broker.md:751:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotaS2eZProcess-queued-events ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotaS2eZProcess-queued-events/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'process_queued_events' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:2673:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- produces_a_report_page_upon_request stdout ---- unknown: scenario: Produces a report page upon request ci-broker.md:467:1: step: given file radenv.sh ci-broker.md:468:1: step: given file setup-node.sh ci-broker.md:469:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotpOHnYProduces-a-report-page-upon-request ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotpOHnYProduces-a-report-page-upon-request/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'produces_a_report_page_upon_request' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1422:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- produces_a_json_status_file stdout ---- unknown: scenario: Produces a JSON status file ci-broker.md:1322:1: step: given file radenv.sh ci-broker.md:1323:1: step: given file setup-node.sh ci-broker.md:1324:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplottA5bqProduces-a-JSON-status-file ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplottA5bqProduces-a-JSON-status-file/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'produces_a_json_status_file' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:5119:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- record_node_events stdout ---- unknown: scenario: Record node events ci-broker.md:1137:1: step: given file radenv.sh ci-broker.md:1138:1: step: given file setup-node.sh ci-broker.md:1139:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotsrlkXRecord-node-events ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotsrlkXRecord-node-events/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'record_node_events' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4350:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- reports_it_version stdout ---- unknown: scenario: Reports it version ci-broker.md:284:1: step: given file radenv.sh ci-broker.md:285:1: step: given file setup-node.sh ci-broker.md:286:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot9EQTYReports-it-version ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot9EQTYReports-it-version/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'reports_it_version' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:583:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- shuts_down_when_requested stdout ---- unknown: scenario: Shuts down when requested ci-broker.md:441:1: step: given file radenv.sh ci-broker.md:442:1: step: given file setup-node.sh ci-broker.md:443:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot1k134Shuts-down-when-requested ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot1k134Shuts-down-when-requested/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'shuts_down_when_requested' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1300:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- smoke_test__runs_adapter stdout ---- unknown: scenario: Smoke test: Runs adapter ci-broker.md:244:1: step: given file radenv.sh ci-broker.md:245:1: step: given file setup-node.sh ci-broker.md:246:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotDgx1QSmoke-test--Runs-adapter ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotDgx1QSmoke-test--Runs-adapter/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'smoke_test__runs_adapter' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:468:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- stops_if_the_node_connection_breaks stdout ---- unknown: scenario: Stops if the node connection breaks ci-broker.md:412:1: step: given file radenv.sh ci-broker.md:413:1: step: given file setup-node.sh ci-broker.md:414:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotUzS8oStops-if-the-node-connection-breaks ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotUzS8oStops-if-the-node-connection-breaks/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'stops_if_the_node_connection_breaks' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1145:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- we_can_run_rad stdout ---- unknown: scenario: We can run rad ci-broker.md:535:1: step: given file radenv.sh ci-broker.md:536:1: step: when I run bash radenv.sh rad --version Running `bash` with args ["radenv.sh", "rad", "--version"] Running in /tmp/subplotiT8PeWe-can-run-rad ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: env: ‘rad’: No such file or directory return: Failure thread 'we_can_run_rad' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:1650:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- update_and_show_information_about_run_to_running stdout ---- unknown: scenario: Update and show information about run to running ci-broker.md:1052:1: step: given file radenv.sh ci-broker.md:1053:1: step: given file setup-node.sh ci-broker.md:1054:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotd7wS7Update-and-show-information-about-run-to-running ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotd7wS7Update-and-show-information-about-run-to-running/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'update_and_show_information_about_run_to_running' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4019:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- add_information_about_run_that_s_running_to_database stdout ---- unknown: scenario: Add information about run that's running to database ci-broker.md:975:1: step: given file radenv.sh ci-broker.md:976:1: step: given file setup-node.sh ci-broker.md:977:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot2ZlKdAdd-information-about-run-that-s-running-to-database ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot2ZlKdAdd-information-about-run-that-s-running-to-database/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'add_information_about_run_that_s_running_to_database' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:3366:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- don_t_insert_event_for_non_existent_repository stdout ---- unknown: scenario: Don't insert event for non-existent repository ci-broker.md:1102:1: step: given file radenv.sh ci-broker.md:1103:1: step: given file setup-node.sh ci-broker.md:1104:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplotFWQSRDon-t-insert-event-for-non-existent-repository ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplotFWQSRDon-t-insert-event-for-non-existent-repository/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'don_t_insert_event_for_non_existent_repository' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4192:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- convert_recorded_node_events_into_broker_events stdout ---- unknown: scenario: Convert recorded node events into broker events ci-broker.md:1165:1: step: given file radenv.sh ci-broker.md:1166:1: step: given file setup-node.sh ci-broker.md:1167:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot1KywbConvert-recorded-node-events-into-broker-events ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot1KywbConvert-recorded-node-events-into-broker-events/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'convert_recorded_node_events_into_broker_events' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4522:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- don_t_insert_events_into_queue_when_not_allowed_by_filter stdout ---- unknown: scenario: Don't insert events into queue when not allowed by filter ci-broker.md:715:1: step: given file radenv.sh ci-broker.md:716:1: step: given file setup-node.sh ci-broker.md:717:1: step: when I run bash radenv.sh bash setup-node.sh Running `bash` with args ["radenv.sh", "bash", "setup-node.sh"] Running in /tmp/subplot6AR2MDon-t-insert-events-into-queue-when-not-allowed-by-filter ENV: SHELL = /bin/sh PATH: /home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 127 Stdout: Stderr: + mkdir -p /tmp/subplot6AR2MDon-t-insert-events-into-queue-when-not-allowed-by-filter/homedir + rad auth --alias brokertest setup-node.sh: line 7: rad: command not found return: Failure thread 'don_t_insert_events_into_queue_when_not_allowed_by_filter' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:2424:20: called `Result::unwrap()` on an `Err` value: "expected exit code 0, but had Some(127)" ---- logs_termination_due_to_error stdout ---- unknown: scenario: Logs termination due to error ci-broker.md:1296:1: step: given an installed cib ci-broker.md:1298:1: step: given file broker.yaml ci-broker.md:1299:1: step: when I try to run cib --config broker.yaml queued Running `cib` with args ["--config", "broker.yaml", "queued"] Running in /tmp/subplotsJlNMLogs-termination-due-to-error ENV: SHELL = /bin/sh PATH: /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug:/home/_rad/.cargo/bin:/bin:/usr/bin:/sbin:/usr/sbin Exit code: 101 Stdout: Stderr: {"msg":"CI broker starts","level":"INFO","ts":"2024-09-12T11:44:00.567926416Z","version":"c7b0b39"} {"msg":"loaded configuration Config {\n default_adapter: \"mcadapterface\",\n adapters: {\n \"mcadapterface\": Adapter { \n command: \"./adapter.sh\", \n env: {\n \"RADICLE_NATIVE_CI\": \"native-ci.yaml\",\n }, \n sensitive_env: {} },\n },\n filters: [\n Branch(\n \"main\",\n ),\n ],\n report_dir: Some(\n \"reports\",\n ),\n status_update_interval_seconds: None,\n db: \"ci-broker.db\",\n}","level":"DEBG","ts":"2024-09-12T11:44:00.568626407Z"} {"msg":"broker database: ci-broker.db","level":"INFO","ts":"2024-09-12T11:44:00.571735314Z"} {"msg":"default adapter: Adapter { bin: \"./adapter.sh\", env: {\"RADICLE_NATIVE_CI\": \"native-ci.yaml\"} }","level":"DEBG","ts":"2024-09-12T11:44:00.809778178Z"} {"msg":"start thread to process events until a shutdown event","level":"INFO","ts":"2024-09-12T11:44:00.81565207Z"} {"msg":"queue in db has 0 events","level":"DEBG","ts":"2024-09-12T11:44:00.81587205Z"} {"msg":"queue in db has 0 events","level":"DEBG","ts":"2024-09-12T11:44:00.81599608Z"} {"msg":"event notification channel disconnected","level":"INFO","ts":"2024-09-12T11:44:00.816061591Z"} {"msg":"thread to process events ends","level":"INFO","ts":"2024-09-12T11:44:00.816119221Z"} {"msg":"start page updater thread","level":"INFO","ts":"2024-09-12T11:44:00.816603332Z"} {"msg":"wait about 60 seconds to update HTML report pages again","level":"INFO","ts":"2024-09-12T11:44:00.816680962Z"} thread 'main' panicked at src/bin/cib.rs:175:14: page updater thread succeeded: Write("reports/index.html", Os { code: 2, kind: NotFound, message: "No such file or directory" }) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ci-broker.md:1301:1: step: then stderr contains "CI broker starts" ci-broker.md:1302:1: step: then stderr contains "CI broker ends in unrecoverable error" return: Failure thread 'logs_termination_due_to_error' panicked at /srv/http/2d4a580e-d935-4670-a891-f24e7b522cad/src/target/debug/build/radicle-ci-broker-ef06dea44a80e186/out/ci-broker.rs:4984:20: called `Result::unwrap()` on an `Err` value: "stderr does not contain \"CI broker ends in unrecoverable error\"" failures: acceptance_criteria_for_upgrades adapter_can_provide_url_for_info_on_run add_information_about_run_that_s_finished_in_failure_to_database add_information_about_run_that_s_finished_successfully_to_database add_information_about_run_that_s_running_to_database add_information_about_triggered_run_to_database can_trigger_a_ci_run convert_recorded_node_events_into_broker_events don_t_insert_event_for_non_existent_repository don_t_insert_events_into_queue_when_not_allowed_by_filter events_can_be_queued_and_removed_from_queue filter_recorded_broker_events gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file gives_helpful_error_message_if_node_socket_can_t_be_found insert_events_into_queue insert_many_events_into_queue logs_adapter_stderr_output logs_start_and_successful_end logs_termination_due_to_error process_queued_events produces_a_json_status_file produces_a_report_page_upon_request record_node_events reports_it_version shuts_down_when_requested smoke_test__runs_adapter stops_if_the_node_connection_breaks update_and_show_information_about_run_to_running we_can_run_rad test result: FAILED. 7 passed; 29 failed; 0 ignored; 0 measured; 0 filtered out; finished in 70.20s error: test failed, to rerun pass `--test subplot` Doc-tests radicle_ci_broker running 2 tests test src/msg.rs - msg::RunId (line 44) ... ok test src/event.rs - event (line 11) ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.73s error: 1 target failed: `--test subplot`