From a2cb87afcbc89d1f8e770c26121a75d9c1654458 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Thu, 20 Mar 2025 15:03:23 +0100 Subject: solver3: Use zstd-compressed, base64-encoded dumps Store the solver dumps with zstd compression and base64-encode them in the crash report; such that they take up significantly less space and can fit in cassandra's schema. Base64 is wrapped at 76 characters as the base64 tool does. Do some magic std::string_view conversion to avoid string copies for the substr() used to get 76 characters at a time. Note we can rely on substr(i, 76) to handle less than 76 characters just fine; it uses std::min(76, size() - i) characters. --- test/integration/test-solver3-evaluation | 96 +------------------------------- 1 file changed, 2 insertions(+), 94 deletions(-) (limited to 'test') diff --git a/test/integration/test-solver3-evaluation b/test/integration/test-solver3-evaluation index a873d5b21..b05e7cb9b 100755 --- a/test/integration/test-solver3-evaluation +++ b/test/integration/test-solver3-evaluation @@ -32,99 +32,7 @@ Title: Failure: The 3.0 solver produced a worse result SourcePackage: apt ErrorMessage: AptSolverDump: - Request: EDSP 0.5 - Architecture: amd64 - Architectures: amd64 - Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee - Install: x:amd64 y:amd64 - Solver: internal - - Package: a - Architecture: all - Version: 3 - APT-ID: 2 - Source: a - Source-Version: 3 - Priority: optional - Section: other - Size: 42 - APT-Release: - a=unstable,n=sid,c=main,b=all - APT-Pin: 500 - APT-Candidate: yes - Depends: c - - Package: b - Architecture: all - Version: 3 - APT-ID: 3 - Source: b - Source-Version: 3 - Priority: optional - Section: other - Size: 42 - APT-Release: - a=unstable,n=sid,c=main,b=all - APT-Pin: 500 - APT-Candidate: yes - - Package: c - Architecture: all - Version: 3 - APT-ID: 4 - Source: c - Source-Version: 3 - Priority: optional - Section: other - Size: 42 - APT-Release: - a=unstable,n=sid,c=main,b=all - APT-Pin: 500 - APT-Candidate: yes - - Package: x - Architecture: all - Version: 3 - APT-ID: 0 - Source: x - Source-Version: 3 - Priority: optional - Section: other - Size: 42 - APT-Release: - a=unstable,n=sid,c=main,b=all - APT-Pin: 500 - APT-Candidate: yes - Depends: a | b - - Package: y - Architecture: all - Version: 3 - APT-ID: 1 - Source: y - Source-Version: 3 - Priority: optional - Section: other - Size: 42 - APT-Release: - a=unstable,n=sid,c=main,b=all - APT-Pin: 500 - APT-Candidate: yes - Depends: b | a - - Package: apport - Architecture: all - Version: 3 - APT-ID: 6 - Source: apport - Source-Version: 3 - Priority: optional - Section: other - Installed: yes - APT-Pin: 100 - APT-Candidate: yes - " cat rootdir/var/crash/apt-edsp.$(id -u).crash - +$(cat rootdir/var/log/apt/edsp.log.zst | base64 | sed 's#^# #')" cat rootdir/var/crash/apt-edsp.$(id -u).crash testsuccessequal "Request: EDSP 0.5 Architecture: amd64 @@ -217,7 +125,7 @@ Section: other Installed: yes APT-Pin: 100 APT-Candidate: yes -" cat rootdir/var/log/apt/edsp.log +" apthelper cat-file rootdir/var/log/apt/edsp.log.zst testfailureequal "Reading package lists... Building dependency tree... -- cgit v1.2.3-70-g09d2 From 61b3b1840568b223baad08da1eb9a1fb5d6e7f91 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Thu, 20 Mar 2025 15:16:58 +0100 Subject: solver3: Avoid empty error message in evaluation crash report whoopsie does not accept empty values --- apt-private/private-install.cc | 9 ++++++--- test/integration/test-solver3-evaluation | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index cf92f91ad..f1211d25e 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -124,9 +124,12 @@ static void WriteApportReport(pkgCacheFile &Cache, std::string &title, std::vect << "Title: " << title << "\n" << "SourcePackage: apt\n"; - crash << "ErrorMessage:\n"; - for (auto &error : errors) - crash << " " << error << "\n"; + if (not errors.empty()) + { + crash << "ErrorMessage:\n"; + for (auto &error : errors) + crash << " " << error << "\n"; + } std::ifstream toCopy(edspDump.Name()); std::ostringstream readStream; diff --git a/test/integration/test-solver3-evaluation b/test/integration/test-solver3-evaluation index b05e7cb9b..c01ec9608 100755 --- a/test/integration/test-solver3-evaluation +++ b/test/integration/test-solver3-evaluation @@ -30,7 +30,6 @@ Date: Sun Mar 9 00:08:41 2025 Package: apt Title: Failure: The 3.0 solver produced a worse result SourcePackage: apt -ErrorMessage: AptSolverDump: $(cat rootdir/var/log/apt/edsp.log.zst | base64 | sed 's#^# #')" cat rootdir/var/crash/apt-edsp.$(id -u).crash -- cgit v1.2.3-70-g09d2