Merge lp:~michihenning/persistent-cache-cpp/landing-150819 into lp:persistent-cache-cpp

Proposed by Michi Henning
Status: Merged
Approved by: James Henstridge
Approved revision: 24
Merged at revision: 21
Proposed branch: lp:~michihenning/persistent-cache-cpp/landing-150819
Merge into: lp:persistent-cache-cpp
Diff against target: 952 lines (+211/-545)
9 files modified
CMakeLists.txt (+1/-1)
debian/changelog (+8/-510)
doc/main_page.dox.in (+4/-4)
examples/CMakeLists.txt (+17/-24)
include/core/internal/persistent_string_cache_stats.h (+17/-5)
include/core/persistent_cache_stats.h (+20/-0)
src/core/internal/persistent_string_cache_impl.cpp (+1/-1)
src/core/persistent_cache_stats.cpp (+20/-0)
tests/core/internal/persistent_string_cache_impl/persistent_string_cache_impl_test.cpp (+123/-0)
To merge this branch: bzr merge lp:~michihenning/persistent-cache-cpp/landing-150819
Reviewer Review Type Date Requested Status
James Henstridge Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+268430@code.launchpad.net

Commit message

Minor enhancements to cache. Suppressed a lintian warning, fixed autopkg test dependency, and added run length averages to stats.

Description of the change

Minor enhancements to cache. Suppressed a lintian warning, fixed autopkg test dependency, and added run length averages to stats.

To post a comment you must log in.
Revision history for this message
James Henstridge (jamesh) wrote :

The changes to debian/changelog look incorrect here. Version 1.0.3+15.10.20150807-0ubuntu1 was released to the archive, so it shouldn't be replaced like this. Instead create a new stanza to describe what's new in this release.

The changes for the 1.0.0+15.10.20150805-0ubuntu1 changelog seem fine, assuming the build tools let it go.

review: Needs Fixing
22. By Michi Henning

Fixed changelog version and change micro version to match.

Revision history for this message
James Henstridge (jamesh) wrote :

This is still wrong. You are still replacing the existing 1.0.3+15.10.20150807-0ubuntu1 change log. This should be left untouched and intact.

review: Needs Fixing
23. By Michi Henning

Fixed changelog again.

24. By Michi Henning

Merged documentation fix.

