From fb193b1cd43f0e8c3b7e5f69f183b9abe7e83761 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 15 Mar 2016 14:50:37 +0100 Subject: Get accurate progress reporting in apt update again For the non-pdiff case, we have can have accurate progress reporting because after fetching the {,In}Release files we know how many IndexFiles will be fetched and what size they have. Therefore init the filesize early (in pkgAcqIndex::Init) and ensure that in Acquire::Pulse() looks at already downloaded bits when calculating the progress in Acquire::Pulse. Also improve debug output of Debug::acquire::progress --- test/integration/test-apt-progress-fd | 8 +++---- test/integration/test-apt-update-not-modified | 6 ++++-- test/integration/test-apt-update-reporting | 31 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100755 test/integration/test-apt-update-reporting (limited to 'test/integration') diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd index f0d208967..c6650bc2e 100755 --- a/test/integration/test-apt-progress-fd +++ b/test/integration/test-apt-progress-fd @@ -16,7 +16,7 @@ setupaptarchive exec 3> apt-progress.log testsuccess aptget install testing=0.1 -y -o APT::Status-Fd=3 testfileequal './apt-progress.log' 'dlstatus:1:0:Retrieving file 1 of 1 -dlstatus:1:20:Retrieving file 1 of 1 +dlstatus:1:100:Retrieving file 1 of 1 pmstatus:dpkg-exec:0:Running dpkg pmstatus:testing:0:Installing testing (amd64) pmstatus:testing:16.6667:Preparing testing (amd64) @@ -32,7 +32,7 @@ pmstatus:dpkg-exec:83.3333:Running dpkg' exec 3> apt-progress.log testsuccess aptget install testing=0.8.15 -y -o APT::Status-Fd=3 testfileequal './apt-progress.log' 'dlstatus:1:0:Retrieving file 1 of 1 -dlstatus:1:20:Retrieving file 1 of 1 +dlstatus:1:100:Retrieving file 1 of 1 pmstatus:dpkg-exec:0:Running dpkg pmstatus:testing:0:Installing testing (amd64) pmstatus:testing:16.6667:Preparing testing (amd64) @@ -48,7 +48,7 @@ pmstatus:dpkg-exec:83.3333:Running dpkg' exec 3> apt-progress.log testsuccess aptget install testing=0.8.15 --reinstall -y -o APT::Status-Fd=3 testfileequal './apt-progress.log' 'dlstatus:1:0:Retrieving file 1 of 1 -dlstatus:1:20:Retrieving file 1 of 1 +dlstatus:1:100:Retrieving file 1 of 1 pmstatus:dpkg-exec:0:Running dpkg pmstatus:testing:0:Installing testing (amd64) pmstatus:testing:16.6667:Preparing testing (amd64) @@ -74,7 +74,7 @@ pmstatus:dpkg-exec:75:Running dpkg' exec 3> apt-progress.log testsuccess aptget install testing2:i386 -y -o APT::Status-Fd=3 testfileequal './apt-progress.log' 'dlstatus:1:0:Retrieving file 1 of 1 -dlstatus:1:20:Retrieving file 1 of 1 +dlstatus:1:100:Retrieving file 1 of 1 pmstatus:dpkg-exec:0:Running dpkg pmstatus:testing2:0:Installing testing2 (i386) pmstatus:testing2:16.6667:Preparing testing2 (i386) diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified index 82e69d5d5..ce3bc0dd3 100755 --- a/test/integration/test-apt-update-not-modified +++ b/test/integration/test-apt-update-not-modified @@ -34,6 +34,7 @@ Reading package lists..." aptget update # readd arch so its downloaded again… configarchitecture 'amd64' 'i386' # … but oh noes, hashsum mismatch! + SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') find aptarchive/dists/unstable/main/binary-amd64/ -type f -delete cat >> aptarchive/dists/unstable/main/binary-amd64/Packages <> aptarchive/dists/unstable/main/binary-amd64/Packages <progress.log >ignore.out + +prev_percent=0.0 +while read line; do + percent="$(echo "$line"|cut -b2-6)" + # need to cut the decimal point and digits because sh can not do + # float compare + if [ "${percent%%.*}" -lt "${prev_percent%%.*}" ]; then + echo "progress goes backwards" + cat progress.log + exit 1 + fi + prev_percent="$percent" +done < progress.log + -- cgit v1.2.3