@@ -190,6 +190,51 @@ mod tests {
190
190
assert ! ( !cache. has( & checksum) ) ;
191
191
}
192
192
193
+ #[ test]
194
+ fn hit_metric_works ( ) {
195
+ let mut cache = PinnedMemoryCache :: new ( ) ;
196
+
197
+ // Create module
198
+ let wasm = wat:: parse_str (
199
+ r#"(module
200
+ (type $t0 (func (param i32) (result i32)))
201
+ (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32)
202
+ local.get $p0
203
+ i32.const 1
204
+ i32.add)
205
+ )"# ,
206
+ )
207
+ . unwrap ( ) ;
208
+ let checksum = Checksum :: generate ( & wasm) ;
209
+
210
+ assert ! ( !cache. has( & checksum) ) ;
211
+
212
+ // Add
213
+ let engine = make_compiling_engine ( TESTING_MEMORY_LIMIT ) ;
214
+ let original = compile ( & engine, & wasm) . unwrap ( ) ;
215
+ let module = CachedModule {
216
+ module : original,
217
+ engine : make_runtime_engine ( TESTING_MEMORY_LIMIT ) ,
218
+ size_estimate : 0 ,
219
+ } ;
220
+ cache. store ( & checksum, module) . unwrap ( ) ;
221
+
222
+ let ( _checksum, module) = cache
223
+ . iter ( )
224
+ . find ( |( iter_checksum, _module) | * * iter_checksum == checksum)
225
+ . unwrap ( ) ;
226
+
227
+ assert_eq ! ( module. hits, 0 ) ;
228
+
229
+ let _ = cache. load ( & checksum) . unwrap ( ) ;
230
+ let ( _checksum, module) = cache
231
+ . iter ( )
232
+ . find ( |( iter_checksum, _module) | * * iter_checksum == checksum)
233
+ . unwrap ( ) ;
234
+
235
+ assert_eq ! ( module. hits, 1 ) ;
236
+ }
237
+
193
238
#[ test]
194
239
fn len_works ( ) {
195
240
let mut cache = PinnedMemoryCache :: new ( ) ;
0 commit comments