Revision history for this message
James Henstridge (jamesh) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2015-07-29 01:38:54 +0000
3+++ CMakeLists.txt 2015-08-19 21:49:27 +0000
4@@ -13,7 +13,7 @@
5
6 set(VERSION_MAJOR 1)
7 set(VERSION_MINOR 0)
8-set(VERSION_MICRO 0)
9+set(VERSION_MICRO 4)
10 set(LIBVERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}")
11
12 string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lower case
13
14=== modified file 'debian/changelog'
15--- debian/changelog 2015-08-07 11:09:03 +0000
16+++ debian/changelog 2015-08-19 21:49:27 +0000
17@@ -1,3 +1,10 @@
18+persistent-cache-cpp (1.0.4+15.10.20150805-0ubuntu2) UNRELEASED; urgency=medium
19+
20+ [ Michi Henning ]
21+ * Added average hit and miss run stats.
22+
23+ -- Michi Henning <michi.henning@canonical.com> Wed, 19 Aug 2015 16:46:00 +1000
24+
25 persistent-cache-cpp (1.0.3+15.10.20150807-0ubuntu1) wily; urgency=medium
26
27 [ Michi Henning ]
28@@ -9,518 +16,9 @@
29 persistent-cache-cpp (1.0.0+15.10.20150805-0ubuntu1) wily; urgency=medium
30
31 [ Michi Henning ]
32- * Fixes: 1481144
33- * Changes to tests for boost 1.58
34- * Added autopkgtest. added: debian/tests/ debian/tests/control
35- debian/tests/test-examples
36- * Added cmake to dependencies.
37- * Added cmake-extras to build deps.
38- * Added doc package. added: debian/persistent-cache-cpp-dev.install
39- debian/persistent-cache-cpp-doc.install
40- * Added examples directory. added: examples/ examples/CMakeLists.txt
41- examples/README examples/person_cache.cpp examples/string_cache.cpp
42- * Added pkgconfig support. added: data/ data/CMakeLists.txt
43- data/libpersistent-cache-cpp.pc.in
44- * Doc fix.
45- * Enabled autopkgtest.
46- * Fixed incorrect include file install dir.
47- * Merged devel: Michi Henning 2015-07-29 Trying without -DLIBDIR Michi
48- Henning 2015-07-29 Added more missing deps. Michi Henning 2015-07-29
49- Don't need click to build. Michi Henning 2015-07-29 Added pkgconfig
50- to deps. Michi Henning 2015-07-29 [merge] pending merges: Michi
51- Henning 2015-07-29 Added cmake to dependencies.
52- * Merged devel: More doc improvements. Fleshed out string cache
53- example. Doc improvements. added: doc/ doc/CMakeLists.txt
54- doc/main_page.dox.in
55- * Minor fix to test script.
56- * Removed build directory (checked in accidentally). removed: build/
57- build/CMakeCache.txt build/CMakeFiles/ build/CMakeFiles/3.2.2/
58- build/CMakeFiles/3.2.2/CMakeCCompiler.cmake
59- build/CMakeFiles/3.2.2/CMakeCXXCompiler.cmake
60- build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_C.bin
61- build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_CXX.bin
62- build/CMakeFiles/3.2.2/CMakeSystem.cmake
63- build/CMakeFiles/3.2.2/CompilerIdC/
64- build/CMakeFiles/3.2.2/CompilerIdC/CMakeCCompilerId.c
65- build/CMakeFiles/3.2.2/CompilerIdC/a.out
66- build/CMakeFiles/3.2.2/CompilerIdCXX/
67- build/CMakeFiles/3.2.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
68- build/CMakeFiles/3.2.2/CompilerIdCXX/a.out
69- build/CMakeFiles/CMakeDirectoryInformation.cmake
70- build/CMakeFiles/CMakeError.log build/CMakeFiles/CMakeOutput.log
71- build/CMakeFiles/CMakeRuleHashes.txt build/CMakeFiles/CMakeTmp/
72- build/CMakeFiles/Continuous.dir/
73- build/CMakeFiles/Continuous.dir/DependInfo.cmake
74- build/CMakeFiles/Continuous.dir/build.make
75- build/CMakeFiles/Continuous.dir/cmake_clean.cmake
76- build/CMakeFiles/Continuous.dir/progress.make
77- build/CMakeFiles/ContinuousBuild.dir/
78- build/CMakeFiles/ContinuousBuild.dir/DependInfo.cmake
79- build/CMakeFiles/ContinuousBuild.dir/build.make
80- build/CMakeFiles/ContinuousBuild.dir/cmake_clean.cmake
81- build/CMakeFiles/ContinuousBuild.dir/progress.make
82- build/CMakeFiles/ContinuousConfigure.dir/
83- build/CMakeFiles/ContinuousConfigure.dir/DependInfo.cmake
84- build/CMakeFiles/ContinuousConfigure.dir/build.make
85- build/CMakeFiles/ContinuousConfigure.dir/cmake_clean.cmake
86- build/CMakeFiles/ContinuousConfigure.dir/progress.make
87- build/CMakeFiles/ContinuousCoverage.dir/
88- build/CMakeFiles/ContinuousCoverage.dir/DependInfo.cmake
89- build/CMakeFiles/ContinuousCoverage.dir/build.make
90- build/CMakeFiles/ContinuousCoverage.dir/cmake_clean.cmake
91- build/CMakeFiles/ContinuousCoverage.dir/progress.make
92- build/CMakeFiles/ContinuousMemCheck.dir/
93- build/CMakeFiles/ContinuousMemCheck.dir/DependInfo.cmake
94- build/CMakeFiles/ContinuousMemCheck.dir/build.make
95- build/CMakeFiles/ContinuousMemCheck.dir/cmake_clean.cmake
96- build/CMakeFiles/ContinuousMemCheck.dir/progress.make
97- build/CMakeFiles/ContinuousStart.dir/
98- build/CMakeFiles/ContinuousStart.dir/DependInfo.cmake
99- build/CMakeFiles/ContinuousStart.dir/build.make
100- build/CMakeFiles/ContinuousStart.dir/cmake_clean.cmake
101- build/CMakeFiles/ContinuousStart.dir/progress.make
102- build/CMakeFiles/ContinuousSubmit.dir/
103- build/CMakeFiles/ContinuousSubmit.dir/DependInfo.cmake
104- build/CMakeFiles/ContinuousSubmit.dir/build.make
105- build/CMakeFiles/ContinuousSubmit.dir/cmake_clean.cmake
106- build/CMakeFiles/ContinuousSubmit.dir/progress.make
107- build/CMakeFiles/ContinuousTest.dir/
108- build/CMakeFiles/ContinuousTest.dir/DependInfo.cmake
109- build/CMakeFiles/ContinuousTest.dir/build.make
110- build/CMakeFiles/ContinuousTest.dir/cmake_clean.cmake
111- build/CMakeFiles/ContinuousTest.dir/progress.make
112- build/CMakeFiles/ContinuousUpdate.dir/
113- build/CMakeFiles/ContinuousUpdate.dir/DependInfo.cmake
114- build/CMakeFiles/ContinuousUpdate.dir/build.make
115- build/CMakeFiles/ContinuousUpdate.dir/cmake_clean.cmake
116- build/CMakeFiles/ContinuousUpdate.dir/progress.make
117- build/CMakeFiles/Experimental.dir/
118- build/CMakeFiles/Experimental.dir/DependInfo.cmake
119- build/CMakeFiles/Experimental.dir/build.make
120- build/CMakeFiles/Experimental.dir/cmake_clean.cmake
121- build/CMakeFiles/Experimental.dir/progress.make
122- build/CMakeFiles/ExperimentalBuild.dir/
123- build/CMakeFiles/ExperimentalBuild.dir/DependInfo.cmake
124- build/CMakeFiles/ExperimentalBuild.dir/build.make
125- build/CMakeFiles/ExperimentalBuild.dir/cmake_clean.cmake
126- build/CMakeFiles/ExperimentalBuild.dir/progress.make
127- build/CMakeFiles/ExperimentalConfigure.dir/
128- build/CMakeFiles/ExperimentalConfigure.dir/DependInfo.cmake
129- build/CMakeFiles/ExperimentalConfigure.dir/build.make
130- build/CMakeFiles/ExperimentalConfigure.dir/cmake_clean.cmake
131- build/CMakeFiles/ExperimentalConfigure.dir/progress.make
132- build/CMakeFiles/ExperimentalCoverage.dir/
133- build/CMakeFiles/ExperimentalCoverage.dir/DependInfo.cmake
134- build/CMakeFiles/ExperimentalCoverage.dir/build.make
135- build/CMakeFiles/ExperimentalCoverage.dir/cmake_clean.cmake
136- build/CMakeFiles/ExperimentalCoverage.dir/progress.make
137- build/CMakeFiles/ExperimentalMemCheck.dir/
138- build/CMakeFiles/ExperimentalMemCheck.dir/DependInfo.cmake
139- build/CMakeFiles/ExperimentalMemCheck.dir/build.make
140- build/CMakeFiles/ExperimentalMemCheck.dir/cmake_clean.cmake
141- build/CMakeFiles/ExperimentalMemCheck.dir/progress.make
142- build/CMakeFiles/ExperimentalStart.dir/
143- build/CMakeFiles/ExperimentalStart.dir/DependInfo.cmake
144- build/CMakeFiles/ExperimentalStart.dir/build.make
145- build/CMakeFiles/ExperimentalStart.dir/cmake_clean.cmake
146- build/CMakeFiles/ExperimentalStart.dir/progress.make
147- build/CMakeFiles/ExperimentalSubmit.dir/
148- build/CMakeFiles/ExperimentalSubmit.dir/DependInfo.cmake
149- build/CMakeFiles/ExperimentalSubmit.dir/build.make
150- build/CMakeFiles/ExperimentalSubmit.dir/cmake_clean.cmake
151- build/CMakeFiles/ExperimentalSubmit.dir/progress.make
152- build/CMakeFiles/ExperimentalTest.dir/
153- build/CMakeFiles/ExperimentalTest.dir/DependInfo.cmake
154- build/CMakeFiles/ExperimentalTest.dir/build.make
155- build/CMakeFiles/ExperimentalTest.dir/cmake_clean.cmake
156- build/CMakeFiles/ExperimentalTest.dir/progress.make
157- build/CMakeFiles/ExperimentalUpdate.dir/
158- build/CMakeFiles/ExperimentalUpdate.dir/DependInfo.cmake
159- build/CMakeFiles/ExperimentalUpdate.dir/build.make
160- build/CMakeFiles/ExperimentalUpdate.dir/cmake_clean.cmake
161- build/CMakeFiles/ExperimentalUpdate.dir/progress.make
162- build/CMakeFiles/Makefile.cmake build/CMakeFiles/Makefile2
163- build/CMakeFiles/Nightly.dir/
164- build/CMakeFiles/Nightly.dir/DependInfo.cmake
165- build/CMakeFiles/Nightly.dir/build.make
166- build/CMakeFiles/Nightly.dir/cmake_clean.cmake
167- build/CMakeFiles/Nightly.dir/progress.make
168- build/CMakeFiles/NightlyBuild.dir/
169- build/CMakeFiles/NightlyBuild.dir/DependInfo.cmake
170- build/CMakeFiles/NightlyBuild.dir/build.make
171- build/CMakeFiles/NightlyBuild.dir/cmake_clean.cmake
172- build/CMakeFiles/NightlyBuild.dir/progress.make
173- build/CMakeFiles/NightlyConfigure.dir/
174- build/CMakeFiles/NightlyConfigure.dir/DependInfo.cmake
175- build/CMakeFiles/NightlyConfigure.dir/build.make
176- build/CMakeFiles/NightlyConfigure.dir/cmake_clean.cmake
177- build/CMakeFiles/NightlyConfigure.dir/progress.make
178- build/CMakeFiles/NightlyCoverage.dir/
179- build/CMakeFiles/NightlyCoverage.dir/DependInfo.cmake
180- build/CMakeFiles/NightlyCoverage.dir/build.make
181- build/CMakeFiles/NightlyCoverage.dir/cmake_clean.cmake
182- build/CMakeFiles/NightlyCoverage.dir/progress.make
183- build/CMakeFiles/NightlyMemCheck.dir/
184- build/CMakeFiles/NightlyMemCheck.dir/DependInfo.cmake
185- build/CMakeFiles/NightlyMemCheck.dir/build.make
186- build/CMakeFiles/NightlyMemCheck.dir/cmake_clean.cmake
187- build/CMakeFiles/NightlyMemCheck.dir/progress.make
188- build/CMakeFiles/NightlyMemoryCheck.dir/
189- build/CMakeFiles/NightlyMemoryCheck.dir/DependInfo.cmake
190- build/CMakeFiles/NightlyMemoryCheck.dir/build.make
191- build/CMakeFiles/NightlyMemoryCheck.dir/cmake_clean.cmake
192- build/CMakeFiles/NightlyMemoryCheck.dir/progress.make
193- build/CMakeFiles/NightlyStart.dir/
194- build/CMakeFiles/NightlyStart.dir/DependInfo.cmake
195- build/CMakeFiles/NightlyStart.dir/build.make
196- build/CMakeFiles/NightlyStart.dir/cmake_clean.cmake
197- build/CMakeFiles/NightlyStart.dir/progress.make
198- build/CMakeFiles/NightlySubmit.dir/
199- build/CMakeFiles/NightlySubmit.dir/DependInfo.cmake
200- build/CMakeFiles/NightlySubmit.dir/build.make
201- build/CMakeFiles/NightlySubmit.dir/cmake_clean.cmake
202- build/CMakeFiles/NightlySubmit.dir/progress.make
203- build/CMakeFiles/NightlyTest.dir/
204- build/CMakeFiles/NightlyTest.dir/DependInfo.cmake
205- build/CMakeFiles/NightlyTest.dir/build.make
206- build/CMakeFiles/NightlyTest.dir/cmake_clean.cmake
207- build/CMakeFiles/NightlyTest.dir/progress.make
208- build/CMakeFiles/NightlyUpdate.dir/
209- build/CMakeFiles/NightlyUpdate.dir/DependInfo.cmake
210- build/CMakeFiles/NightlyUpdate.dir/build.make
211- build/CMakeFiles/NightlyUpdate.dir/cmake_clean.cmake
212- build/CMakeFiles/NightlyUpdate.dir/progress.make
213- build/CMakeFiles/TargetDirectories.txt build/CMakeFiles/clean-
214- coverage.dir/ build/CMakeFiles/clean-coverage.dir/DependInfo.cmake
215- build/CMakeFiles/clean-coverage.dir/build.make
216- build/CMakeFiles/clean-coverage.dir/cmake_clean.cmake
217- build/CMakeFiles/clean-coverage.dir/progress.make
218- build/CMakeFiles/cmake.check_cache
219- build/CMakeFiles/feature_tests.bin build/CMakeFiles/feature_tests.c
220- build/CMakeFiles/feature_tests.cxx build/CMakeFiles/persistent-
221- cache-cpp-doc.dir/ build/CMakeFiles/persistent-cache-cpp-
222- doc.dir/DependInfo.cmake build/CMakeFiles/persistent-cache-cpp-
223- doc.dir/build.make build/CMakeFiles/persistent-cache-cpp-
224- doc.dir/cmake_clean.cmake build/CMakeFiles/persistent-cache-cpp-
225- doc.dir/depend.internal build/CMakeFiles/persistent-cache-cpp-
226- doc.dir/depend.make build/CMakeFiles/persistent-cache-cpp-
227- doc.dir/progress.make build/CMakeFiles/progress.marks
228- build/CMakeFiles/valgrind.dir/
229- build/CMakeFiles/valgrind.dir/DependInfo.cmake
230- build/CMakeFiles/valgrind.dir/build.make
231- build/CMakeFiles/valgrind.dir/cmake_clean.cmake
232- build/CMakeFiles/valgrind.dir/progress.make build/CTestCustom.cmake
233- build/CTestTestfile.cmake build/DartConfiguration.tcl build/Doxyfile
234- build/Makefile build/Testing/ build/Testing/Temporary/
235- build/cmake_install.cmake build/doc/ build/doc/doxygen_sqlite3.db
236- build/doc/html/ build/doc/html/annotated.html
237- build/doc/html/annotated.js build/doc/html/arrowdown.png
238- build/doc/html/arrowright.png build/doc/html/bc_s.png
239- build/doc/html/bdwn.png build/doc/html/cache__codec_8h.html
240- build/doc/html/cache__codec_8h__dep__incl.map
241- build/doc/html/cache__codec_8h__dep__incl.md5
242- build/doc/html/cache__codec_8h__dep__incl.png
243- build/doc/html/cache__codec_8h__incl.map
244- build/doc/html/cache__codec_8h__incl.md5
245- build/doc/html/cache__codec_8h__incl.png
246- build/doc/html/cache__codec_8h_source.html
247- build/doc/html/cache__discard__policy_8h.html
248- build/doc/html/cache__discard__policy_8h.js
249- build/doc/html/cache__discard__policy_8h__dep__incl.map
250- build/doc/html/cache__discard__policy_8h__dep__incl.md5
251- build/doc/html/cache__discard__policy_8h__dep__incl.png
252- build/doc/html/cache__discard__policy_8h_source.html
253- build/doc/html/cache__events_8h.html
254- build/doc/html/cache__events_8h.js
255- build/doc/html/cache__events_8h__dep__incl.map
256- build/doc/html/cache__events_8h__dep__incl.md5
257- build/doc/html/cache__events_8h__dep__incl.png
258- build/doc/html/cache__events_8h__incl.map
259- build/doc/html/cache__events_8h__incl.md5
260- build/doc/html/cache__events_8h__incl.png
261- build/doc/html/cache__events_8h_source.html
262- build/doc/html/classcore_1_1PersistentCache-members.html
263- build/doc/html/classcore_1_1PersistentCache.html
264- build/doc/html/classcore_1_1PersistentCache.js
265- build/doc/html/classcore_1_1PersistentCacheStats-members.html
266- build/doc/html/classcore_1_1PersistentCacheStats.html
267- build/doc/html/classcore_1_1PersistentCacheStats.js
268- build/doc/html/classcore_1_1PersistentStringCache-members.html
269- build/doc/html/classcore_1_1PersistentStringCache.html
270- build/doc/html/classcore_1_1PersistentStringCache.js
271- build/doc/html/classes.html build/doc/html/closed.png
272- build/doc/html/dir_3d69f64eaf81436fe2b22361382717e5.html
273- build/doc/html/dir_3d69f64eaf81436fe2b22361382717e5.js
274- build/doc/html/dir_3d69f64eaf81436fe2b22361382717e5_dep.map
275- build/doc/html/dir_3d69f64eaf81436fe2b22361382717e5_dep.md5
276- build/doc/html/dir_3d69f64eaf81436fe2b22361382717e5_dep.png
277- build/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
278- build/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js
279- build/doc/html/dir_d44c64559bbebec7f509842c48db8b23_dep.map
280- build/doc/html/dir_d44c64559bbebec7f509842c48db8b23_dep.md5
281- build/doc/html/dir_d44c64559bbebec7f509842c48db8b23_dep.png
282- build/doc/html/doc.png build/doc/html/doxygen.css
283- build/doc/html/doxygen.png build/doc/html/dynsections.js
284- build/doc/html/files.html build/doc/html/files.js
285- build/doc/html/folderclosed.png build/doc/html/folderopen.png
286- build/doc/html/functions.html build/doc/html/functions_func.html
287- build/doc/html/functions_type.html
288- build/doc/html/functions_vars.html build/doc/html/graph_legend.html
289- build/doc/html/graph_legend.md5 build/doc/html/graph_legend.png
290- build/doc/html/index.html build/doc/html/jquery.js
291- build/doc/html/namespacecore.html build/doc/html/namespacecore.js
292- build/doc/html/namespacemembers.html
293- build/doc/html/namespacemembers_enum.html
294- build/doc/html/namespacemembers_func.html
295- build/doc/html/namespacemembers_type.html
296- build/doc/html/namespaces.html build/doc/html/namespaces.js
297- build/doc/html/nav_f.png build/doc/html/nav_g.png
298- build/doc/html/nav_h.png build/doc/html/navtree.css
299- build/doc/html/navtree.js build/doc/html/navtreedata.js
300- build/doc/html/navtreeindex0.js build/doc/html/open.png
301- build/doc/html/optional_8h.html build/doc/html/optional_8h.js
302- build/doc/html/optional_8h__dep__incl.map
303- build/doc/html/optional_8h__dep__incl.md5
304- build/doc/html/optional_8h__dep__incl.png
305- build/doc/html/optional_8h__incl.map
306- build/doc/html/optional_8h__incl.md5
307- build/doc/html/optional_8h__incl.png
308- build/doc/html/optional_8h_source.html
309- build/doc/html/persistent__cache_8h.html
310- build/doc/html/persistent__cache_8h__incl.map
311- build/doc/html/persistent__cache_8h__incl.md5
312- build/doc/html/persistent__cache_8h__incl.png
313- build/doc/html/persistent__cache_8h_source.html
314- build/doc/html/persistent__cache__stats_8h.html
315- build/doc/html/persistent__cache__stats_8h__dep__incl.map
316- build/doc/html/persistent__cache__stats_8h__dep__incl.md5
317- build/doc/html/persistent__cache__stats_8h__dep__incl.png
318- build/doc/html/persistent__cache__stats_8h__incl.map
319- build/doc/html/persistent__cache__stats_8h__incl.md5
320- build/doc/html/persistent__cache__stats_8h__incl.png
321- build/doc/html/persistent__cache__stats_8h_source.html
322- build/doc/html/persistent__string__cache_8h.html
323- build/doc/html/persistent__string__cache_8h__dep__incl.map
324- build/doc/html/persistent__string__cache_8h__dep__incl.md5
325- build/doc/html/persistent__string__cache_8h__dep__incl.png
326- build/doc/html/persistent__string__cache_8h__incl.map
327- build/doc/html/persistent__string__cache_8h__incl.md5
328- build/doc/html/persistent__string__cache_8h__incl.png
329- build/doc/html/persistent__string__cache_8h_source.html
330- build/doc/html/resize.js build/doc/html/splitbar.png
331- build/doc/html/structcore_1_1CacheCodec-members.html
332- build/doc/html/structcore_1_1CacheCodec.html
333- build/doc/html/structcore_1_1PersistentCache_1_1Data-members.html
334- build/doc/html/structcore_1_1PersistentCache_1_1Data.html
335- build/doc/html/structcore_1_1PersistentCache_1_1Data.js
336- build/doc/html/structcore_1_1PersistentStringCache_1_1Data-
337- members.html
338- build/doc/html/structcore_1_1PersistentStringCache_1_1Data.html
339- build/doc/html/structcore_1_1PersistentStringCache_1_1Data.js
340- build/doc/html/structcore_1_1PersistentStringCache_1_1Data__coll__gr
341- aph.map
342- build/doc/html/structcore_1_1PersistentStringCache_1_1Data__coll__gr
343- aph.md5
344- build/doc/html/structcore_1_1PersistentStringCache_1_1Data__coll__gr
345- aph.png build/doc/html/sync_off.png build/doc/html/sync_on.png
346- build/doc/html/tab_a.png build/doc/html/tab_b.png
347- build/doc/html/tab_h.png build/doc/html/tab_s.png
348- build/doc/html/tabs.css build/src/ build/src/CMakeFiles/
349- build/src/CMakeFiles/CMakeDirectoryInformation.cmake
350- build/src/CMakeFiles/progress.marks build/src/CTestTestfile.cmake
351- build/src/Makefile build/src/cmake_install.cmake build/src/core/
352- build/src/core/CMakeFiles/
353- build/src/core/CMakeFiles/CMakeDirectoryInformation.cmake
354- build/src/core/CMakeFiles/persistent-cache-cpp.dir/
355- build/src/core/CMakeFiles/persistent-cache-cpp.dir/CXX.includecache
356- build/src/core/CMakeFiles/persistent-cache-cpp.dir/DependInfo.cmake
357- build/src/core/CMakeFiles/persistent-cache-cpp.dir/build.make
358- build/src/core/CMakeFiles/persistent-cache-cpp.dir/cmake_clean.cmake
359- build/src/core/CMakeFiles/persistent-cache-
360- cpp.dir/cmake_clean_target.cmake
361- build/src/core/CMakeFiles/persistent-cache-cpp.dir/depend.internal
362- build/src/core/CMakeFiles/persistent-cache-cpp.dir/depend.make
363- build/src/core/CMakeFiles/persistent-cache-cpp.dir/flags.make
364- build/src/core/CMakeFiles/persistent-cache-cpp.dir/internal/
365- build/src/core/CMakeFiles/persistent-cache-cpp.dir/link.txt
366- build/src/core/CMakeFiles/persistent-cache-cpp.dir/progress.make
367- build/src/core/CMakeFiles/progress.marks
368- build/src/core/CTestTestfile.cmake build/src/core/Makefile
369- build/src/core/cmake_install.cmake build/src/core/internal/
370- build/src/core/internal/CMakeFiles/
371- build/src/core/internal/CMakeFiles/CMakeDirectoryInformation.cmake
372- build/src/core/internal/CMakeFiles/progress.marks
373- build/src/core/internal/CTestTestfile.cmake
374- build/src/core/internal/Makefile
375- build/src/core/internal/cmake_install.cmake build/tests/
376- build/tests/CMakeFiles/
377- build/tests/CMakeFiles/CMakeDirectoryInformation.cmake
378- build/tests/CMakeFiles/gtest.dir/
379- build/tests/CMakeFiles/gtest.dir/CXX.includecache
380- build/tests/CMakeFiles/gtest.dir/DependInfo.cmake
381- build/tests/CMakeFiles/gtest.dir/build.make
382- build/tests/CMakeFiles/gtest.dir/cmake_clean.cmake
383- build/tests/CMakeFiles/gtest.dir/cmake_clean_target.cmake
384- build/tests/CMakeFiles/gtest.dir/depend.internal
385- build/tests/CMakeFiles/gtest.dir/depend.make
386- build/tests/CMakeFiles/gtest.dir/flags.make
387- build/tests/CMakeFiles/gtest.dir/link.txt
388- build/tests/CMakeFiles/gtest.dir/progress.make
389- build/tests/CMakeFiles/gtest.dir/usr/
390- build/tests/CMakeFiles/gtest.dir/usr/src/
391- build/tests/CMakeFiles/gtest.dir/usr/src/gtest/
392- build/tests/CMakeFiles/gtest.dir/usr/src/gtest/src/
393- build/tests/CMakeFiles/progress.marks
394- build/tests/CTestTestfile.cmake build/tests/Makefile
395- build/tests/cmake_install.cmake build/tests/copyright/
396- build/tests/copyright/CMakeFiles/
397- build/tests/copyright/CMakeFiles/CMakeDirectoryInformation.cmake
398- build/tests/copyright/CMakeFiles/progress.marks
399- build/tests/copyright/CTestTestfile.cmake
400- build/tests/copyright/Makefile
401- build/tests/copyright/cmake_install.cmake build/tests/core/
402- build/tests/core/CMakeFiles/
403- build/tests/core/CMakeFiles/CMakeDirectoryInformation.cmake
404- build/tests/core/CMakeFiles/progress.marks
405- build/tests/core/CTestTestfile.cmake build/tests/core/Makefile
406- build/tests/core/cmake_install.cmake build/tests/core/internal/
407- build/tests/core/internal/CMakeFiles/
408- build/tests/core/internal/CMakeFiles/CMakeDirectoryInformation.cmake
409- build/tests/core/internal/CMakeFiles/progress.marks
410- build/tests/core/internal/CTestTestfile.cmake
411- build/tests/core/internal/Makefile
412- build/tests/core/internal/cmake_install.cmake
413- build/tests/core/internal/persistent_string_cache_impl/
414- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/
415- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/CM
416- akeDirectoryInformation.cmake
417- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
418- rsistent_string_cache_impl_test.dir/
419- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
420- rsistent_string_cache_impl_test.dir/CXX.includecache
421- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
422- rsistent_string_cache_impl_test.dir/DependInfo.cmake
423- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
424- rsistent_string_cache_impl_test.dir/build.make
425- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
426- rsistent_string_cache_impl_test.dir/cmake_clean.cmake
427- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
428- rsistent_string_cache_impl_test.dir/depend.internal
429- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
430- rsistent_string_cache_impl_test.dir/depend.make
431- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
432- rsistent_string_cache_impl_test.dir/flags.make
433- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
434- rsistent_string_cache_impl_test.dir/link.txt
435- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pe
436- rsistent_string_cache_impl_test.dir/progress.make
437- build/tests/core/internal/persistent_string_cache_impl/CMakeFiles/pr
438- ogress.marks
439- build/tests/core/internal/persistent_string_cache_impl/CTestTestfile
440- .cmake
441- build/tests/core/internal/persistent_string_cache_impl/Makefile
442- build/tests/core/internal/persistent_string_cache_impl/cmake_install
443- .cmake
444- build/tests/core/internal/persistent_string_cache_impl/persistent_st
445- ring_cache_impl_test build/tests/core/persistent_cache/
446- build/tests/core/persistent_cache/CMakeFiles/
447- build/tests/core/persistent_cache/CMakeFiles/CMakeDirectoryInformati
448- on.cmake
449- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
450- ir/
451- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
452- ir/CXX.includecache
453- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
454- ir/DependInfo.cmake
455- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
456- ir/build.make
457- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
458- ir/cmake_clean.cmake
459- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
460- ir/depend.internal
461- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
462- ir/depend.make
463- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
464- ir/flags.make
465- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
466- ir/link.txt
467- build/tests/core/persistent_cache/CMakeFiles/persistent_cache_test.d
468- ir/progress.make
469- build/tests/core/persistent_cache/CMakeFiles/progress.marks
470- build/tests/core/persistent_cache/CTestTestfile.cmake
471- build/tests/core/persistent_cache/Makefile
472- build/tests/core/persistent_cache/cmake_install.cmake
473- build/tests/core/persistent_cache/persistent_cache_test
474- build/tests/core/persistent_string_cache/
475- build/tests/core/persistent_string_cache/CMakeFiles/
476- build/tests/core/persistent_string_cache/CMakeFiles/CMakeDirectoryIn
477- formation.cmake
478- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
479- g_cache_test.dir/
480- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
481- g_cache_test.dir/CXX.includecache
482- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
483- g_cache_test.dir/DependInfo.cmake
484- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
485- g_cache_test.dir/build.make
486- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
487- g_cache_test.dir/cmake_clean.cmake
488- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
489- g_cache_test.dir/depend.internal
490- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
491- g_cache_test.dir/depend.make
492- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
493- g_cache_test.dir/flags.make
494- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
495- g_cache_test.dir/link.txt
496- build/tests/core/persistent_string_cache/CMakeFiles/persistent_strin
497- g_cache_test.dir/progress.make
498- build/tests/core/persistent_string_cache/CMakeFiles/progress.marks
499- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/
500- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/C
501- XX.includecache
502- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/D
503- ependInfo.cmake
504- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/b
505- uild.make
506- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/c
507- make_clean.cmake
508- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/d
509- epend.internal
510- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/d
511- epend.make
512- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/f
513- lags.make
514- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/l
515- ink.txt
516- build/tests/core/persistent_string_cache/CMakeFiles/speed_test.dir/p
517- rogress.make
518- build/tests/core/persistent_string_cache/CTestTestfile.cmake
519- build/tests/core/persistent_string_cache/Makefile
520- build/tests/core/persistent_string_cache/cmake_install.cmake
521- build/tests/core/persistent_string_cache/persistent_string_cache_tes
522- t build/tests/core/persistent_string_cache/speed_test
523- build/tests/headers/ build/tests/headers/CMakeFiles/
524- build/tests/headers/CMakeFiles/CMakeDirectoryInformation.cmake
525- build/tests/headers/CMakeFiles/progress.marks
526- build/tests/headers/CTestTestfile.cmake build/tests/headers/Makefile
527- build/tests/headers/cmake_install.cmake build/tests/whitespace/
528- build/tests/whitespace/CMakeFiles/
529- build/tests/whitespace/CMakeFiles/CMakeDirectoryInformation.cmake
530- build/tests/whitespace/CMakeFiles/progress.marks
531- build/tests/whitespace/CTestTestfile.cmake
532- build/tests/whitespace/Makefile
533- build/tests/whitespace/cmake_install.cmake
534- * Started on debian packaging. added: debian/ debian/changelog
535- debian/control
536+ * Initial release
537
538 [ CI Train Bot ]
539 * New rebuild forced.
540
541 -- CI Train Bot <ci-train-bot@canonical.com> Wed, 05 Aug 2015 00:21:58 +0000
542-
543-persistent-cache-cpp (1.0.0) UNRELEASED; urgency=medium
544-
545- * Initial release.
546-
547- -- Michi Henning <michi.henning@canonical.com> Thu, 23 Jul 2015 14:17:33 +1000
548
549=== modified file 'doc/main_page.dox.in'
550--- doc/main_page.dox.in 2015-07-28 02:28:17 +0000
551+++ doc/main_page.dox.in 2015-08-19 21:49:27 +0000
552@@ -97,7 +97,7 @@
553 Setting | Value
554 ---------- | ------
555 Cache size | 100 MB
556-# Records | ~5120
557+# Records | ~5100
558 Record size | 20 kB, normal distribution, stddev = 7000
559
560 Running the test With a 7200 rpm spinning disk produces:
561@@ -112,9 +112,9 @@
562
563 Parameter | Value
564 -------------|------------
565-Reads | 112.6 MB/sec
566-Writes | 25.7 MB/sec
567-Records/sec | 7112
568+Reads | 80.4 MB/sec
569+Writes | 15.7 MB/sec
570+Records/sec | 4932
571
572 \note When benchmarking, make sure to compile in release mode. In debug
573 mode, a number of expensive assertions are turned on.
574
575=== modified file 'examples/CMakeLists.txt'
576--- examples/CMakeLists.txt 2015-07-27 05:06:45 +0000
577+++ examples/CMakeLists.txt 2015-08-19 21:49:27 +0000
578@@ -1,24 +1,17 @@
579-set (install_dir ${CMAKE_INSTALL_PREFIX}/share/doc/${LIBNAME}/examples)
580-
581-add_executable(string_cache string_cache.cpp)
582-target_link_libraries(string_cache ${LIBNAME})
583-
584-if ("${cmake_build_type_lower}" STREQUAL "coverage")
585- SET_PROPERTY(TARGET string_cache APPEND_STRING PROPERTY LINK_FLAGS "-g --coverage ")
586-endif()
587-
588-install(FILES string_cache.cpp
589- DESTINATION ${install_dir})
590-
591-add_executable(person_cache person_cache.cpp)
592-target_link_libraries(person_cache ${LIBNAME})
593-
594-if ("${cmake_build_type_lower}" STREQUAL "coverage")
595- SET_PROPERTY(TARGET person_cache APPEND_STRING PROPERTY LINK_FLAGS "-g --coverage ")
596-endif()
597-
598-install(FILES person_cache.cpp
599- DESTINATION ${install_dir})
600-
601-install(FILES README
602- DESTINATION ${install_dir})
603+set(install_dir ${CMAKE_INSTALL_PREFIX}/share/doc/${LIBNAME}/examples)
604+
605+set(examples
606+ string_cache
607+ person_cache
608+)
609+
610+foreach(e ${examples})
611+ add_executable(${e} ${e}.cpp)
612+ target_link_libraries(${e} ${LIBNAME})
613+ if ("${cmake_build_type_lower}" STREQUAL "coverage")
614+ SET_PROPERTY(TARGET ${e} APPEND_STRING PROPERTY LINK_FLAGS " -g --coverage")
615+ endif()
616+ install(FILES ${e}.cpp
617+ DESTINATION ${install_dir})
618+ add_test(${e}_test ${e})
619+endforeach()
620
621=== modified file 'include/core/internal/persistent_string_cache_stats.h'
622--- include/core/internal/persistent_string_cache_stats.h 2015-07-21 06:22:48 +0000
623+++ include/core/internal/persistent_string_cache_stats.h 2015-08-19 21:49:27 +0000
624@@ -42,7 +42,6 @@
625 , max_cache_size_(0)
626 , num_entries_(0)
627 , cache_size_(0)
628- , state_(Initialized)
629 {
630 clear();
631 hist_.resize(PersistentCacheStats::NUM_BINS, 0);
632@@ -68,6 +67,8 @@
633 int64_t misses_since_last_hit_;
634 int64_t longest_hit_run_;
635 int64_t longest_miss_run_;
636+ int64_t num_hit_runs_;
637+ int64_t num_miss_runs_;
638 int64_t ttl_evictions_;
639 int64_t lru_evictions_;
640 std::chrono::system_clock::time_point most_recent_hit_time_;
641@@ -88,9 +89,9 @@
642 ++hits_since_last_miss_;
643 ++hits_;
644 most_recent_hit_time_ = std::chrono::system_clock::now();
645- misses_since_last_hit_ = 0;
646 if (state_ != LastAccessWasHit)
647 {
648+ ++num_hit_runs_;
649 state_ = LastAccessWasHit;
650 misses_since_last_hit_ = 0;
651 }
652@@ -106,9 +107,9 @@
653 ++misses_since_last_hit_;
654 ++misses_;
655 most_recent_miss_time_ = std::chrono::system_clock::now();
656- hits_since_last_miss_ = 0;
657 if (state_ != LastAccessWasMiss)
658 {
659+ ++num_miss_runs_;
660 state_ = LastAccessWasMiss;
661 hits_since_last_miss_ = 0;
662 }
663@@ -138,12 +139,15 @@
664
665 void clear() noexcept
666 {
667+ state_ = Initialized;
668 hits_ = 0;
669 misses_ = 0;
670 hits_since_last_miss_ = 0;
671 misses_since_last_hit_ = 0;
672 longest_hit_run_ = 0;
673 longest_miss_run_ = 0;
674+ num_hit_runs_ = 0;
675+ num_miss_runs_ = 0;
676 ttl_evictions_ = 0;
677 lru_evictions_ = 0;
678 most_recent_hit_time_ = std::chrono::system_clock::time_point();
679@@ -160,7 +164,8 @@
680 using namespace std::chrono;
681
682 ostringstream os;
683- os << num_entries_ << " "
684+ os << state_ << " "
685+ << num_entries_ << " "
686 << cache_size_ << " "
687 << hits_ << " "
688 << misses_ << " "
689@@ -168,6 +173,8 @@
690 << misses_since_last_hit_ << " "
691 << longest_hit_run_ << " "
692 << longest_miss_run_ << " "
693+ << num_hit_runs_ << " "
694+ << num_miss_runs_ << " "
695 << ttl_evictions_ << " "
696 << lru_evictions_ << " "
697 << duration_cast<milliseconds>(most_recent_hit_time_.time_since_epoch()).count() << " "
698@@ -189,11 +196,13 @@
699 using namespace std::chrono;
700
701 istringstream is(s);
702+ int64_t state;
703 int64_t mrht;
704 int64_t mrmt;
705 int64_t lhrt;
706 int64_t lmrt;
707- is >> num_entries_
708+ is >> state
709+ >> num_entries_
710 >> cache_size_
711 >> hits_
712 >> misses_
713@@ -201,6 +210,8 @@
714 >> misses_since_last_hit_
715 >> longest_hit_run_
716 >> longest_miss_run_
717+ >> num_hit_runs_
718+ >> num_miss_runs_
719 >> ttl_evictions_
720 >> lru_evictions_
721 >> mrht
722@@ -212,6 +223,7 @@
723 is >> hist_[i];
724 }
725 assert(!is.bad());
726+ state_ = static_cast<State>(state);
727 most_recent_hit_time_ = system_clock::time_point(milliseconds(mrht));
728 most_recent_miss_time_ = system_clock::time_point(milliseconds(mrmt));
729 longest_hit_run_time_ = system_clock::time_point(milliseconds(lhrt));
730
731=== modified file 'include/core/persistent_cache_stats.h'
732--- include/core/persistent_cache_stats.h 2015-07-21 06:22:48 +0000
733+++ include/core/persistent_cache_stats.h 2015-08-19 21:49:27 +0000
734@@ -117,6 +117,26 @@
735 int64_t longest_miss_run() const noexcept;
736
737 /**
738+ \brief Returns the number of hit runs.
739+ */
740+ int64_t hit_runs() const noexcept;
741+
742+ /**
743+ \brief Returns the number of miss runs.
744+ */
745+ int64_t miss_runs() const noexcept;
746+
747+ /**
748+ \brief Returns a rolling average of the hit run length.
749+ */
750+ double avg_hit_run_length() const noexcept;
751+
752+ /**
753+ \brief Returns a rolling average of the miss run length.
754+ */
755+ double avg_miss_run_length() const noexcept;
756+
757+ /**
758 \brief Returns the number of entries that were evicted due to being expired.
759 */
760 int64_t ttl_evictions() const noexcept;
761
762=== modified file 'src/core/internal/persistent_string_cache_impl.cpp'
763--- src/core/internal/persistent_string_cache_impl.cpp 2015-07-21 06:22:48 +0000
764+++ src/core/internal/persistent_string_cache_impl.cpp 2015-08-19 21:49:27 +0000
765@@ -154,7 +154,7 @@
766 // with a different schema version, the cache is simply thrown away, so
767 // it will automatically be re-created using the latest schema.
768
769-static int const SCHEMA_VERSION = 2; // Increment whenever schema changes!
770+static int const SCHEMA_VERSION = 3; // Increment whenever schema changes!
771
772 // Prefixes to divide the key space into logical tables/indexes.
773 // All prefixes must have length 1. The end prefix must be
774
775=== modified file 'src/core/persistent_cache_stats.cpp'
776--- src/core/persistent_cache_stats.cpp 2015-07-21 06:22:48 +0000
777+++ src/core/persistent_cache_stats.cpp 2015-08-19 21:49:27 +0000
778@@ -157,6 +157,26 @@
779 return p_->longest_miss_run_;
780 }
781
782+int64_t PersistentCacheStats::hit_runs() const noexcept
783+{
784+ return p_->num_hit_runs_;
785+}
786+
787+int64_t PersistentCacheStats::miss_runs() const noexcept
788+{
789+ return p_->num_miss_runs_;
790+}
791+
792+double PersistentCacheStats::avg_hit_run_length() const noexcept
793+{
794+ return p_->num_hit_runs_ == 0 ? 0.0 : double(p_->hits_) / p_->num_hit_runs_;
795+}
796+
797+double PersistentCacheStats::avg_miss_run_length() const noexcept
798+{
799+ return p_->num_miss_runs_ == 0 ? 0.0 : double(p_->misses_) / p_->num_miss_runs_;
800+}
801+
802 int64_t PersistentCacheStats::ttl_evictions() const noexcept
803 {
804 return p_->ttl_evictions_;
805
806=== modified file 'tests/core/internal/persistent_string_cache_impl/persistent_string_cache_impl_test.cpp'
807--- tests/core/internal/persistent_string_cache_impl/persistent_string_cache_impl_test.cpp 2015-08-05 00:11:19 +0000
808+++ tests/core/internal/persistent_string_cache_impl/persistent_string_cache_impl_test.cpp 2015-08-19 21:49:27 +0000
809@@ -1679,6 +1679,10 @@
810 EXPECT_EQ(original_stats.misses_since_last_hit(), s.misses_since_last_hit());
811 EXPECT_EQ(original_stats.longest_hit_run(), s.longest_hit_run());
812 EXPECT_EQ(original_stats.longest_miss_run(), s.longest_miss_run());
813+ EXPECT_EQ(original_stats.hit_runs(), s.hit_runs());
814+ EXPECT_EQ(original_stats.miss_runs(), s.miss_runs());
815+ EXPECT_EQ(original_stats.avg_hit_run_length(), s.avg_hit_run_length());
816+ EXPECT_EQ(original_stats.avg_miss_run_length(), s.avg_miss_run_length());
817 EXPECT_EQ(original_stats.ttl_evictions(), s.ttl_evictions());
818 EXPECT_EQ(original_stats.lru_evictions(), s.lru_evictions());
819
820@@ -1743,6 +1747,10 @@
821 EXPECT_EQ(0, s.misses_since_last_hit());
822 EXPECT_EQ(0, s.longest_hit_run());
823 EXPECT_EQ(0, s.longest_miss_run());
824+ EXPECT_EQ(0, s.hit_runs());
825+ EXPECT_EQ(0, s.miss_runs());
826+ EXPECT_EQ(0.0, s.avg_hit_run_length());
827+ EXPECT_EQ(0.0, s.avg_miss_run_length());
828 EXPECT_EQ(0, s.ttl_evictions());
829 EXPECT_EQ(0, s.lru_evictions());
830
831@@ -1754,6 +1762,121 @@
832 }
833 }
834
835+TEST(PersistentStringCacheImpl, run_length_stats)
836+{
837+ unlink_db(TEST_DB);
838+
839+ PersistentStringCacheImpl c(TEST_DB, 128, CacheDiscardPolicy::lru_only);
840+
841+ c.put("x", "x"); // Just so we have something we can generate a hit on.
842+
843+ auto s = c.stats();
844+
845+ EXPECT_EQ(0, s.hits());
846+ EXPECT_EQ(0, s.misses());
847+ EXPECT_EQ(0, s.hit_runs());
848+ EXPECT_EQ(0, s.miss_runs());
849+ EXPECT_EQ(0.0, s.avg_hit_run_length());
850+ EXPECT_EQ(0.0, s.avg_miss_run_length());
851+
852+ string val;
853+
854+ c.get("not there", val); // Miss
855+ s = c.stats();
856+ EXPECT_EQ(0, s.hits());
857+ EXPECT_EQ(1, s.misses());
858+ EXPECT_EQ(0, s.hit_runs());
859+ EXPECT_EQ(1, s.miss_runs()); // Just started a miss run
860+ EXPECT_EQ(0.0, s.avg_hit_run_length());
861+ EXPECT_EQ(1.0, s.avg_miss_run_length());
862+
863+ c.get("not there", val); // Another miss
864+ s = c.stats();
865+ EXPECT_EQ(0, s.hits());
866+ EXPECT_EQ(2, s.misses());
867+ EXPECT_EQ(0, s.hit_runs());
868+ EXPECT_EQ(1, s.miss_runs()); // Still in the same run
869+ EXPECT_EQ(0.0, s.avg_hit_run_length());
870+ EXPECT_EQ(2.0, s.avg_miss_run_length());
871+
872+ c.get("x", val); // Hit
873+ s = c.stats();
874+ EXPECT_EQ(1, s.hits());
875+ EXPECT_EQ(2, s.misses());
876+ EXPECT_EQ(1, s.hit_runs()); // Just started a hit run
877+ EXPECT_EQ(1, s.miss_runs());
878+ EXPECT_EQ(1.0, s.avg_hit_run_length());
879+ EXPECT_EQ(2.0, s.avg_miss_run_length()); // Last run was two misses
880+
881+ c.get("not there", val); // Another miss
882+ s = c.stats();
883+ EXPECT_EQ(1, s.hits());
884+ EXPECT_EQ(3, s.misses());
885+ EXPECT_EQ(1, s.hit_runs());
886+ EXPECT_EQ(2, s.miss_runs()); // Just started a new miss run
887+ EXPECT_EQ(1.0, s.avg_hit_run_length());
888+ EXPECT_EQ(1.5, s.avg_miss_run_length()); // Last run was two misses
889+
890+ for (int i = 0; i < 3; ++i) // Three more misses
891+ {
892+ c.get("not there", val);
893+ }
894+ s = c.stats();
895+ EXPECT_EQ(1, s.hits());
896+ EXPECT_EQ(6, s.misses());
897+ EXPECT_EQ(1, s.hit_runs());
898+ EXPECT_EQ(2, s.miss_runs()); // Just started a new miss run
899+ EXPECT_EQ(1.0, s.avg_hit_run_length());
900+ EXPECT_EQ(3.0, s.avg_miss_run_length());
901+
902+ c.get("x", val); // Hit
903+ s = c.stats();
904+ EXPECT_EQ(2, s.hits());
905+ EXPECT_EQ(6, s.misses());
906+ EXPECT_EQ(2, s.hit_runs());
907+ EXPECT_EQ(2, s.miss_runs());
908+ EXPECT_EQ(1.0, s.avg_hit_run_length());
909+ EXPECT_EQ(3.0, s.avg_miss_run_length()); // 6 missing in 2 runs.
910+}
911+
912+TEST(PersistentStringCacheImpl, run_length_stats_restart)
913+{
914+ // Don't unlink the DB here, we need the contents from the previous test.
915+
916+ PersistentStringCacheImpl c(TEST_DB, 128, CacheDiscardPolicy::lru_only);
917+
918+ string val;
919+
920+ auto s = c.stats();
921+
922+ // Stats from pervious test must still be intact.
923+ EXPECT_EQ(2, s.hits());
924+ EXPECT_EQ(6, s.misses());
925+ EXPECT_EQ(2, s.hit_runs());
926+ EXPECT_EQ(2, s.miss_runs());
927+ EXPECT_EQ(1.0, s.avg_hit_run_length());
928+ EXPECT_EQ(3.0, s.avg_miss_run_length());
929+
930+ for (int i = 0; i < 18; ++i)
931+ {
932+ c.get("x", val); // Hit
933+ }
934+
935+ // Finish hit run, and add six more misses.
936+ for (int i = 0; i < 6; ++i)
937+ {
938+ c.get("not there", val);
939+ }
940+
941+ s = c.stats();
942+ EXPECT_EQ(20, s.hits());
943+ EXPECT_EQ(12, s.misses());
944+ EXPECT_EQ(2, s.hit_runs());
945+ EXPECT_EQ(3, s.miss_runs());
946+ EXPECT_EQ(10.0, s.avg_hit_run_length());
947+ EXPECT_EQ(4.0, s.avg_miss_run_length());
948+}
949+
950 TEST(PersistentStringCacheImpl, event_handlers)
951 {
952 unlink_db(TEST_DB);

Subscribers

People subscribed via source and target branches

to all changes: