mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
Improve messaging of disk space doctor check
Summary: When `eden doctor` reports that your machine is low on free disk space, people don't know what to do next and ask for help in support groups. Make the message site-configurable so we can guide users to fixing this problem on their own. Reviewed By: chadaustin Differential Revision: D14583025 fbshipit-source-id: 96c6ae3da3879a7a82501c22ebc2fa8ccc4097c2
This commit is contained in:
parent
003414bad9
commit
c1c72692a4
@ -145,13 +145,23 @@ def check_disk_usage(
|
||||
|
||||
used = size - avail
|
||||
used_percent = float(used) / size
|
||||
|
||||
message = (
|
||||
"Eden lazily loads your files and needs enough disk space to "
|
||||
"store these files when loaded."
|
||||
)
|
||||
extra_message = instance.get_config_value(
|
||||
"doctor.low-disk-space-message", ""
|
||||
)
|
||||
if extra_message:
|
||||
message = f"{message} {extra_message}"
|
||||
|
||||
if avail <= prob_error_absolute_space_used_threshold:
|
||||
tracker.add_problem(
|
||||
Problem(
|
||||
f"{eden_mount_pt} "
|
||||
f"has only {str(avail)} bytes available. "
|
||||
f"Eden lazily loads your files and needs enough disk "
|
||||
f"space to store these files when loaded.",
|
||||
f"{message}",
|
||||
severity=ProblemSeverity.ERROR,
|
||||
)
|
||||
)
|
||||
@ -160,8 +170,7 @@ def check_disk_usage(
|
||||
Problem(
|
||||
f"{eden_mount_pt} "
|
||||
f"is {used_percent:.2%} full. "
|
||||
f"Eden lazily loads your files and needs enough disk "
|
||||
f"space to store these files when loaded.",
|
||||
f"{message}",
|
||||
severity=ProblemSeverity.ADVICE,
|
||||
)
|
||||
)
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
import collections
|
||||
import typing
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
from unittest.mock import patch
|
||||
|
||||
import eden.cli.doctor as doctor
|
||||
@ -35,9 +35,12 @@ class DiskUsageTest(DoctorTestBase):
|
||||
self.addCleanup(lambda: mock_getmountpt_and_deviceid.stop())
|
||||
mock_getmountpt_and_deviceid.return_value = "/"
|
||||
|
||||
def _check_disk_usage(self) -> List[ProblemBase]:
|
||||
def _check_disk_usage(
|
||||
self, instance: Optional[FakeEdenInstance] = None
|
||||
) -> List[ProblemBase]:
|
||||
problem_collector = ProblemCollector()
|
||||
instance = FakeEdenInstance(self.make_temporary_directory())
|
||||
if instance is None:
|
||||
instance = FakeEdenInstance(self.make_temporary_directory())
|
||||
|
||||
doctor.check_filesystems.check_disk_usage(
|
||||
tracker=problem_collector,
|
||||
@ -87,6 +90,39 @@ class DiskUsageTest(DoctorTestBase):
|
||||
problems = self._check_disk_usage()
|
||||
self.assertEqual(len(problems), 0)
|
||||
|
||||
def test_issue_includes_custom_message_from_config(self) -> None:
|
||||
self._mock_disk_usage(blocks=100_000_000, avail=500_000)
|
||||
instance = FakeEdenInstance(
|
||||
self.make_temporary_directory(),
|
||||
config={
|
||||
"doctor.low-disk-space-message": "Ask your administrator for help."
|
||||
},
|
||||
)
|
||||
problems = self._check_disk_usage(instance=instance)
|
||||
self.assertEqual(
|
||||
problems[0].description(),
|
||||
"/ has only 512000000 bytes available. "
|
||||
"Eden lazily loads your files and needs enough disk "
|
||||
"space to store these files when loaded. Ask your administrator "
|
||||
"for help.",
|
||||
)
|
||||
|
||||
self._mock_disk_usage(blocks=100_000_000, avail=2_000_000)
|
||||
instance = FakeEdenInstance(
|
||||
self.make_temporary_directory(),
|
||||
config={
|
||||
"doctor.low-disk-space-message": "Ask your administrator for help."
|
||||
},
|
||||
)
|
||||
problems = self._check_disk_usage(instance=instance)
|
||||
self.assertEqual(
|
||||
problems[0].description(),
|
||||
"/ is 98.00% full. "
|
||||
"Eden lazily loads your files and needs enough disk "
|
||||
"space to store these files when loaded. Ask your administrator "
|
||||
"for help.",
|
||||
)
|
||||
|
||||
|
||||
class ProblemCollector(ProblemTracker):
|
||||
problems: List[ProblemBase]
|
||||
|
Loading…
Reference in New Issue
Block a user