Diff of the two buildlogs:

--
--- b1/build.log	2025-03-20 00:07:36.269724025 +0000
+++ b2/build.log	2025-03-20 00:08:23.119611545 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Wed Mar 19 12:03:39 -12 2025
-I: pbuilder-time-stamp: 1742429019
+I: Current time: Wed Apr 22 20:30:37 +14 2026
+I: pbuilder-time-stamp: 1776839437
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -24,52 +24,84 @@
 dpkg-source: info: applying 0001-test_helper-drop-bundler-usage.patch
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/675592/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/D01_modify_environment starting
+debug: Running on ionos5-amd64.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Apr 22 06:30 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='amd64'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='amd64'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=amd64
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 '
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=x86_64
+  HOST_ARCH=amd64
   IFS=' 	
   '
-  INVOCATION_ID='c72babfdab1749a3b48fcbe73cb87c88'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='675592'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=ab7bfb0cc05d4833afd425466c7dd656
+  LANG=C
+  LANGUAGE=et_EE:et
+  LC_ALL=C
+  MACHTYPE=x86_64-pc-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=3961910
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.RPr8UM1a/pbuilderrc_WvNi --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.RPr8UM1a/b1 --logfile b1/build.log ruby-rack-cache_1.17.0-1.dsc'
-  SUDO_GID='110'
-  SUDO_UID='105'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://46.16.76.132:3128'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.RPr8UM1a/pbuilderrc_Z83C --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.RPr8UM1a/b2 --logfile b2/build.log ruby-rack-cache_1.17.0-1.dsc'
+  SUDO_GID=110
+  SUDO_UID=105
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://213.165.73.152:3128
 I: uname -a
-  Linux ionos1-amd64 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux
+  Linux i-capture-the-hostname 6.12.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.12-1~bpo12+1 (2025-02-23) x86_64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Mar  4 11:20 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/675592/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Mar  4  2025 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -251,7 +283,7 @@
 Get: 134 http://deb.debian.org/debian unstable/main amd64 ruby-ruby2-keywords all 0.0.5-1 [4300 B]
 Get: 135 http://deb.debian.org/debian unstable/main amd64 ruby-mocha all 2.4.2-2 [60.7 kB]
 Get: 136 http://deb.debian.org/debian unstable/main amd64 ruby-rack all 3.1.12-1 [96.9 kB]
-Fetched 48.8 MB in 2s (19.7 MB/s)
+Fetched 48.8 MB in 1s (44.2 MB/s)
 Preconfiguring packages ...
 Selecting previously unselected package libpython3.13-minimal:amd64.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19784 files and directories currently installed.)
@@ -704,8 +736,8 @@
 Setting up tzdata (2025a-2) ...
 
 Current default time zone: 'Etc/UTC'
-Local time is now:      Thu Mar 20 00:05:46 UTC 2025.
-Universal Time is now:  Thu Mar 20 00:05:46 UTC 2025.
+Local time is now:      Wed Apr 22 06:31:04 UTC 2026.
+Universal Time is now:  Wed Apr 22 06:31:04 UTC 2026.
 Run 'dpkg-reconfigure tzdata' if you wish to change it.
 
 Setting up ruby-minitest (5.25.4-2) ...
@@ -830,7 +862,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/ruby-rack-cache-1.17.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../ruby-rack-cache_1.17.0-1_source.changes
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/ruby-rack-cache-1.17.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../ruby-rack-cache_1.17.0-1_source.changes
 dpkg-buildpackage: info: source package ruby-rack-cache
 dpkg-buildpackage: info: source version 1.17.0-1
 dpkg-buildpackage: info: source distribution unstable
@@ -863,7 +899,7 @@
 │ ruby-rack-cache: Installing files and building extensions for ruby3.3        │
 └──────────────────────────────────────────────────────────────────────────────┘
 
-/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250319-706111-e4b7dc/gemspec
+/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260422-3967247-yyeukt/gemspec
 WARNING:  open-ended dependency on rack (>= 0.4) is not recommended
   if rack is semantically versioned, use:
     add_runtime_dependency "rack", "~> 0.4"
@@ -886,7 +922,7 @@
   Name: rack-cache
   Version: 1.17.0
   File: rack-cache-1.17.0.gem
-/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-rack-cache/usr/share/rubygems-integration/all /tmp/d20250319-706111-e4b7dc/rack-cache-1.17.0.gem
+/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-rack-cache/usr/share/rubygems-integration/all /tmp/d20260422-3967247-yyeukt/rack-cache-1.17.0.gem
 /build/reproducible-path/ruby-rack-cache-1.17.0/debian/ruby-rack-cache/usr/share/rubygems-integration/all/gems/rack-cache-1.17.0/example/sinatra/app.rb
 /build/reproducible-path/ruby-rack-cache-1.17.0/debian/ruby-rack-cache/usr/share/rubygems-integration/all/gems/rack-cache-1.17.0/example/sinatra/views/index.erb
 /build/reproducible-path/ruby-rack-cache-1.17.0/debian/ruby-rack-cache/usr/share/rubygems-integration/all/gems/rack-cache-1.17.0/gems/rack_v2-1.rb
@@ -968,324 +1004,324 @@
 /build/reproducible-path/ruby-rack-cache-1.17.0/test/entity_store_test.rb:329: warning: assigned but unused variable - size
 /build/reproducible-path/ruby-rack-cache-1.17.0/test/entity_store_test.rb:336: warning: assigned but unused variable - size
 /build/reproducible-path/ruby-rack-cache-1.17.0/test/meta_store_test.rb:149: warning: assigned but unused variable - req
-Run options: -v --seed 29479
+Run options: -v --seed 9106
 
 # Running:
 
-Rack::Cache::CacheControl#test_0001_takes no args and initializes with an empty set of values = 0.00 s = .
-Rack::Cache::CacheControl#test_0003_takes a String with a single name=value pair = 0.00 s = .
-Rack::Cache::CacheControl#test_0011_sorts alphabetically with boolean directives before value directives = 0.00 s = .
-Rack::Cache::CacheControl#test_0023_responds to #no_cache? non-truthfully when no no-cache directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0006_takes a String with a bunch of all kinds of stuff = 0.00 s = .
-Rack::Cache::CacheControl#test_0009_removes all directives with #clear = 0.00 s = .
-Rack::Cache::CacheControl#test_0025_responds to #must_revalidate? non-truthfully when no must-revalidate directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0010_converts self into header String with #to_s = 0.00 s = .
-Rack::Cache::CacheControl#test_0014_responds to #shared_max_age with an integer when s-maxage directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0022_responds to #no_cache? truthfully when no-cache directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0008_strips blank segments = 0.00 s = .
-Rack::Cache::CacheControl#test_0020_responds to #private? truthfully when private directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0002_takes a String and parses it into a Hash when created = 0.00 s = .
-Rack::Cache::CacheControl#test_0021_responds to #private? non-truthfully when no private directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0026_responds to #proxy_revalidate? truthfully when proxy-revalidate directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0017_responds to #reverse_max_age with nil when no r-maxage directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0018_responds to #public? truthfully when public directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0027_responds to #proxy_revalidate? non-truthfully when no proxy-revalidate directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0024_responds to #must_revalidate? truthfully when must-revalidate directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0012_responds to #max_age with an integer when max-age directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0004_takes a String with multiple name=value pairs = 0.00 s = .
-Rack::Cache::CacheControl#test_0016_responds to #reverse_max_age with an integer when r-maxage directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0005_takes a String with a single flag value = 0.00 s = .
-Rack::Cache::CacheControl#test_0019_responds to #public? non-truthfully when no public directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0007_strips leading and trailing spaces from header value = 0.00 s = .
-Rack::Cache::CacheControl#test_0015_responds to #shared_max_age with nil when no s-maxage directive present = 0.00 s = .
-Rack::Cache::CacheControl#test_0013_responds to #max_age with nil when no max-age directive present = 0.00 s = .
-Rack::Cache::Options::#set#test_0002_sets a String option as string = 0.00 s = .
-Rack::Cache::Options::#set#test_0003_sets all key/value pairs when given a Hash = 0.00 s = .
-Rack::Cache::Options::#set#test_0001_sets a Symbol option as rack-cache.symbol = 0.00 s = .
-Rack::Cache::Response::#ttl#test_0002_uses the expires header when no max-age is present = 0.00 s = .
-Rack::Cache::Response::#ttl#test_0003_returns negative values when expires is in part = 0.00 s = .
-Rack::Cache::Response::#ttl#test_0001_is nil when no expires or cache-control headers present = 0.00 s = .
-Rack::Cache::Response::#ttl#test_0004_uses the cache-control max-age value when present = 0.00 s = .
-Rack::Cache::Context::with responses that include a Vary header#test_0001_serves from cache when headers match = 0.02 s = .
-Rack::Cache::Context::with responses that include a Vary header#test_0002_stores multiple responses when headers differ = 0.02 s = .
-Rack::Cache::EntityStore::Disk#test_0002_stores bodies with #write = 0.01 s = .
-Rack::Cache::EntityStore::Disk#test_0011_can store largish bodies with binary data = 0.01 s = .
-Rack::Cache::EntityStore::Disk#test_0001_responds to all required messages = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0010_returns nil from #open when key does not exist = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0008_returns nil from #read when key does not exist = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0004_correctly determines whether cached body exists for key with #exist? = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0015_spreads data over a 36² hash radius = 0.07 s = .
-Rack::Cache::EntityStore::Disk#test_0009_returns a Rack compatible body from #open = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0005_can read data written with #write = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0003_takes a ttl parameter for #write = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0007_returns the entire body as a String from #read = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0014_produces a body that responds to #to_path = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0013_takes a path to ::new and creates the directory = 0.00 s = .
-Rack::Cache::EntityStore::Disk#test_0012_deletes stored entries with #purge = 0.00 s = .
-Rack::Cache::Storage::Noop Store URIs#test_0001_resolves Noop meta store URIs = 0.00 s = .
-Rack::Cache::MetaStore::Heap::logging writes#test_0001_passes a TTL to the stores is use_native_ttl is truthy = 0.00 s = .
-Rack::Cache::Response::#max_age#test_0002_uses s-maxage cache control when no r-maxage directive present = 0.00 s = .
-Rack::Cache::Response::#max_age#test_0003_falls back to max-age when no r/s-maxage directive present = 0.00 s = .
-Rack::Cache::Response::#max_age#test_0005_gives a #max_age of nil when no freshness information available = 0.00 s = .
-Rack::Cache::Response::#max_age#test_0001_uses r-maxage cache control directive when present = 0.00 s = .
-Rack::Cache::Response::#max_age#test_0004_falls back to expires when no max-age or r/s-maxage directive present = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0002_accepts bodies with #write = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0004_always responds to #exist? with true, regardless of the content having been saved before = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0009_responds to #purge and returns nil = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0008_returns a Rack compatible body from #open = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0001_responds to all required messages = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0005_always responds to #read with an empty String = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0003_takes a ttl parameter for #write = 0.00 s = .
-Rack::Cache::EntityStore::Noop#test_0007_always responds to #open with empty array = 0.00 s = .
-Rack::Cache::Options#test_0007_allows log verbosity to be configured = 0.00 s = .
-Rack::Cache::Options#test_0002_allows setting multiple options via assignment = 0.00 s = .
-Rack::Cache::Options#test_0003_allows storing the value as a block = 0.00 s = .
-Rack::Cache::Options#test_0001_makes options declared with option_accessor available as attributes = 0.00 s = .
-Rack::Cache::Options#test_0006_allows the entity store to be configured = 0.00 s = .
-Rack::Cache::Options#test_0005_allows the meta store to be configured = 0.00 s = .
-Rack::Cache::Options#test_0004_allows the cache key generator to be configured = 0.00 s = .
-Rack::Cache::Key#test_0002_handles badly encoded params = 0.00 s = .
-Rack::Cache::Key#test_0010_ignores params based on configuration = 0.00 s = .
-Rack::Cache::Key#test_0008_sorts the query string by key/value after decoding = 0.00 s = .
-Rack::Cache::Key#test_0009_is in order of scheme, host, path, params = 0.00 s = .
-Rack::Cache::Key#test_0006_includes path = 0.00 s = .
-Rack::Cache::Key#test_0004_includes the scheme = 0.00 s = .
-Rack::Cache::Key#test_0011_does not include query when all params are ignored = 0.00 s = .
-Rack::Cache::Key#test_0001_sorts params = 0.00 s = .
-Rack::Cache::Key#test_0005_includes host = 0.00 s = .
-Rack::Cache::Key#test_0003_doesn't confuse encoded equals sign with query string separator = 0.00 s = .
-Rack::Cache::Key#test_0007_does not include question mark if there is no query string = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0002_stores bodies with #write = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0011_can store largish bodies with binary data = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0001_responds to all required messages = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0010_returns nil from #open when key does not exist = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0008_returns nil from #read when key does not exist = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0004_correctly determines whether cached body exists for key with #exist? = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0014_uses its own Hash with no args to ::new = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0009_returns a Rack compatible body from #open = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0005_can read data written with #write = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0003_takes a ttl parameter for #write = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0007_returns the entire body as a String from #read = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0013_takes a Hash to ::new = 0.00 s = .
-Rack::Cache::EntityStore::Heap#test_0012_deletes stored entries with #purge = 0.00 s = .
-Rack::Cache::Response::#validateable?#test_0002_is true when etag header present = 0.00 s = .
-Rack::Cache::Response::#validateable?#test_0003_is false when no validator is present = 0.00 s = .
-Rack::Cache::Response::#validateable?#test_0001_is true when last-modified header present = 0.00 s = .
-Rack::Cache::Response::#expire!#test_0002_sets the Age to be equal to the r-maxage when the three max-age and r/s-maxage present = 0.00 s = .
-Rack::Cache::Response::#expire!#test_0003_sets the Age to be equal to the s-maxage when both max-age and s-maxage present = 0.00 s = .
-Rack::Cache::Response::#expire!#test_0005_does nothing when the response does not include freshness information = 0.00 s = .
-Rack::Cache::Response::#expire!#test_0001_sets the Age to be equal to the max-age = 0.00 s = .
-Rack::Cache::Response::#expire!#test_0004_does nothing when the response is already stale/expired = 0.00 s = .
-Rack::Cache::Response::#expires#test_0002_returns a Time if the expires header is parseable = 0.00 s = .
-Rack::Cache::Response::#expires#test_0003_returns nil if the expires header is not parseable = 0.00 s = .
-Rack::Cache::Response::#expires#test_0001_returns nil if there is no expires header = 0.00 s = .
-Rack::Cache::Response::#cache_control#test_0001_handles multiple name=value pairs = 0.00 s = .
-Rack::Cache::Response::#cache_control#test_0002_removes the header when given an empty hash = 0.00 s = .
-Rack::Cache::Response#test_0001_marks Rack tuples with string typed statuses as cacheable = 0.00 s = .
-Rack::Cache::Response#test_0002_responds to #to_a with a Rack response tuple = 0.00 s = .
-Rack::Cache::Storage#test_0007_clears all URI -> store mappings with #clear = 0.00 s = .
-Rack::Cache::Storage#test_0002_passes options to the underlying stores = 0.00 s = .
-Rack::Cache::Storage#test_0003_creates a new MetaStore for URI if none exists = 0.00 s = .
-Rack::Cache::Storage#test_0001_fails when an unknown URI scheme is provided = 0.00 s = .
-Rack::Cache::Storage#test_0006_returns an existing EntityStore instance for URI that exists = 0.00 s = .
-Rack::Cache::Storage#test_0005_creates a new EntityStore for URI if none exists = 0.00 s = .
-Rack::Cache::Storage#test_0004_returns an existing MetaStore instance for URI that exists = 0.00 s = .
-Rack::Cache::Storage::Disk Store URIs#test_0002_resolves file: entity store URIs = 0.00 s = .
+Rack::Cache::Response::#vary_header_names#test_0003_parses multiple header name values separated by spaces = 0.00 s = .
+Rack::Cache::Response::#vary_header_names#test_0004_parses multiple header name values separated by commas = 0.00 s = .
+Rack::Cache::Response::#vary_header_names#test_0002_parses a single header name value = 0.00 s = .
+Rack::Cache::Response::#vary_header_names#test_0001_returns an empty Array when no Vary header is present = 0.00 s = .
+Rack::Cache::Response::#private=#test_0002_removes the public cache-control directive = 0.00 s = .
+Rack::Cache::Response::#private=#test_0001_adds the private cache-control directive when set true = 0.00 s = .
 Rack::Cache::Storage::Disk Store URIs#test_0003_resolves disk: meta store URIs = 0.00 s = .
-Rack::Cache::Storage::Disk Store URIs#test_0001_resolves file: meta store URIs = 0.00 s = .
 Rack::Cache::Storage::Disk Store URIs#test_0004_resolves disk: entity store URIs = 0.00 s = .
-Rack::Cache::MetaStore#test_0002_has not implemented write = 0.00 s = .
-Rack::Cache::MetaStore#test_0003_has not implemented purge = 0.00 s = .
-Rack::Cache::MetaStore#test_0001_has not implemented read = 0.00 s = .
-Rack::Cache#test_0002_takes an options Hash = 0.00 s = .
-Rack::Cache#test_0003_sets options provided in the options Hash = 0.00 s = .
-Rack::Cache#test_0001_takes a backend and returns a middleware component = 0.00 s = .
-Rack::Cache#test_0004_takes a block; executes it during initialization = 0.00 s = .
-Rack::Cache::MetaStore::Disk::logging writes#test_0001_passes a TTL to the stores is use_native_ttl is truthy = 0.00 s = .
-Rack::Cache::Response::#date#test_0002_returns the current time if present but not parseable = 0.00 s = .
-Rack::Cache::Response::#date#test_0003_uses the current time when no Date header present = 0.00 s = .
-Rack::Cache::Response::#date#test_0001_uses the Date header if present and parseable = 0.00 s = .
-Rack::Cache::Response::#date#test_0004_returns the correct date when the header is modified directly = 0.00 s = .
-Rack::Cache::Response::#private=#test_0001_adds the private cache-control directive when set true = 0.00 s = .
-Rack::Cache::Response::#private=#test_0002_removes the public cache-control directive = 0.00 s = .
-Rack::Cache::Context#test_0021_reloads responses when cache hits but no-cache request directive present when allow_reload is set true = 0.02 s = .
-Rack::Cache::Context#test_0070_fetches full response when cache stale and no validators present = 0.00 s = .
+Rack::Cache::Storage::Disk Store URIs#test_0002_resolves file: entity store URIs = 0.00 s = .
+Rack::Cache::Storage::Disk Store URIs#test_0001_resolves file: meta store URIs = 0.00 s = .
+Rack::Cache::Context::with responses that include a Vary header#test_0002_stores multiple responses when headers differ = 0.01 s = .
+Rack::Cache::Context::with responses that include a Vary header#test_0001_serves from cache when headers match = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0008_can read and write key: 'http://example.com:8080/' = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0011_can read and write fairly large keys = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0028_invalidates meta and entity store entries with #invalidate = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0015_supports a ttl parameter for #write = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0009_can read and write key: '/test?x=y' = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0036_stores multiple responses for each Vary combination = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0027_restores response body from entity store with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0006_returns nil from #purge = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0025_warns once if purge is not implemented = WARNING: Future releases may require purge implementation for Rack::Cache::MetaStore::Disk
+0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0033_stores multiple responses for each Vary combination = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0037_overwrites non-varying responses with #store = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0029_succeeds quietly when #invalidate called with no matching entries = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0012_allows custom cache keys from block = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0034_overwrites non-varying responses with #store = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0005_succeeds when purging non-existing entries = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0017_can handle objects that can only be read once = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0039_removes the Age response header before storing = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0001_writes a list of negotation tuples with #write = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0018_sets the x-content-digest response header before storing = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0020_does not find an entry with #lookup when none exists = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0035_does not return entries that Vary with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0032_does not return entries that Vary with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0021_canonizes urls for cache keys = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0007_can read and write key: '/test' = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0026_restores response headers properly with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0003_reads an empty list with #read when nothing cached at key = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0031_gracefully degrades if the cache store stops working = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0023_purges meta store entry when the body does not exist = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0014_does not blow up when given a non-marhsalable object with an ALL_CAPS key = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0004_removes entries for key with #purge = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0030_does not remove response x-status with #invalidate = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0016_stores a cache entry = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0013_allows custom cache keys from class = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0010_can read and write key: '/test?x=y&p=q' = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0002_reads a list of negotation tuples with #read = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0022_does not find an entry with #lookup when the body does not exist = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0024_purges meta store entry when the entry does not contain the digest header = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0019_finds a stored entry with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Disk#test_0038_removes the Age response header before storing = 0.00 s = .
+Rack::Cache::Response::#vary#test_0003_can be checked for existence using the #vary? method = 0.00 s = .
+Rack::Cache::Response::#vary#test_0002_returns the literal value of the Vary header = 0.00 s = .
+Rack::Cache::Response::#vary#test_0001_is nil when no Vary header is present = 0.00 s = .
+Rack::Cache::Context#test_0021_reloads responses when cache hits but no-cache request directive present when allow_reload is set true = 0.00 s = .
+Rack::Cache::Context#test_0016_responds with 304 when if-modified-since matches last-modified = 0.00 s = .
+Rack::Cache::Context#test_0073_replaces cached responses when validation results in non-304 response = 0.00 s = .
+Rack::Cache::Context#test_0054_does not cache 503 responses = 0.00 s = .
+Rack::Cache::Context#test_0047_does not cache 414 responses = 0.00 s = .
+Rack::Cache::Context#test_0005_doesnt invalidate on options requests = 0.00 s = .
+Rack::Cache::Context#test_0069_does not assign default_ttl when response has must-revalidate directive = 0.00 s = .
+Rack::Cache::Context#test_0024_returns a stale cache entry when max-age request directive is exceeded when allow_revalidate and fault_tolerant options are set to true and the remote server returns a connection error = 0.00 s = .
+Rack::Cache::Context#test_0019_validates private responses cached on the client = 0.00 s = .
+Rack::Cache::Context#test_0031_does not cache 206 responses = 0.00 s = .
 Rack::Cache::Context#test_0065_hits cached response with expires header = 0.00 s = .
-Rack::Cache::Context#test_0001_passes options to the underlying stores = 0.00 s = .
-Rack::Cache::Context#test_0044_does not cache 411 responses = 0.00 s = .
-Rack::Cache::Context#test_0043_does not cache 409 responses = 0.00 s = .
-Rack::Cache::Context#test_0049_does not cache 416 responses = 0.00 s = .
-Rack::Cache::Context#test_0075_passes HEAD requests through directly on pass = 0.00 s = .
+Rack::Cache::Context#test_0067_hits cached response with s-maxage directive = 0.00 s = .
 Rack::Cache::Context#test_0076_uses cache to respond to HEAD requests when fresh = 0.00 s = .
-Rack::Cache::Context#test_0041_does not cache 407 responses = 0.00 s = .
-Rack::Cache::Context#test_0062_caches responses with a s-maxage directive = 0.00 s = .
-Rack::Cache::Context#test_0050_does not cache 417 responses = 0.00 s = .
-Rack::Cache::Context#test_0063_caches responses with a last-modified validator but no freshness information = 0.00 s = .
-Rack::Cache::Context#test_0010_does cache with Authorization request header and public response = 0.00 s = .
-Rack::Cache::Context#test_0047_does not cache 414 responses = 0.00 s = .
-Rack::Cache::Context#test_0071_validates cached responses with last-modified and no freshness information = 0.00 s = .
-Rack::Cache::Context#test_0007_invalidates on put requests = 0.00 s = .
-Rack::Cache::Context#test_0051_does not cache 500 responses = 0.00 s = .
+Rack::Cache::Context#test_0014_does remove all configured ignore_headers from a cacheable response = 0.00 s = .
+Rack::Cache::Context#test_0023_revalidates fresh cache entry when max-age request directive is exceeded when allow_revalidate option is set true = 0.00 s = .
 Rack::Cache::Context#test_0017_responds with 304 when if-none-match matches etag = 0.00 s = .
-Rack::Cache::Context#test_0003_passes on rack-cache.force-pass = 0.00 s = .
-Rack::Cache::Context#test_0067_hits cached response with s-maxage directive = 0.00 s = .
+Rack::Cache::Context#test_0078_passes if there was a metastore exception = 0.00 s = .
+Rack::Cache::Context#test_0043_does not cache 409 responses = 0.00 s = .
 Rack::Cache::Context#test_0011_does not cache with Cookie header and non public response = 0.00 s = .
-Rack::Cache::Context#test_0014_does remove all configured ignore_headers from a cacheable response = 0.00 s = .
-Rack::Cache::Context#test_0053_does not cache 502 responses = 0.00 s = .
-Rack::Cache::Context#test_0069_does not assign default_ttl when response has must-revalidate directive = 0.00 s = .
-Rack::Cache::Context#test_0077_invalidates cached responses on POST = 0.00 s = .
-Rack::Cache::Context#test_0038_does not cache 403 responses = 0.00 s = .
-Rack::Cache::Context#test_0033_does not cache 304 responses = 0.00 s = .
-Rack::Cache::Context#test_0039_does not cache 405 responses = 0.00 s = .
-Rack::Cache::Context#test_0034_does not cache 305 responses = 0.00 s = .
-Rack::Cache::Context#test_0073_replaces cached responses when validation results in non-304 response = 0.00 s = .
-Rack::Cache::Context#test_0009_does not cache with Authorization request header and non public response = 0.00 s = .
-Rack::Cache::Context#test_0027_does not cache 201 responses = 0.00 s = .
-Rack::Cache::Context#test_0008_invalidates on delete requests = 0.00 s = .
-Rack::Cache::Context#test_0080_logs to rack.logger if available = 0.00 s = .
 Rack::Cache::Context#test_0037_does not cache 402 responses = 0.00 s = .
-Rack::Cache::Context#test_0006_invalidates on post requests = 0.00 s = .
+Rack::Cache::Context#test_0013_does remove set-cookie response header from a cacheable response = 0.00 s = .
+Rack::Cache::Context#test_0049_does not cache 416 responses = 0.00 s = .
 Rack::Cache::Context#test_0035_does not cache 400 responses = 0.00 s = .
 Rack::Cache::Context#test_0060_caches responses with an Expiration header = 0.00 s = .
-Rack::Cache::Context#test_0059_caches responses with explicit no-cache directive = 0.00 s = .
-Rack::Cache::Context#test_0072_validates cached responses with etag and no freshness information = 0.00 s = .
-Rack::Cache::Context#test_0013_does remove set-cookie response header from a cacheable response = 0.00 s = .
+Rack::Cache::Context#test_0071_validates cached responses with last-modified and no freshness information = 0.00 s = .
+Rack::Cache::Context#test_0058_does not cache responses without freshness information or a validator = 0.00 s = .
+Rack::Cache::Context#test_0009_does not cache with Authorization request header and non public response = 0.00 s = .
+Rack::Cache::Context#test_0015_does not remove set-cookie response header from a private response = 0.00 s = .
 Rack::Cache::Context#test_0004_passes on options requests = 0.00 s = .
-Rack::Cache::Context#test_0026_fetches response from backend when cache misses = 0.00 s = .
-Rack::Cache::Context#test_0056_does not cache 505 responses = 0.00 s = .
-Rack::Cache::Context#test_0042_does not cache 408 responses = 0.00 s = .
-Rack::Cache::Context#test_0002_passes on non-GET/HEAD requests = 0.00 s = .
+Rack::Cache::Context#test_0044_does not cache 411 responses = 0.00 s = .
 Rack::Cache::Context#test_0025_does not revalidate fresh cache entry when enable_revalidate option is set false (default) = 0.00 s = .
-Rack::Cache::Context#test_0029_does not cache 204 responses = 0.00 s = .
-Rack::Cache::Context#test_0058_does not cache responses without freshness information or a validator = 0.00 s = .
-Rack::Cache::Context#test_0032_does not cache 303 responses = 0.00 s = .
-Rack::Cache::Context#test_0054_does not cache 503 responses = 0.00 s = .
-Rack::Cache::Context#test_0022_does not reload responses when allow_reload is set false (default) = 0.00 s = .
-Rack::Cache::Context#test_0074_stores HEAD as original_method on HEAD requests = 0.00 s = .
-Rack::Cache::Context#test_0046_does not cache 413 responses = 0.00 s = .
-Rack::Cache::Context#test_0036_does not cache 401 responses = 0.00 s = .
+Rack::Cache::Context#test_0077_invalidates cached responses on POST = 0.00 s = .
+Rack::Cache::Context#test_0080_logs to rack.logger if available = 0.00 s = .
+Rack::Cache::Context#test_0051_does not cache 500 responses = 0.00 s = .
+Rack::Cache::Context#test_0062_caches responses with a s-maxage directive = 0.00 s = .
+Rack::Cache::Context#test_0057_does not cache responses with explicit no-store directive = 0.00 s = .
+Rack::Cache::Context#test_0050_does not cache 417 responses = 0.00 s = .
+Rack::Cache::Context#test_0045_does not cache 412 responses = 0.00 s = .
+Rack::Cache::Context#test_0028_does not cache 202 responses = 0.00 s = .
+Rack::Cache::Context#test_0008_invalidates on delete requests = 0.00 s = .
+Rack::Cache::Context#test_0006_invalidates on post requests = 0.00 s = .
+Rack::Cache::Context#test_0027_does not cache 201 responses = 0.00 s = .
+Rack::Cache::Context#test_0070_fetches full response when cache stale and no validators present = 0.00 s = .
+Rack::Cache::Context#test_0059_caches responses with explicit no-cache directive = 0.00 s = .
+Rack::Cache::Context#test_0038_does not cache 403 responses = 0.00 s = .
 Rack::Cache::Context#test_0066_hits cached response with max-age directive = 0.00 s = .
-Rack::Cache::Context#test_0023_revalidates fresh cache entry when max-age request directive is exceeded when allow_revalidate option is set true = 0.00 s = .
-Rack::Cache::Context#test_0015_does not remove set-cookie response header from a private response = 0.00 s = .
+Rack::Cache::Context#test_0052_does not cache 501 responses = 0.00 s = .
+Rack::Cache::Context#test_0074_stores HEAD as original_method on HEAD requests = 0.00 s = .
+Rack::Cache::Context#test_0042_does not cache 408 responses = 0.00 s = .
+Rack::Cache::Context#test_0007_invalidates on put requests = 0.00 s = .
 Rack::Cache::Context#test_0012_does not cache requests with a Cookie header = 0.00 s = .
-Rack::Cache::Context#test_0040_does not cache 406 responses = 0.01 s = .
-Rack::Cache::Context#test_0016_responds with 304 when if-modified-since matches last-modified = 0.00 s = .
-Rack::Cache::Context#test_0031_does not cache 206 responses = 0.00 s = .
+Rack::Cache::Context#test_0026_fetches response from backend when cache misses = 0.00 s = .
+Rack::Cache::Context#test_0061_caches responses with a max-age directive = 0.00 s = .
+Rack::Cache::Context#test_0056_does not cache 505 responses = 0.00 s = .
+Rack::Cache::Context#test_0001_passes options to the underlying stores = 0.00 s = .
+Rack::Cache::Context#test_0033_does not cache 304 responses = 0.00 s = .
+Rack::Cache::Context#test_0055_does not cache 504 responses = 0.00 s = .
 Rack::Cache::Context#test_0018_responds with 304 only if if-none-match and if-modified-since both match = 0.00 s = .
-Rack::Cache::Context#test_0052_does not cache 501 responses = 0.00 s = .
-Rack::Cache::Context#test_0028_does not cache 202 responses = 0.00 s = .
 Rack::Cache::Context#test_0020_stores responses when no-cache request directive present = 0.00 s = .
+Rack::Cache::Context#test_0034_does not cache 305 responses = 0.00 s = .
+Rack::Cache::Context#test_0048_does not cache 415 responses = 0.00 s = .
+Rack::Cache::Context#test_0029_does not cache 204 responses = 0.00 s = .
+Rack::Cache::Context#test_0075_passes HEAD requests through directly on pass = 0.00 s = .
 Rack::Cache::Context#test_0079_does not cache when cache-control response header changed to private (reset @cache_control on dup) = 0.00 s = .
-Rack::Cache::Context#test_0078_passes if there was a metastore exception = 0.00 s = .
-Rack::Cache::Context#test_0057_does not cache responses with explicit no-store directive = 0.00 s = .
-Rack::Cache::Context#test_0064_caches responses with an etag validator but no freshness information = 0.00 s = .
-Rack::Cache::Context#test_0024_returns a stale cache entry when max-age request directive is exceeded when allow_revalidate and fault_tolerant options are set to true and the remote server returns a connection error = 0.00 s = .
+Rack::Cache::Context#test_0039_does not cache 405 responses = 0.00 s = .
+Rack::Cache::Context#test_0003_passes on rack-cache.force-pass = 0.00 s = .
+Rack::Cache::Context#test_0072_validates cached responses with etag and no freshness information = 0.00 s = .
+Rack::Cache::Context#test_0036_does not cache 401 responses = 0.00 s = .
+Rack::Cache::Context#test_0032_does not cache 303 responses = 0.00 s = .
+Rack::Cache::Context#test_0046_does not cache 413 responses = 0.00 s = .
 Rack::Cache::Context#test_0068_assigns default_ttl when response has no freshness information = 0.00 s = .
-Rack::Cache::Context#test_0048_does not cache 415 responses = 0.00 s = .
-Rack::Cache::Context#test_0055_does not cache 504 responses = 0.00 s = .
-Rack::Cache::Context#test_0005_doesnt invalidate on options requests = 0.00 s = .
 Rack::Cache::Context#test_0030_does not cache 205 responses = 0.00 s = .
-Rack::Cache::Context#test_0019_validates private responses cached on the client = 0.00 s = .
-Rack::Cache::Context#test_0045_does not cache 412 responses = 0.00 s = .
-Rack::Cache::Context#test_0061_caches responses with a max-age directive = 0.00 s = .
-Rack::Cache::Request#test_0002_is marked as no_cache when request should not be loaded from cache = 0.00 s = .
-Rack::Cache::Request#test_0003_is not marked as no_cache when neither no-cache directive is specified = 0.00 s = .
-Rack::Cache::Request#test_0001_is marked as no_cache when the cache-control header includes the no-cache directive = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0001_writes a list of negotation tuples with #write = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0003_reads an empty list with #read when nothing cached at key = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0035_does not return entries that Vary with #lookup = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0011_can read and write fairly large keys = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0023_purges meta store entry when the body does not exist = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0017_can handle objects that can only be read once = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0018_sets the x-content-digest response header before storing = 0.01 s = .
-Rack::Cache::MetaStore::Disk#test_0026_restores response headers properly with #lookup = 0.01 s = .
-Rack::Cache::MetaStore::Disk#test_0009_can read and write key: '/test?x=y' = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0014_does not blow up when given a non-marhsalable object with an ALL_CAPS key = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0006_returns nil from #purge = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0033_stores multiple responses for each Vary combination = 0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0022_does not find an entry with #lookup when the body does not exist = 0.01 s = .
-Rack::Cache::MetaStore::Disk#test_0007_can read and write key: '/test' = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0038_removes the Age response header before storing = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0008_can read and write key: 'http://example.com:8080/' = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0016_stores a cache entry = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0010_can read and write key: '/test?x=y&p=q' = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0021_canonizes urls for cache keys = 0.01 s = .
-Rack::Cache::MetaStore::Disk#test_0002_reads a list of negotation tuples with #read = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0020_does not find an entry with #lookup when none exists = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0015_supports a ttl parameter for #write = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0031_gracefully degrades if the cache store stops working = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0027_restores response body from entity store with #lookup = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0013_allows custom cache keys from class = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0037_overwrites non-varying responses with #store = 0.04 s = .
-Rack::Cache::MetaStore::Disk#test_0025_warns once if purge is not implemented = WARNING: Future releases may require purge implementation for Rack::Cache::MetaStore::Disk
-0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0036_stores multiple responses for each Vary combination = 0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0012_allows custom cache keys from block = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0024_purges meta store entry when the entry does not contain the digest header = 0.01 s = .
-Rack::Cache::MetaStore::Disk#test_0034_overwrites non-varying responses with #store = 0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0032_does not return entries that Vary with #lookup = 0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0004_removes entries for key with #purge = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0039_removes the Age response header before storing = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0005_succeeds when purging non-existing entries = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0030_does not remove response x-status with #invalidate = 0.02 s = .
-Rack::Cache::MetaStore::Disk#test_0019_finds a stored entry with #lookup = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0029_succeeds quietly when #invalidate called with no matching entries = 0.00 s = .
-Rack::Cache::MetaStore::Disk#test_0028_invalidates meta and entity store entries with #invalidate = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0001_writes a list of negotation tuples with #write = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0003_reads an empty list with #read when nothing cached at key = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0035_does not return entries that Vary with #lookup = 0.00 s = .
+Rack::Cache::Context#test_0040_does not cache 406 responses = 0.00 s = .
+Rack::Cache::Context#test_0010_does cache with Authorization request header and public response = 0.00 s = .
+Rack::Cache::Context#test_0063_caches responses with a last-modified validator but no freshness information = 0.00 s = .
+Rack::Cache::Context#test_0041_does not cache 407 responses = 0.00 s = .
+Rack::Cache::Context#test_0002_passes on non-GET/HEAD requests = 0.00 s = .
+Rack::Cache::Context#test_0022_does not reload responses when allow_reload is set false (default) = 0.00 s = .
+Rack::Cache::Context#test_0053_does not cache 502 responses = 0.00 s = .
+Rack::Cache::Context#test_0064_caches responses with an etag validator but no freshness information = 0.00 s = .
+Rack::Cache::Response::#expire!#test_0005_does nothing when the response does not include freshness information = 0.00 s = .
+Rack::Cache::Response::#expire!#test_0004_does nothing when the response is already stale/expired = 0.00 s = .
+Rack::Cache::Response::#expire!#test_0003_sets the Age to be equal to the s-maxage when both max-age and s-maxage present = 0.00 s = .
+Rack::Cache::Response::#expire!#test_0002_sets the Age to be equal to the r-maxage when the three max-age and r/s-maxage present = 0.00 s = .
+Rack::Cache::Response::#expire!#test_0001_sets the Age to be equal to the max-age = 0.00 s = .
+Rack::Cache::Response::#ttl#test_0003_returns negative values when expires is in part = 0.00 s = .
+Rack::Cache::Response::#ttl#test_0004_uses the cache-control max-age value when present = 0.00 s = .
+Rack::Cache::Response::#ttl#test_0002_uses the expires header when no max-age is present = 0.00 s = .
+Rack::Cache::Response::#ttl#test_0001_is nil when no expires or cache-control headers present = 0.00 s = .
+Rack::Cache::MetaStore#test_0003_has not implemented purge = 0.00 s = .
+Rack::Cache::MetaStore#test_0002_has not implemented write = 0.00 s = .
+Rack::Cache::MetaStore#test_0001_has not implemented read = 0.00 s = .
+Rack::Cache::Key#test_0011_does not include query when all params are ignored = 0.00 s = .
+Rack::Cache::Key#test_0004_includes the scheme = 0.00 s = .
+Rack::Cache::Key#test_0010_ignores params based on configuration = 0.00 s = .
+Rack::Cache::Key#test_0001_sorts params = 0.00 s = .
+Rack::Cache::Key#test_0002_handles badly encoded params = 0.00 s = .
+Rack::Cache::Key#test_0007_does not include question mark if there is no query string = 0.00 s = .
+Rack::Cache::Key#test_0005_includes host = 0.00 s = .
+Rack::Cache::Key#test_0008_sorts the query string by key/value after decoding = 0.00 s = .
+Rack::Cache::Key#test_0003_doesn't confuse encoded equals sign with query string separator = 0.00 s = .
+Rack::Cache::Key#test_0006_includes path = 0.00 s = .
+Rack::Cache::Key#test_0009_is in order of scheme, host, path, params = 0.00 s = .
+Rack::Cache::Options::#set#test_0003_sets all key/value pairs when given a Hash = 0.00 s = .
+Rack::Cache::Options::#set#test_0002_sets a String option as string = 0.00 s = .
+Rack::Cache::Options::#set#test_0001_sets a Symbol option as rack-cache.symbol = 0.00 s = .
+Rack::Cache::Options#test_0005_allows the meta store to be configured = 0.00 s = .
+Rack::Cache::Options#test_0002_allows setting multiple options via assignment = 0.00 s = .
+Rack::Cache::Options#test_0007_allows log verbosity to be configured = 0.00 s = .
+Rack::Cache::Options#test_0004_allows the cache key generator to be configured = 0.00 s = .
+Rack::Cache::Options#test_0003_allows storing the value as a block = 0.00 s = .
+Rack::Cache::Options#test_0006_allows the entity store to be configured = 0.00 s = .
+Rack::Cache::Options#test_0001_makes options declared with option_accessor available as attributes = 0.00 s = .
+Rack::Cache::Storage::Noop Store URIs#test_0001_resolves Noop meta store URIs = 0.00 s = .
+Rack::Cache::Response::#expires#test_0003_returns nil if the expires header is not parseable = 0.00 s = .
+Rack::Cache::Response::#expires#test_0002_returns a Time if the expires header is parseable = 0.00 s = .
+Rack::Cache::Response::#expires#test_0001_returns nil if there is no expires header = 0.00 s = .
+Rack::Cache::Storage::Heap Store URIs#test_0003_resolves mem:/ meta store URIs = 0.00 s = .
+Rack::Cache::Storage::Heap Store URIs#test_0004_resolves mem:/ entity store URIs = 0.00 s = .
+Rack::Cache::Storage::Heap Store URIs#test_0002_resolves heap:/ entity store URIs = 0.00 s = .
+Rack::Cache::Storage::Heap Store URIs#test_0001_resolves heap:/ meta store URIs = 0.00 s = .
+Rack::Cache::Response#test_0002_responds to #to_a with a Rack response tuple = 0.00 s = .
+Rack::Cache::Response#test_0001_marks Rack tuples with string typed statuses as cacheable = 0.00 s = .
+Rack::Cache::CacheControl#test_0025_responds to #must_revalidate? non-truthfully when no must-revalidate directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0001_takes no args and initializes with an empty set of values = 0.00 s = .
+Rack::Cache::CacheControl#test_0026_responds to #proxy_revalidate? truthfully when proxy-revalidate directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0012_responds to #max_age with an integer when max-age directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0023_responds to #no_cache? non-truthfully when no no-cache directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0018_responds to #public? truthfully when public directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0005_takes a String with a single flag value = 0.00 s = .
+Rack::Cache::CacheControl#test_0017_responds to #reverse_max_age with nil when no r-maxage directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0020_responds to #private? truthfully when private directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0011_sorts alphabetically with boolean directives before value directives = 0.00 s = .
+Rack::Cache::CacheControl#test_0003_takes a String with a single name=value pair = 0.00 s = .
+Rack::Cache::CacheControl#test_0015_responds to #shared_max_age with nil when no s-maxage directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0007_strips leading and trailing spaces from header value = 0.00 s = .
+Rack::Cache::CacheControl#test_0004_takes a String with multiple name=value pairs = 0.00 s = .
+Rack::Cache::CacheControl#test_0014_responds to #shared_max_age with an integer when s-maxage directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0016_responds to #reverse_max_age with an integer when r-maxage directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0013_responds to #max_age with nil when no max-age directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0008_strips blank segments = 0.00 s = .
+Rack::Cache::CacheControl#test_0010_converts self into header String with #to_s = 0.00 s = .
+Rack::Cache::CacheControl#test_0027_responds to #proxy_revalidate? non-truthfully when no proxy-revalidate directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0002_takes a String and parses it into a Hash when created = 0.00 s = .
+Rack::Cache::CacheControl#test_0022_responds to #no_cache? truthfully when no-cache directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0021_responds to #private? non-truthfully when no private directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0024_responds to #must_revalidate? truthfully when must-revalidate directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0019_responds to #public? non-truthfully when no public directive present = 0.00 s = .
+Rack::Cache::CacheControl#test_0006_takes a String with a bunch of all kinds of stuff = 0.00 s = .
+Rack::Cache::CacheControl#test_0009_removes all directives with #clear = 0.00 s = .
+Rack::Cache::Response::#date#test_0003_uses the current time when no Date header present = 0.00 s = .
+Rack::Cache::Response::#date#test_0004_returns the correct date when the header is modified directly = 0.00 s = .
+Rack::Cache::Response::#date#test_0002_returns the current time if present but not parseable = 0.00 s = .
+Rack::Cache::Response::#date#test_0001_uses the Date header if present and parseable = 0.00 s = .
+Rack::Cache::MetaStore::Heap::logging writes#test_0001_passes a TTL to the stores is use_native_ttl is truthy = 0.00 s = .
+Rack::Cache#test_0003_sets options provided in the options Hash = 0.00 s = .
+Rack::Cache#test_0004_takes a block; executes it during initialization = 0.00 s = .
+Rack::Cache#test_0002_takes an options Hash = 0.00 s = .
+Rack::Cache#test_0001_takes a backend and returns a middleware component = 0.00 s = .
+Rack::Cache::MetaStore::Disk::logging writes#test_0001_passes a TTL to the stores is use_native_ttl is truthy = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0008_can read and write key: 'http://example.com:8080/' = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0011_can read and write fairly large keys = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0023_purges meta store entry when the body does not exist = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0017_can handle objects that can only be read once = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0018_sets the x-content-digest response header before storing = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0026_restores response headers properly with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0028_invalidates meta and entity store entries with #invalidate = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0015_supports a ttl parameter for #write = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0009_can read and write key: '/test?x=y' = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0014_does not blow up when given a non-marhsalable object with an ALL_CAPS key = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0036_stores multiple responses for each Vary combination = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0027_restores response body from entity store with #lookup = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0006_returns nil from #purge = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0025_warns once if purge is not implemented = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0033_stores multiple responses for each Vary combination = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0022_does not find an entry with #lookup when the body does not exist = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0007_can read and write key: '/test' = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0038_removes the Age response header before storing = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0008_can read and write key: 'http://example.com:8080/' = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0016_stores a cache entry = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0010_can read and write key: '/test?x=y&p=q' = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0021_canonizes urls for cache keys = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0002_reads a list of negotation tuples with #read = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0020_does not find an entry with #lookup when none exists = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0015_supports a ttl parameter for #write = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0031_gracefully degrades if the cache store stops working = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0027_restores response body from entity store with #lookup = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0013_allows custom cache keys from class = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0037_overwrites non-varying responses with #store = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0025_warns once if purge is not implemented = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0036_stores multiple responses for each Vary combination = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0029_succeeds quietly when #invalidate called with no matching entries = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0012_allows custom cache keys from block = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0024_purges meta store entry when the entry does not contain the digest header = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0034_overwrites non-varying responses with #store = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0005_succeeds when purging non-existing entries = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0017_can handle objects that can only be read once = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0039_removes the Age response header before storing = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0001_writes a list of negotation tuples with #write = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0018_sets the x-content-digest response header before storing = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0020_does not find an entry with #lookup when none exists = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0035_does not return entries that Vary with #lookup = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0032_does not return entries that Vary with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0021_canonizes urls for cache keys = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0007_can read and write key: '/test' = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0026_restores response headers properly with #lookup = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0003_reads an empty list with #read when nothing cached at key = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0031_gracefully degrades if the cache store stops working = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0023_purges meta store entry when the body does not exist = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0014_does not blow up when given a non-marhsalable object with an ALL_CAPS key = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0004_removes entries for key with #purge = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0039_removes the Age response header before storing = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0005_succeeds when purging non-existing entries = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0030_does not remove response x-status with #invalidate = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0016_stores a cache entry = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0013_allows custom cache keys from class = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0010_can read and write key: '/test?x=y&p=q' = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0002_reads a list of negotation tuples with #read = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0022_does not find an entry with #lookup when the body does not exist = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0024_purges meta store entry when the entry does not contain the digest header = 0.00 s = .
 Rack::Cache::MetaStore::Heap#test_0019_finds a stored entry with #lookup = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0029_succeeds quietly when #invalidate called with no matching entries = 0.00 s = .
