|
1 | 1 | #![cfg_attr(not(unix), allow(dead_code, unused_mut))] |
2 | 2 |
|
3 | 3 | use crate::prelude::*; |
| 4 | +use crate::run::runner::helpers::env::get_base_injected_env; |
4 | 5 | use crate::run::runner::helpers::run_command_with_log_pipe::run_command_with_log_pipe_and_callback; |
5 | 6 | use crate::run::runner::helpers::setup::run_with_sudo; |
6 | 7 | use crate::run::runner::valgrind::helpers::ignored_objects_path::get_objects_path_to_ignore; |
7 | 8 | use crate::run::runner::valgrind::helpers::perf_maps::harvest_perf_maps_for_pids; |
| 9 | +use crate::run::runner::RunData; |
| 10 | +use crate::run::RunnerMode; |
8 | 11 | use anyhow::Context; |
9 | 12 | use fifo::{PerfFifo, RunnerFifo}; |
10 | 13 | use futures::stream::FuturesUnordered; |
@@ -72,7 +75,12 @@ impl PerfRunner { |
72 | 75 | } |
73 | 76 | } |
74 | 77 |
|
75 | | - pub async fn run(&self, mut cmd: Command, bench_cmd: &str) -> anyhow::Result<ExitStatus> { |
| 78 | + pub async fn run( |
| 79 | + &self, |
| 80 | + mut cmd: Command, |
| 81 | + bench_cmd: &str, |
| 82 | + run_data: &RunData, |
| 83 | + ) -> anyhow::Result<ExitStatus> { |
76 | 84 | let perf_fifo = PerfFifo::new()?; |
77 | 85 | let runner_fifo = RunnerFifo::new()?; |
78 | 86 |
|
@@ -109,15 +117,18 @@ impl PerfRunner { |
109 | 117 | } |
110 | 118 | }; |
111 | 119 |
|
112 | | - let runner_mode = std::env::var("CODSPEED_RUNNER_MODE").unwrap_or_default(); |
113 | | - let codspeed_env = std::env::var("CODSPEED_ENV").unwrap_or_default(); |
| 120 | + let setenv = get_base_injected_env(RunnerMode::Walltime, &run_data.profile_folder) |
| 121 | + .into_iter() |
| 122 | + .map(|(env, value)| format!("--setenv={env}={value}")) |
| 123 | + .join(" "); |
| 124 | + |
114 | 125 | let uid = nix::unistd::Uid::current().as_raw(); |
115 | 126 | let gid = nix::unistd::Gid::current().as_raw(); |
116 | 127 | cmd.args([ |
117 | 128 | "-c", |
118 | 129 | &format!( |
119 | 130 | "sudo perf record {quiet_flag} --user-callchains --freq=999 --switch-output --control=fifo:{},{} --delay=-1 -g --call-graph={cg_mode} --output={} -- \ |
120 | | - systemd-run --scope --slice=codspeed.slice --same-dir --setenv=CODSPEED_ENV={codspeed_env} --setenv=CODSPEED_RUNNER_MODE={runner_mode} --uid={uid} --gid={gid} -- {bench_cmd}", |
| 131 | + systemd-run --scope --slice=codspeed.slice --same-dir --uid={uid} --gid={gid} {setenv} -- {bench_cmd}", |
121 | 132 | perf_fifo.ctl_fifo_path.to_string_lossy(), |
122 | 133 | perf_fifo.ack_fifo_path.to_string_lossy(), |
123 | 134 | perf_file.path().to_string_lossy(), |
|
0 commit comments