siso: enable autoninja to use env variables instead of flags for collector.

For clients with old siso this will not cause any breakage as we kept the flags, and did not introduce any old ones. Eventually everyone should get their collector running.

The collector startup will be triggered only for clients with enabled logs collection.

Bug: b/455433899
Change-Id: I962bd551c5a1cc6a5f8904e65d24939b6a6a6964
This commit is contained in:
Alex Ovsienko
2026-01-08 13:41:00 +09:00
parent 72926f8e78
commit 26359373f4
2 changed files with 171 additions and 285 deletions

58
siso.py
View File

@@ -45,14 +45,6 @@ def parse_args(args: list[str]) -> tuple[str, str]:
return subcmd, out_dir
# Trivial check if siso contains subcommand and returns its help page
# or nothing if subcommand is not present.
def _subcommand_help(siso_path: str, subc: str) -> str:
return subprocess.run([siso_path, "help", subc],
capture_output=True,
text=True).stdout
# Fetch PID platform independently of possibly running collector
# and kill it.
# Return boolean whether the kill was successful or not.
@@ -128,8 +120,8 @@ def _kill_collector() -> bool:
# Start collector when present.
# Returns boolean whether collector has started successfully and a potential sockets path.
def _start_collector(siso_path: str, sockets_file: Optional[str],
project: str) -> bool:
def _start_collector(siso_path: str, sockets_file: Optional[str], project: str,
env: dict[str, str]) -> bool:
class Status(Enum):
HEALTHY = 1
WRONG_ENDPOINT = 2
@@ -182,14 +174,15 @@ def _start_collector(siso_path: str, sockets_file: Optional[str],
creationflags = subprocess.CREATE_NEW_PROCESS_GROUP
cmd = [siso_path, "collector", "--project", project]
if sockets_file:
cmd += ["--collector_address", f"unix://{sockets_file}"]
env["SISO_COLLECTOR_ADDRESS"] = f"unix://{sockets_file}"
else:
cmd += ["--collector_address", _OTLP_DEFAULT_TCP_ENDPOINT]
env["SISO_COLLECTOR_ADDRESS"] = _OTLP_DEFAULT_TCP_ENDPOINT
subprocess.Popen(
cmd,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=creationflags,
)
@@ -259,9 +252,6 @@ def apply_telemetry_flags(args: list[str], env: dict[str, str],
"enable_cloud_monitoring", "enable_cloud_profiler",
"enable_cloud_trace", "enable_cloud_logging"
]
if "collector_address" in _subcommand_help(siso_path, "collector"):
if "collector_address" in _subcommand_help(siso_path, "ninja"):
telemetry_flags.append("enable_collector")
# Despite go.dev/issue/68312 being fixed, the issue is still reproducible
# for googlers. Due to this, the flag is still applied while the
# issue is being investigated.
@@ -340,39 +330,23 @@ def _resolve_sockets_folder(env: dict[str, str]) -> tuple[str, int]:
return path, allowed_length
def _handle_collector_args(siso_path: str, args: list[str],
env: dict[str, str]) -> list[str]:
parser = argparse.ArgumentParser()
# Can only be implicit. enable_collector=true will fail.
parser.add_argument("-enable_collector",
"--enable_collector",
action='store_true',
default=False)
known_args, _ = parser.parse_known_args(args)
if not known_args.enable_collector:
return args
def _handle_collector(siso_path: str, args: list[str],
env: dict[str, str]) -> dict[str, str]:
project = _fetch_metrics_project(args, env)
lenv = env.copy()
if not project:
return args
lenv.pop("SISO_COLLECTOR_ADDRESS", None)
return lenv
sockets_file = None
if sys.platform in ["darwin", "linux"]:
path, remainder_len = _resolve_sockets_folder(env)
sockets_file = os.path.join(path, f"{project[:remainder_len]}.sock")
started = _start_collector(siso_path, sockets_file, project)
if started:
if sockets_file:
args.append(f"--collector_address=unix://{sockets_file}")
else:
args.append(f"--collector_address={_OTLP_DEFAULT_TCP_ENDPOINT}")
else:
started = _start_collector(siso_path, sockets_file, project, lenv)
if not started:
print("Collector never came to life", file=sys.stderr)
if "-enable_collector" in args:
args.remove("-enable_collector")
elif "--enable_collector" in args:
args.remove("--enable_collector")
args.append("--enable_collector=false")
return args
lenv.pop("SISO_COLLECTOR_ADDRESS", None)
return lenv
def load_sisorc(rcfile: str) -> tuple[list[str], dict[str, list[str]]]:
@@ -567,8 +541,8 @@ def main(args: list[str],
args[1:], subcmd,
should_collect_logs, siso_path,
env)
processed_args = _handle_collector_args(siso_path,
processed_args, env)
if should_collect_logs:
env = _handle_collector(siso_path, processed_args, env)
check_outdir(out_dir)
return caffeinate.call([siso_path] + processed_args, env=env)
print(

View File

@@ -74,19 +74,6 @@ def test_apply_sisorc(siso_test_fixture: Any) -> None:
]
def test_is_subcommand_present(mocker: Any) -> None:
def side_effect(_: str, subcmd):
if subcmd in ["collector", "ninja"]:
return "help page"
return ""
mocker.patch("siso._subcommand_help", side_effect=side_effect)
assert siso._subcommand_help("siso_path", "collector")
assert siso._subcommand_help("siso_path", "ninja")
assert not siso._subcommand_help("siso_path", "unknown")
@pytest.mark.parametrize("args, want", [
pytest.param(["ninja", "-C", "out/Default"], [
"ninja", "-C", "out/Default", "--metrics_labels",
@@ -102,19 +89,6 @@ def test_apply_metrics_labels(args: List[str], want: List[str]) -> None:
assert got == want
@pytest.fixture
def siso_subcmd_present(mocker: Any) -> Generator[None, None, None]:
mocker.patch("siso._subcommand_help",
return_value="""
Starts the OTEL collector daemon.
-collector_address string
address to listen on for collector. Can be path for unix socket unix:///path/to/socket or host:port. (default "127.0.0.1:4317")
-project string
cloud project ID. can be set by $SISO_PROJECT
""")
yield
@pytest.mark.parametrize("args, env, want", [
pytest.param(["ninja", "-C", "out/Default"], {},
["ninja", "-C", "out/Default"],
@@ -127,19 +101,19 @@ Starts the OTEL collector daemon.
"--enable_cloud_profiler"
],
id="some_already_applied_no_env_flags"),
pytest.param([
"ninja", "-C", "out/Default", "--metrics_project", "some_project"
], {}, [
"ninja", "-C", "out/Default", "--metrics_project", "some_project",
"--enable_cloud_monitoring", "--enable_cloud_profiler",
"--enable_cloud_trace", "--enable_cloud_logging", "--enable_collector"
],
id="metrics_project_set"),
pytest.param(
["ninja", "-C", "out/Default", "--metrics_project", "some_project"], {},
[
"ninja", "-C", "out/Default", "--metrics_project", "some_project",
"--enable_cloud_monitoring", "--enable_cloud_profiler",
"--enable_cloud_trace", "--enable_cloud_logging"
],
id="metrics_project_set"),
pytest.param(["ninja", "-C", "out/Default"],
{"RBE_metrics_project": "some_project"}, [
"ninja", "-C", "out/Default", "--enable_cloud_monitoring",
"--enable_cloud_profiler", "--enable_cloud_trace",
"--enable_cloud_logging", "--enable_collector"
"--enable_cloud_logging"
],
id="metrics_project_set_thru_env"),
pytest.param(["ninja", "-C", "out/Default", "--project", "some_project"],
@@ -147,15 +121,14 @@ Starts the OTEL collector daemon.
"ninja", "-C", "out/Default", "--project", "some_project",
"--enable_cloud_monitoring", "--enable_cloud_profiler",
"--enable_cloud_trace", "--enable_cloud_logging",
"--enable_collector", "--metrics_project=some_project"
"--metrics_project=some_project"
],
id="cloud_project_set"),
pytest.param(["ninja", "-C", "out/Default"],
{"SISO_PROJECT": "some_project"}, [
"ninja", "-C", "out/Default", "--enable_cloud_monitoring",
"--enable_cloud_profiler", "--enable_cloud_trace",
"--enable_cloud_logging", "--enable_collector",
"--metrics_project=some_project"
"--enable_cloud_logging", "--metrics_project=some_project"
],
id="cloud_project_set_thru_env"),
pytest.param(
@@ -163,19 +136,17 @@ Starts the OTEL collector daemon.
{"SISO_PROJECT": "some_project"}, [
"ninja", "-C", "out/Default", "--enable_cloud_profiler=false",
"--enable_cloud_monitoring", "--enable_cloud_trace",
"--enable_cloud_logging", "--enable_collector",
"--metrics_project=some_project"
"--enable_cloud_logging", "--metrics_project=some_project"
],
id="respects_set_flags"),
])
def test_apply_telemetry_flags(siso_subcmd_present: Any, args: List[str],
env: Dict[str, str], want: List[str]) -> None:
def test_apply_telemetry_flags(args: List[str], env: Dict[str, str],
want: List[str]) -> None:
got = siso.apply_telemetry_flags(args, env, "siso_path")
assert got == want
def test_apply_telemetry_flags_sets_expected_env_var(siso_subcmd_present: Any,
mocker: Any) -> None:
def test_apply_telemetry_flags_sets_expected_env_var(mocker: Any) -> None:
mocker.patch.dict("os.environ", {})
args = [
"ninja",
@@ -187,62 +158,6 @@ def test_apply_telemetry_flags_sets_expected_env_var(siso_subcmd_present: Any,
assert env.get("GOOGLE_API_USE_CLIENT_CERTIFICATE") == "false"
def test_apply_telemetry_flags_collector_not_present(mocker: Any) -> None:
def mock_subcommand(_: str, subcmd: str) -> str:
if subcmd == "collector":
return ""
return "help page"
mocker.patch("siso._subcommand_help", side_effect=mock_subcommand)
args = ["ninja", "-C", "out/Default", "--metrics_project", "some_project"]
env = {}
want = [
"ninja", "-C", "out/Default", "--metrics_project", "some_project",
"--enable_cloud_monitoring", "--enable_cloud_profiler",
"--enable_cloud_trace", "--enable_cloud_logging"
]
got = siso.apply_telemetry_flags(args, env, "siso_path")
assert got == want
@pytest.mark.parametrize("collector_help, ninja_help, collector_present", [
pytest.param("some help", "some help", False, id="all_missing"),
pytest.param(
"some help", "--collector_address", False, id="ninja_flags_present"),
pytest.param(
"--collector_address", "some help", False,
id="collector_flags_present"),
pytest.param("--collector_address",
"--collector_address",
True,
id="all_flags_present"),
])
def test_apply_telemetry_flags_help_pages(mocker: Any, collector_help: str,
ninja_help: str,
collector_present: bool) -> None:
def mock_subcommand(_: str, subcmd: str) -> str:
if subcmd == "collector":
return collector_help
if subcmd == "ninja":
return ninja_help
return "some help"
mocker.patch("siso._subcommand_help", side_effect=mock_subcommand)
args = ["ninja", "-C", "out/Default", "--metrics_project", "some_project"]
env = {}
want = [
"ninja", "-C", "out/Default", "--metrics_project", "some_project",
"--enable_cloud_monitoring", "--enable_cloud_profiler",
"--enable_cloud_trace", "--enable_cloud_logging"
]
if collector_present:
want.append("--enable_collector")
got = siso.apply_telemetry_flags(args, env, "siso_path")
assert got == want
@pytest.mark.parametrize("args, env, want", [
pytest.param(
["--metrics_project", "proj1"], {}, "proj1", id="metrics_project_arg"),
@@ -321,8 +236,7 @@ def test_resolve_sockets_folder(siso_test_fixture: Any, tmp_path: Path,
def test_handle_collector_args_disabled(mocker: Any) -> None:
mock_fetch = mocker.patch("siso._fetch_metrics_project",
return_value="test-project")
mock_fetch = mocker.patch("siso._fetch_metrics_project", return_value="")
mock_start_collector = mocker.patch("siso._start_collector")
mocker.patch("sys.platform", new="linux")
@@ -331,10 +245,10 @@ def test_handle_collector_args_disabled(mocker: Any) -> None:
env = {"SISO_PROJECT": "test-project"}
args = ["ninja", "-C", out_dir]
result = siso._handle_collector_args(siso_path, args, env)
res_env = siso._handle_collector(siso_path, args, env)
assert result == args
mock_fetch.assert_not_called()
assert "SISO_COLLECTOR_ADDRESS" not in res_env
mock_fetch.assert_called_once_with(args, env)
mock_start_collector.assert_not_called()
@@ -342,13 +256,12 @@ def test_handle_collector_args_disabled(mocker: Any) -> None:
reason="Skipping Linux-specific test on Windows")
def test_handle_collector_args_starts_linux(siso_test_fixture: Any,
mocker: Any) -> None:
mock_start_collector = mocker.patch("siso._start_collector",
return_value=True)
mock_start_collector = mocker.patch("siso._start_collector")
mocker.patch("sys.platform", new="linux")
siso_path = "path/to/siso"
env = {"SISO_PROJECT": "test-project", "XDG_RUNTIME_DIR": "/tmp/run"}
args = ["ninja", "--enable_collector"]
args = ["ninja"]
captured_args = []
@@ -356,40 +269,43 @@ def test_handle_collector_args_starts_linux(siso_test_fixture: Any,
captured_args.append(list(args))
return "test-project"
def start_collector_side_effect(siso_path, sockets_file, project, env):
env["SISO_COLLECTOR_ADDRESS"] = f"unix://{sockets_file}"
return True
mock_start_collector.side_effect = start_collector_side_effect
mocker.patch("siso._fetch_metrics_project",
side_effect=fetch_metrics_project_side_effect)
result = siso._handle_collector_args(siso_path, args, env)
res_env = siso._handle_collector(siso_path, args, env)
sockets_file = os.path.join("/tmp", "run", "testuser", "siso",
"test-project.sock")
assert result == [
"ninja", "--enable_collector",
f"--collector_address=unix://{sockets_file}"
]
assert captured_args == [["ninja", "--enable_collector"]]
mock_start_collector.assert_called_once_with(siso_path, sockets_file,
"test-project")
"test-project", res_env)
assert res_env["SISO_COLLECTOR_ADDRESS"] == f"unix://{sockets_file}"
def test_handle_collector_args_starts_windows(mocker: Any) -> None:
mock_start_collector = mocker.patch("siso._start_collector",
return_value=True)
mock_start_collector = mocker.patch("siso._start_collector")
mock_fetch = mocker.patch("siso._fetch_metrics_project",
return_value="test-project")
mocker.patch("sys.platform", new="win32")
siso_path = "path/to/siso"
env = {"SISO_PROJECT": "test-project"}
args = ["ninja", "--enable_collector"]
args = ["ninja"]
result = siso._handle_collector_args(siso_path, args, env)
def start_collector_side_effect(siso_path, sockets_file, project, env):
env["SISO_COLLECTOR_ADDRESS"] = siso._OTLP_DEFAULT_TCP_ENDPOINT
return True
assert result == [
"ninja", "--enable_collector",
f"--collector_address={siso._OTLP_DEFAULT_TCP_ENDPOINT}"
]
mock_start_collector.side_effect = start_collector_side_effect
res_env = siso._handle_collector(siso_path, args, env)
assert res_env["SISO_COLLECTOR_ADDRESS"] == siso._OTLP_DEFAULT_TCP_ENDPOINT
mock_fetch.assert_called_once_with(args, env)
mock_start_collector.assert_called_once_with(siso_path, None,
"test-project")
"test-project", res_env)
@pytest.mark.skipif(sys.platform == "win32",
@@ -402,7 +318,7 @@ def test_handle_collector_args_fails(siso_test_fixture: Any,
siso_path = "path/to/siso"
env = {"SISO_PROJECT": "test-project", "XDG_RUNTIME_DIR": "/tmp/run"}
args = ["ninja", "--enable_collector"]
args = ["ninja"]
captured_args = []
@@ -412,14 +328,13 @@ def test_handle_collector_args_fails(siso_test_fixture: Any,
mocker.patch("siso._fetch_metrics_project",
side_effect=fetch_metrics_project_side_effect)
result = siso._handle_collector_args(siso_path, args, env)
res_env = siso._handle_collector(siso_path, args, env)
assert result == ["ninja", "--enable_collector=false"]
assert captured_args == [["ninja", "--enable_collector"]]
assert "SISO_COLLECTOR_ADDRESS" not in res_env
sockets_file = os.path.join("/tmp", "run", "testuser", "siso",
"test-project.sock")
mock_start_collector.assert_called_once_with(siso_path, sockets_file,
"test-project")
"test-project", res_env)
@pytest.fixture
@@ -509,7 +424,7 @@ def test_start_collector_removes_existing_socket_file(
}
mocker.patch("siso.json.loads",
side_effect=[status_healthy, config, config])
siso._start_collector(siso_path, sockets_file, project)
siso._start_collector(siso_path, sockets_file, project, {})
mock_os_path_exists.assert_called_with(sockets_file)
mock_os_remove.assert_called_with(sockets_file)
@@ -543,7 +458,7 @@ def test_start_collector_remove_socket_file_fails(
}
mocker.patch("siso.json.loads",
side_effect=[status_healthy, config, config])
siso._start_collector(siso_path, sockets_file, project)
siso._start_collector(siso_path, sockets_file, project, {})
mock_os_path_exists.assert_called_with(sockets_file)
mock_os_remove.assert_called_with(sockets_file)
@@ -576,43 +491,41 @@ def test_start_collector_remove_socket_file_fails(
],
"",
id="ninja_with_logs_no_project"),
pytest.param(
[], {},
["ninja", "-C", "out/Default", "--project=test-project"], "ninja",
True, {}, [
"ninja",
"-C",
"out/Default",
"--project=test-project",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--enable_collector",
"--metrics_project=test-project",
],
"",
id="ninja_with_logs_with_project_in_args"),
pytest.param(
[], {}, ["ninja", "-C", "out/Default"], "ninja", True,
{"SISO_PROJECT": "test-project"},
[
"ninja",
"-C",
"out/Default",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--enable_collector",
"--metrics_project=test-project",
],
"",
id="ninja_with_logs_with_project_in_env"),
pytest.param(
[], {},
["ninja", "-C", "out/Default", "--project=test-project"], "ninja",
True, {}, [
"ninja",
"-C",
"out/Default",
"--project=test-project",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--metrics_project=test-project",
],
"",
id="ninja_with_logs_with_project_in_args"),
pytest.param(
[], {}, ["ninja", "-C", "out/Default"], "ninja", True,
{"SISO_PROJECT": "test-project"},
[
"ninja",
"-C",
"out/Default",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--metrics_project=test-project",
],
"",
id="ninja_with_logs_with_project_in_env"),
pytest.param(
["-gflag"], {"ninja": ["-sflag"]}, ["ninja", "-C", "out/Default"],
"ninja", False, {}, [
@@ -661,32 +574,31 @@ def test_start_collector_remove_socket_file_fails(
% shlex.join(["ninja", "-sflag_only", "-C", "out/Default"]),
id="with_sisorc_subcmd_flags_only"
),
pytest.param(
["-gflag_tel"],
{"ninja": ["-sflag_tel"]},
["ninja", "-C", "out/Default"],
"ninja",
True,
{"SISO_PROJECT": "telemetry-project"},
[
"-gflag_tel",
"ninja",
"-sflag_tel",
"-C",
"out/Default",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--enable_collector",
"--metrics_project=telemetry-project",
],
"depot_tools/siso.py: %s\n"
% shlex.join(["-gflag_tel", "ninja", "-sflag_tel", "-C", "out/Default"]),
id="with_sisorc_global_and_subcmd_flags_and_telemetry"
),
pytest.param(
["-gflag_tel"],
{"ninja": ["-sflag_tel"]},
["ninja", "-C", "out/Default"],
"ninja",
True,
{"SISO_PROJECT": "telemetry-project"},
[
"-gflag_tel",
"ninja",
"-sflag_tel",
"-C",
"out/Default",
"--metrics_labels",
f"type=developer,tool=siso,host_os={siso._SYSTEM_DICT.get(sys.platform, sys.platform)}",
"--enable_cloud_monitoring",
"--enable_cloud_profiler",
"--enable_cloud_trace",
"--enable_cloud_logging",
"--metrics_project=telemetry-project",
],
"depot_tools/siso.py: %s\n"
% shlex.join(["-gflag_tel", "ninja", "-sflag_tel", "-C", "out/Default"]),
id="with_sisorc_global_and_subcmd_flags_and_telemetry"
),
pytest.param(
["-gflag_non_ninja"],
{"other_subcmd": ["-sflag_non_ninja"]},
@@ -705,9 +617,9 @@ def test_start_collector_remove_socket_file_fails(
% shlex.join(["-gflag_non_ninja", "other_subcmd", "-sflag_non_ninja", "-C", "out/Default"]),
id="with_sisorc_non_ninja_subcmd"
),])
def test_process_args(siso_subcmd_present: Any, global_flags: List[str],
subcmd_flags: Dict[str, List[str]], args: List[str],
subcmd: str, should_collect_logs: bool,
def test_process_args(global_flags: List[str], subcmd_flags: Dict[str,
List[str]],
args: List[str], subcmd: str, should_collect_logs: bool,
env: Dict[str, str], want: List[str], want_stderr: str,
siso_test_fixture: Any, mocker: Any) -> None:
mock_stderr = mocker.patch("sys.stderr", new_callable=io.StringIO)
@@ -874,17 +786,17 @@ def test_start_collector_dead_then_healthy(platform: str, creationflags: int,
}
mock_json_loads.side_effect = [status_healthy, config]
result = siso._start_collector(siso_path, None, project)
env = {}
result = siso._start_collector(siso_path, None, project, env)
assert result
m["subprocess_popen"].assert_called_once_with([
siso_path, "collector", "--project", project, "--collector_address",
siso._OTLP_DEFAULT_TCP_ENDPOINT
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
creationflags=creationflags)
m["subprocess_popen"].assert_called_once_with(
[siso_path, "collector", "--project", project],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=creationflags)
m["kill_collector"].assert_not_called()
@@ -923,17 +835,17 @@ def test_start_collector_unhealthy_then_healthy(
config_project_full
]
result = siso._start_collector(siso_path, None, project)
env = {}
result = siso._start_collector(siso_path, None, project, env)
assert result
m["subprocess_popen"].assert_called_once_with([
siso_path, "collector", "--project", project, "--collector_address",
siso._OTLP_DEFAULT_TCP_ENDPOINT
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
creationflags=0)
m["subprocess_popen"].assert_called_once_with(
[siso_path, "collector", "--project", project],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=0)
m["kill_collector"].assert_called_once()
@@ -969,7 +881,7 @@ def test_start_collector_already_healthy(start_collector_mocks: Dict[str, Any],
status_healthy, config_project_full, config_project_full
]
result = siso._start_collector(siso_path, None, project)
result = siso._start_collector(siso_path, None, project, {})
assert result
m["subprocess_popen"].assert_not_called()
@@ -986,16 +898,16 @@ def test_start_collector_never_healthy(start_collector_mocks: Dict[str, Any],
m["mock_conn"],
status_responses=[(404, None)])
siso._start_collector(siso_path, None, project)
env = {}
siso._start_collector(siso_path, None, project, env)
m["subprocess_popen"].assert_called_once_with([
siso_path, "collector", "--project", project, "--collector_address",
siso._OTLP_DEFAULT_TCP_ENDPOINT
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
creationflags=0)
m["subprocess_popen"].assert_called_once_with(
[siso_path, "collector", "--project", project],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=0)
m["kill_collector"].assert_not_called()
@@ -1034,17 +946,17 @@ def test_start_collector_healthy_after_retries(start_collector_mocks: Dict[str,
status_healthy, config_project_full, config_project_full
]
result = siso._start_collector(siso_path, None, project)
env = {}
result = siso._start_collector(siso_path, None, project, env)
assert result
m["subprocess_popen"].assert_called_once_with([
siso_path, "collector", "--project", project, "--collector_address",
siso._OTLP_DEFAULT_TCP_ENDPOINT
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
creationflags=0)
m["subprocess_popen"].assert_called_once_with(
[siso_path, "collector", "--project", project],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=0)
m["kill_collector"].assert_not_called()
@@ -1104,17 +1016,17 @@ def test_start_collector_with_sockets_file(
status_responses=list(http_status_responses),
config_responses=[(200, None)] * 20)
result = siso._start_collector(siso_path, sockets_file, project)
env = {}
result = siso._start_collector(siso_path, sockets_file, project, env)
assert result == expected_result
m["subprocess_popen"].assert_called_once_with([
siso_path, "collector", "--project", project, "--collector_address",
f"unix://{sockets_file}"
],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
creationflags=0)
m["subprocess_popen"].assert_called_once_with(
[siso_path, "collector", "--project", project],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
env=env,
creationflags=0)
m["kill_collector"].assert_not_called()
assert mock_os_exists.call_count == expected_os_exists_calls