Merge nucleic/brisk-slate-viper-tkai into dev
This commit is contained in:
@@ -105,6 +105,12 @@ struct Batch<'a> {
|
|||||||
batch_type: &'static str,
|
batch_type: &'static str,
|
||||||
source: &'static str,
|
source: &'static str,
|
||||||
session_id: Option<&'a str>,
|
session_id: Option<&'a str>,
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
environment_kind: Option<&'a str>,
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
environment_id: Option<&'a str>,
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
environment_label: Option<&'a str>,
|
||||||
shell_id: &'a str,
|
shell_id: &'a str,
|
||||||
parent_shell: Option<&'a str>,
|
parent_shell: Option<&'a str>,
|
||||||
events: &'a [Event],
|
events: &'a [Event],
|
||||||
@@ -119,6 +125,9 @@ struct Config {
|
|||||||
hook_url: Option<HookUrl>,
|
hook_url: Option<HookUrl>,
|
||||||
token: Option<String>,
|
token: Option<String>,
|
||||||
session_id: Option<String>,
|
session_id: Option<String>,
|
||||||
|
environment_kind: Option<String>,
|
||||||
|
environment_id: Option<String>,
|
||||||
|
environment_label: Option<String>,
|
||||||
spool: Option<PathBuf>,
|
spool: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,6 +168,9 @@ impl Config {
|
|||||||
hook_url,
|
hook_url,
|
||||||
token: std::env::var("NUCLEIC_HOOK_TOKEN").ok(),
|
token: std::env::var("NUCLEIC_HOOK_TOKEN").ok(),
|
||||||
session_id: std::env::var("NUCLEIC_SESSION_ID").ok(),
|
session_id: std::env::var("NUCLEIC_SESSION_ID").ok(),
|
||||||
|
environment_kind: std::env::var("NUCLEIC_SHELL_ENVIRONMENT_KIND").ok(),
|
||||||
|
environment_id: std::env::var("NUCLEIC_SHELL_ENVIRONMENT_ID").ok(),
|
||||||
|
environment_label: std::env::var("NUCLEIC_SHELL_ENVIRONMENT_LABEL").ok(),
|
||||||
spool,
|
spool,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -609,6 +621,9 @@ fn flusher(cfg: Config, shell_id: String, parent_shell: Option<String>, rx: mpsc
|
|||||||
batch_type: "shell-batch",
|
batch_type: "shell-batch",
|
||||||
source: "nash",
|
source: "nash",
|
||||||
session_id: cfg.session_id.as_deref(),
|
session_id: cfg.session_id.as_deref(),
|
||||||
|
environment_kind: cfg.environment_kind.as_deref(),
|
||||||
|
environment_id: cfg.environment_id.as_deref(),
|
||||||
|
environment_label: cfg.environment_label.as_deref(),
|
||||||
shell_id: &shell_id,
|
shell_id: &shell_id,
|
||||||
parent_shell: parent_shell.as_deref(),
|
parent_shell: parent_shell.as_deref(),
|
||||||
events: buf,
|
events: buf,
|
||||||
|
|||||||
@@ -129,6 +129,15 @@ impl Sink {
|
|||||||
}
|
}
|
||||||
events
|
events
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn next_batch(&self) -> serde_json::Value {
|
||||||
|
let (auth, batch) = self
|
||||||
|
.rx
|
||||||
|
.recv_timeout(Duration::from_secs(5))
|
||||||
|
.expect("shell batch");
|
||||||
|
assert_eq!(auth.as_deref(), Some("Bearer test-token"));
|
||||||
|
batch
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for Sink {
|
impl Drop for Sink {
|
||||||
@@ -162,6 +171,9 @@ fn run_nash(sink: &Sink, script: &str) -> std::process::ExitStatus {
|
|||||||
.env("NUCLEIC_SHELL_SOCKET", sink.socket())
|
.env("NUCLEIC_SHELL_SOCKET", sink.socket())
|
||||||
.env("NUCLEIC_HOOK_TOKEN", "test-token")
|
.env("NUCLEIC_HOOK_TOKEN", "test-token")
|
||||||
.env("NUCLEIC_SESSION_ID", "sess-1")
|
.env("NUCLEIC_SESSION_ID", "sess-1")
|
||||||
|
.env("NUCLEIC_SHELL_ENVIRONMENT_KIND", "agent")
|
||||||
|
.env("NUCLEIC_SHELL_ENVIRONMENT_ID", "agent")
|
||||||
|
.env("NUCLEIC_SHELL_ENVIRONMENT_LABEL", "Agent")
|
||||||
.env_remove("NUCLEIC_SHELL_PARENT")
|
.env_remove("NUCLEIC_SHELL_PARENT")
|
||||||
.status()
|
.status()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@@ -198,6 +210,18 @@ fn exec_events_flow() {
|
|||||||
assert_eq!(false_ev["exitCode"], 1);
|
assert_eq!(false_ev["exitCode"], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn emitter_environment_flows_on_batch_envelope() {
|
||||||
|
let sink = Sink::start();
|
||||||
|
let status = run_nash(&sink, "true");
|
||||||
|
assert_eq!(status.code(), Some(0));
|
||||||
|
|
||||||
|
let batch = sink.next_batch();
|
||||||
|
assert_eq!(batch["environmentKind"], "agent");
|
||||||
|
assert_eq!(batch["environmentId"], "agent");
|
||||||
|
assert_eq!(batch["environmentLabel"], "Agent");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn external_command_exit_codes() {
|
fn external_command_exit_codes() {
|
||||||
let sink = Sink::start();
|
let sink = Sink::start();
|
||||||
@@ -509,6 +533,7 @@ fn spool_fallback_when_socket_absent() {
|
|||||||
.env("NUCLEIC_SHELL_SOCKET", "/nonexistent/control.sock")
|
.env("NUCLEIC_SHELL_SOCKET", "/nonexistent/control.sock")
|
||||||
.env("NUCLEIC_SHELL_SPOOL", &dir)
|
.env("NUCLEIC_SHELL_SPOOL", &dir)
|
||||||
.env("NUCLEIC_SESSION_ID", "sess-1")
|
.env("NUCLEIC_SESSION_ID", "sess-1")
|
||||||
|
.env_remove("NUCLEIC_SHELL_HOOK_URL")
|
||||||
.env_remove("NUCLEIC_SHELL_PARENT")
|
.env_remove("NUCLEIC_SHELL_PARENT")
|
||||||
.status()
|
.status()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user