Skip to content

Collect producing a directory tree but no files with example-rust #30

@divagant-martian

Description

@divagant-martian

I'm trying to get individual log files for each node in a rust test plan, however using testground collect --runner=local:docker RUN_ID produces a directory structure consistent with the number of nodes, but each node is empty. The logs I've tried to get are in the form of println!s, tracing::info and client.record_message

Here is the diff over example-rust. My use case is unrelated to example-rust or to the specific data I'm logging in this case, it just serves for reproducibility. The pingpong testcase in the network plan works just fine

diff --git a/plans/example-rust/Cargo.toml b/plans/example-rust/Cargo.toml
index 8fbea07..f14ea58 100644
--- a/plans/example-rust/Cargo.toml
+++ b/plans/example-rust/Cargo.toml
@@ -17,4 +17,6 @@ serde = { version = "1", features = [ "derive" ] }
 serde_json = "1"
 thiserror = "1"
 tokio = { version = "1", default-features = false, features = ["sync", "rt-multi-thread", "macros", "net"] }
-testground = "0.2.0"
\ No newline at end of file
+testground = "0.2.0"
+tracing = "0.1.35"
+tracing-subscriber = { version = "0.3.11", features = ["env-filter"] }
diff --git a/plans/example-rust/Dockerfile b/plans/example-rust/Dockerfile
index 42173f2..b48e134 100644
--- a/plans/example-rust/Dockerfile
+++ b/plans/example-rust/Dockerfile
@@ -17,4 +17,6 @@ RUN cd ./plan/ && cargo build --release && cargo install --path .
 FROM debian:bullseye-slim
 COPY --from=builder /usr/local/cargo/bin/testplan /usr/local/bin/testplan
 EXPOSE 6060