-Rack::Cache::MetaStore::Heap#test_0028_invalidates meta and entity store entries with #invalidate = 0.00 s = .
-Rack::Cache::Storage::Heap Store URIs#test_0002_resolves heap:/ entity store URIs = 0.00 s = .
-Rack::Cache::Storage::Heap Store URIs#test_0003_resolves mem:/ meta store URIs = 0.00 s = .
-Rack::Cache::Storage::Heap Store URIs#test_0001_resolves heap:/ meta store URIs = 0.00 s = .
-Rack::Cache::Storage::Heap Store URIs#test_0004_resolves mem:/ entity store URIs = 0.00 s = .
-Rack::Cache::Response::#vary_header_names#test_0002_parses a single header name value = 0.00 s = .
-Rack::Cache::Response::#vary_header_names#test_0003_parses multiple header name values separated by spaces = 0.00 s = .
-Rack::Cache::Response::#vary_header_names#test_0001_returns an empty Array when no Vary header is present = 0.00 s = .
-Rack::Cache::Response::#vary_header_names#test_0004_parses multiple header name values separated by commas = 0.00 s = .
-Rack::Cache::Response::#vary#test_0002_returns the literal value of the Vary header = 0.00 s = .
-Rack::Cache::Response::#vary#test_0003_can be checked for existence using the #vary? method = 0.00 s = .
-Rack::Cache::Response::#vary#test_0001_is nil when no Vary header is present = 0.00 s = .
+Rack::Cache::MetaStore::Heap#test_0038_removes the Age response header before storing = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0012_deletes stored entries with #purge = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0010_returns nil from #open when key does not exist = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0007_returns the entire body as a String from #read = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0004_correctly determines whether cached body exists for key with #exist? = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0011_can store largish bodies with binary data = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0014_uses its own Hash with no args to ::new = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0001_responds to all required messages = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0002_stores bodies with #write = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0013_takes a Hash to ::new = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0005_can read data written with #write = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0008_returns nil from #read when key does not exist = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0003_takes a ttl parameter for #write = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
+Rack::Cache::EntityStore::Heap#test_0009_returns a Rack compatible body from #open = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0007_always responds to #open with empty array = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0001_responds to all required messages = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0004_always responds to #exist? with true, regardless of the content having been saved before = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0002_accepts bodies with #write = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0008_returns a Rack compatible body from #open = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0005_always responds to #read with an empty String = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0003_takes a ttl parameter for #write = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
+Rack::Cache::EntityStore::Noop#test_0009_responds to #purge and returns nil = 0.00 s = .
+Rack::Cache::Storage#test_0005_creates a new EntityStore for URI if none exists = 0.00 s = .
+Rack::Cache::Storage#test_0002_passes options to the underlying stores = 0.00 s = .
+Rack::Cache::Storage#test_0007_clears all URI -> store mappings with #clear = 0.00 s = .
+Rack::Cache::Storage#test_0004_returns an existing MetaStore instance for URI that exists = 0.00 s = .
+Rack::Cache::Storage#test_0003_creates a new MetaStore for URI if none exists = 0.00 s = .
+Rack::Cache::Storage#test_0006_returns an existing EntityStore instance for URI that exists = 0.00 s = .
+Rack::Cache::Storage#test_0001_fails when an unknown URI scheme is provided = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0012_deletes stored entries with #purge = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0013_takes a path to ::new and creates the directory = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0007_returns the entire body as a String from #read = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0004_correctly determines whether cached body exists for key with #exist? = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0011_can store largish bodies with binary data = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0015_spreads data over a 36² hash radius = 0.01 s = .
+Rack::Cache::EntityStore::Disk#test_0010_returns nil from #open when key does not exist = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0001_responds to all required messages = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0002_stores bodies with #write = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0014_produces a body that responds to #to_path = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0005_can read data written with #write = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0008_returns nil from #read when key does not exist = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0003_takes a ttl parameter for #write = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0006_gives a 40 character SHA1 hex digest from #write = 0.00 s = .
+Rack::Cache::EntityStore::Disk#test_0009_returns a Rack compatible body from #open = 0.00 s = .
+Rack::Cache::Response::#validateable?#test_0003_is false when no validator is present = 0.00 s = .
+Rack::Cache::Response::#validateable?#test_0002_is true when etag header present = 0.00 s = .
+Rack::Cache::Response::#validateable?#test_0001_is true when last-modified header present = 0.00 s = .
+Rack::Cache::Response::#cache_control#test_0002_removes the header when given an empty hash = 0.00 s = .
+Rack::Cache::Response::#cache_control#test_0001_handles multiple name=value pairs = 0.00 s = .
+Rack::Cache::Response::#max_age#test_0005_gives a #max_age of nil when no freshness information available = 0.00 s = .
+Rack::Cache::Response::#max_age#test_0004_falls back to expires when no max-age or r/s-maxage directive present = 0.00 s = .
+Rack::Cache::Response::#max_age#test_0003_falls back to max-age when no r/s-maxage directive present = 0.00 s = .
+Rack::Cache::Response::#max_age#test_0002_uses s-maxage cache control when no r-maxage directive present = 0.00 s = .
+Rack::Cache::Response::#max_age#test_0001_uses r-maxage cache control directive when present = 0.00 s = .
+Rack::Cache::Request#test_0003_is not marked as no_cache when neither no-cache directive is specified = 0.00 s = .
+Rack::Cache::Request#test_0002_is marked as no_cache when request should not be loaded from cache = 0.00 s = .
+Rack::Cache::Request#test_0001_is marked as no_cache when the cache-control header includes the no-cache directive = 0.00 s = .
 
-Finished in 1.272039s, 244.4893 runs/s, 1150.9080 assertions/s.
+Finished in 0.191298s, 1625.7334 runs/s, 7652.9701 assertions/s.
 
 311 runs, 1464 assertions, 0 failures, 0 errors, 0 skips
 
@@ -1317,12 +1353,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: including full source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/3961910/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/675592 and its subdirectories
-I: Current time: Wed Mar 19 12:07:35 -12 2025
-I: pbuilder-time-stamp: 1742429255
+I: removing directory /srv/workspace/pbuilder/3961910 and its subdirectories
+I: Current time: Wed Apr 22 20:31:21 +14 2026
+I: pbuilder-time-stamp: 1776839481