mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
1e8e8b05de
Summary: Several of the tests started edenfs of fake_edenfs processes and didn't kill them at the end of the test. This adds proper cleanup functions to try and kill these processes when the test exits. This also eliminates using pexpect in these tests, since it isn't actually necessary here. Reviewed By: wez Differential Revision: D21084096 fbshipit-source-id: 4e92a99a5c398d4a78830ac51507ba34d7a6c0b1
71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2.
|
|
|
|
import pathlib
|
|
|
|
from .lib.fake_edenfs import FakeEdenFS
|
|
from .lib.service_test_case import (
|
|
ManagedFakeEdenFSMixin,
|
|
ServiceTestCaseBase,
|
|
service_test,
|
|
)
|
|
from .start_test import run_eden_start_with_real_daemon
|
|
|
|
|
|
class ServiceLogTestBase(ServiceTestCaseBase):
|
|
"""Test how the EdenFS service stores its logs.
|
|
"""
|
|
|
|
def setUp(self) -> None:
|
|
super().setUp()
|
|
self.eden_dir = self.make_temp_dir("eden")
|
|
|
|
@property
|
|
def log_file_path(self) -> pathlib.Path:
|
|
return self.eden_dir / "logs" / "edenfs.log"
|
|
|
|
|
|
@service_test
|
|
class ServiceLogFakeEdenFSTest(ServiceLogTestBase):
|
|
def test_fake_edenfs_writes_logs_to_file_in_eden_dir(self) -> None:
|
|
self.assertFalse(
|
|
self.log_file_path.exists(),
|
|
f"{self.log_file_path} should not exist before starting fake_edenfs",
|
|
)
|
|
with self.spawn_fake_edenfs(self.eden_dir):
|
|
self.assertTrue(
|
|
self.log_file_path.exists(),
|
|
f"fake_edenfs should create {self.log_file_path}",
|
|
)
|
|
self.assertIn("Starting fake edenfs daemon", self.log_file_path.read_text())
|
|
|
|
def test_fake_edenfs_appends_to_existing_log_file(self) -> None:
|
|
self.log_file_path.parent.mkdir(exist_ok=True, parents=True)
|
|
self.log_file_path.write_text("test log messages\n")
|
|
with self.spawn_fake_edenfs(self.eden_dir):
|
|
pass
|
|
self.assertIn("test log messages", self.log_file_path.read_text())
|
|
|
|
|
|
class ServiceLogRealEdenFSTest(ManagedFakeEdenFSMixin, ServiceLogTestBase):
|
|
def test_real_edenfs_writes_logs_to_file_in_eden_dir(self) -> None:
|
|
self.assertFalse(
|
|
self.log_file_path.exists(),
|
|
f"{self.log_file_path} should not exist before starting edenfs",
|
|
)
|
|
self.exit_stack.enter_context(
|
|
run_eden_start_with_real_daemon(
|
|
eden_dir=self.eden_dir,
|
|
etc_eden_dir=self.etc_eden_dir,
|
|
home_dir=self.home_dir,
|
|
systemd=False,
|
|
)
|
|
)
|
|
self.assertTrue(
|
|
self.log_file_path.exists(), f"edenfs should create {self.log_file_path}"
|
|
)
|
|
self.assertIn("Starting edenfs", self.log_file_path.read_text())
|