-ENTRYPOINT ["testplan"]
\ No newline at end of file
+
+ENV RUST_LOG=debug
+ENTRYPOINT ["testplan"]
diff --git a/plans/example-rust/src/main.rs b/plans/example-rust/src/main.rs
index bf71d42..d477f61 100644
--- a/plans/example-rust/src/main.rs
+++ b/plans/example-rust/src/main.rs
@@ -4,6 +4,10 @@ const LISTENING_PORT: u16 = 1234;
 
 #[tokio::main]
 async fn main() -> Result<(), Box<dyn std::error::Error>> {
+    if let Ok(env_filter) = tracing_subscriber::EnvFilter::try_from_default_env() {
+        tracing_subscriber::fmt().with_env_filter(env_filter).init();
+    }
+
     let (client, _run_parameters) = testground::client::Client::new().await?;
     client.wait_network_initialized().await?;
 
@@ -15,6 +19,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
         .addr
         .ip();
 
+    tracing::info!("Local addr: {}", local_addr);
+    client.record_message(format!("Local addr: {}", local_addr));
+
     match local_addr {
         std::net::IpAddr::V4(addr) if addr.octets()[3] == 2 => {
             println!("Test instance, listening for incoming connections.");

run the daemon

$ testground daemon

then in the testground folder

$ testground plan import --from plans/example-rust

then I run by

$ testground run single --plan=example-rust --testcase=tcp-connect --builder=docker:generic --runner=local:docker --instances=2

in the daemon terminal the plan runs correctly

Then try to get the log files with

$ testground collect --runner=local:docker RUN_ID
#...
# Jun 24 17:40:58.552984	INFO	created file: caqvc74c8i2pjq3ftevg.tgz
$ tree $TESTGROUND_HOME/data/outputs/local_docker/example-rust/RUN_ID
# $TESTGROUND_HOME/data/outputs/local_docker/example-rust/RUN_ID/
# └── single
#     ├── 0
#     └── 1
# 
# 3 directories, 0 files

There are some errors at the end of the run, which I not know if they are related or not. Full output is here

Jun 24 17:57:43.086939	INFO	build completed	{"default_tag": "6798957eba77:latest", "took": "1m15s"}
Jun 24 17:57:43.134576	INFO	got docker image id	{"image_id": "0e11cf0bedda"}
Jun 24 17:57:43.134644	INFO	tagging image	{"image_id": "0e11cf0bedda", "tag": "example-rust:0e11cf0bedda"}
Jun 24 17:57:43.145242	INFO	build succeeded	{"plan": "example-rust", "groups": ["single"], "builder": "docker:generic", "artifact": "0e11cf0bedda"}
Jun 24 17:57:43.145320	INFO	performing healthcheck on runner
Jun 24 17:57:43.171483	INFO	healthcheck: ok
Jun 24 17:57:43.171557	INFO	starting run	{"run_id": "caqvlisc8i2pjq3ftf00", "plan": "example-rust", "case": "tcp-connect", "runner": "local:docker", "instances": 2}
Jun 24 17:57:43.199375	INFO	creating container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "name": "tg-example-rust-tcp-connect-caqvlisc8i2pjq3ftf00-single-0"}
Jun 24 17:57:43.343660	INFO	creating container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "name": "tg-example-rust-tcp-connect-caqvlisc8i2pjq3ftf00-single-1"}
Jun 24 17:57:43.393016	INFO	starting containers	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "count": 2}
Jun 24 17:57:43.393131	INFO	starting container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "id": "7ec05d3c8f17b04d3dceb344ad09aabe330415f77e295513e4ddc6585da921bf", "group": "single", "group_index": 1}
Jun 24 17:57:43.393123	INFO	starting container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "id": "29c7eaa1c6c3b84e44b785fad4c7ca5ec4a563c6afde48fdeb3442b11099566f", "group": "single", "group_index": 0}
Jun 24 17:57:44.191087	INFO	0.7979s      OTHER << sidecar      >> Jun 24 17:57:44.190683	INFO	resolved route to host	{"host": "testground-redis", "ip": "192.18.0.3"}
Jun 24 17:57:44.191219	INFO	0.7981s      OTHER << sidecar      >> Jun 24 17:57:44.190979	INFO	resolved route to host	{"host": "testground-sync-service", "ip": "192.18.0.4"}
Jun 24 17:57:44.191401	INFO	0.7983s      OTHER << sidecar      >> Jun 24 17:57:44.191244	INFO	resolved route to host	{"host": "testground-influxdb", "ip": "192.18.0.6"}
Jun 24 17:57:44.191619	INFO	0.7984s    MESSAGE << sidecar      >> InfluxDB unavailable; no metrics will be dispatched: no InfluxDB URL in $INFLUXDB_URL env var
Jun 24 17:57:44.195079	INFO	0.8019s      OTHER << sidecar      >> Jun 24 17:57:44.194100	INFO	successfully resolved route to host	{"container_id": "29c7eaa1c6c3b84e44b785fad4c7ca5ec4a563c6afde48fdeb3442b11099566f"}
Jun 24 17:57:44.195174	INFO	0.8021s      OTHER << sidecar      >> Jun 24 17:57:44.194568	INFO	external routing disabled
Jun 24 17:57:44.195199	INFO	0.8021s      OTHER << sidecar      >> Jun 24 17:57:44.194640	INFO	waiting for all networks to be ready	{"sidecar": true, "run_id": "caqvlisc8i2pjq3ftf00"}
Jun 24 17:57:44.243369	INFO	started containers	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "count": 2}
Jun 24 17:57:44.244697	INFO	0.8513s    MESSAGE << sidecar      >> InfluxDB unavailable; no metrics will be dispatched: no InfluxDB URL in $INFLUXDB_URL env var
Jun 24 17:57:44.246981	INFO	0.8539s      OTHER << sidecar      >> Jun 24 17:57:44.246716	INFO	successfully resolved route to host	{"container_id": "7ec05d3c8f17b04d3dceb344ad09aabe330415f77e295513e4ddc6585da921bf"}
Jun 24 17:57:44.247427	INFO	0.8543s      OTHER << sidecar      >> Jun 24 17:57:44.247111	INFO	external routing disabled
Jun 24 17:57:44.247457	INFO	0.8543s      OTHER << sidecar      >> Jun 24 17:57:44.247181	INFO	waiting for all networks to be ready	{"sidecar": true, "run_id": "caqvlisc8i2pjq3ftf00"}
Jun 24 17:57:44.247899	INFO	0.8548s      OTHER << sidecar      >> Jun 24 17:57:44.247679	INFO	all networks ready	{"sidecar": true, "run_id": "caqvlisc8i2pjq3ftf00"}
Jun 24 17:57:44.248121	INFO	0.8550s      OTHER << sidecar      >> Jun 24 17:57:44.247966	INFO	all networks ready	{"sidecar": true, "run_id": "caqvlisc8i2pjq3ftf00"}
Jun 24 17:57:44.248489	INFO	0.8554s      OTHER << single[001] (7ec05d) >> 2022-06-24T17:57:44.248125Z  INFO testplan: Local addr: 16.1.0.2
Jun 24 17:57:44.248541	INFO	0.8554s      OTHER << single[000] (29c7ea) >> 2022-06-24T17:57:44.248125Z  INFO testplan: Local addr: 16.1.0.3
Jun 24 17:57:44.248559	INFO	0.0000s    MESSAGE << single[001] (7ec05d) >> Local addr: 16.1.0.2
Jun 24 17:57:44.248609	INFO	0.8555s      OTHER << single[001] (7ec05d) >> Test instance, listening for incoming connections.
Jun 24 17:57:44.248610	INFO	0.0000s    MESSAGE << single[000] (29c7ea) >> Local addr: 16.1.0.3
Jun 24 17:57:44.248639	INFO	0.8555s      OTHER << single[000] (29c7ea) >> Test instance, connecting to listening instance.
Jun 24 17:57:44.248953	INFO	0.8558s      OTHER << single[000] (29c7ea) >> Established outbound TCP connection.
Jun 24 17:57:44.248980	INFO	0.8559s      OTHER << single[001] (7ec05d) >> Established inbound TCP connection.
Jun 24 17:57:44.249004	INFO	0.8557s         OK << single[000] (29c7ea) >> 
Jun 24 17:57:44.249030	INFO	0.8557s         OK << single[001] (7ec05d) >> 
Jun 24 17:57:44.249317	INFO	0.8562s      OTHER << single[000] (29c7ea) >> Done!
Jun 24 17:57:44.249376	INFO	0.8563s      OTHER << single[000] (29c7ea) >> 2022-06-24T17:57:44.249066Z DEBUG testground::background: Client command sender dropped. Background task shutting down.    
Jun 24 17:57:44.249549	INFO	0.8564s      OTHER << single[001] (7ec05d) >> Done!
Jun 24 17:57:44.303727	INFO	deleting containers	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "ids": ["29c7eaa1c6c3b84e44b785fad4c7ca5ec4a563c6afde48fdeb3442b11099566f", "7ec05d3c8f17b04d3dceb344ad09aabe330415f77e295513e4ddc6585da921bf"]}
Jun 24 17:57:44.303798	INFO	deleting container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "id": "7ec05d3c8f17b04d3dceb344ad09aabe330415f77e295513e4ddc6585da921bf"}
Jun 24 17:57:44.303803	INFO	deleting container	{"runner": "local:docker", "run_id": "caqvlisc8i2pjq3ftf00", "id": "29c7eaa1c6c3b84e44b785fad4c7ca5ec4a563c6afde48fdeb3442b11099566f"}
Jun 24 17:57:45.142549	INFO	run finished with outcome = success (single:2/2)	{"run_id": "caqvlisc8i2pjq3ftf00", "plan": "example-rust", "case": "tcp-connect", "runner": "local:docker", "instances": 2}
Jun 24 17:57:45.146584	INFO	worker completed task	{"worker_id": 1, "task_id": "caqvlisc8i2pjq3ftf00"}
Jun 24 17:57:45.146965	INFO	1.7538s INCOMPLETE << sidecar      >> 
2022-06-24 12:57:45.146965268 -0500 -05 m=+4044.045969251 write error: write $TESTGROUND_HOME/data/daemon/caqvlisc8i2pjq3ftf00.out: file already closed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions