diff --git a/internal/api/lib_test.go b/internal/api/lib_test.go index b4bff8da4..3ac275512 100644 --- a/internal/api/lib_test.go +++ b/internal/api/lib_test.go @@ -197,12 +197,11 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 3 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsFsCache: 1, - ElementsMemoryCache: 1, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(0), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 2 msg2 := []byte(`{"verifier": "fred", "beneficiary": "susi"}`) @@ -211,13 +210,11 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 4 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsMemoryCache: 1, - HitsFsCache: 1, - ElementsMemoryCache: 1, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Pin err = Pin(cache, checksum) @@ -225,15 +222,13 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 5 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 1, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 5602873, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 3 msg3 := []byte(`{"verifier": "fred", "beneficiary": "bert"}`) @@ -242,16 +237,14 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 6 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 1, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 5602873, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Unpin err = Unpin(cache, checksum) @@ -259,16 +252,14 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 7 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 0, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 0, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 4 msg4 := []byte(`{"verifier": "fred", "beneficiary": "jeff"}`) @@ -277,16 +268,14 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 8 metrics, err = GetMetrics(cache) - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 3, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 0, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 0, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(3), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) } func TestInstantiate(t *testing.T) { diff --git a/lib_test.go b/lib_test.go index 0406b6547..b6c087b77 100644 --- a/lib_test.go +++ b/lib_test.go @@ -194,12 +194,11 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 3 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsFsCache: 1, - ElementsMemoryCache: 1, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(0), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 2 msg2 := []byte(`{"verifier": "fred", "beneficiary": "susi"}`) @@ -209,13 +208,11 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 4 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsMemoryCache: 1, - HitsFsCache: 1, - ElementsMemoryCache: 1, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Pin err = vm.Pin(checksum) @@ -223,15 +220,13 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 5 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 1, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 5602873, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 3 msg3 := []byte(`{"verifier": "fred", "beneficiary": "bert"}`) @@ -241,16 +236,14 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 6 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 1, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 5602873, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(1), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Unpin err = vm.Unpin(checksum) @@ -258,16 +251,14 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 7 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 2, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 0, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 0, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(2), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) // Instantiate 4 msg4 := []byte(`{"verifier": "fred", "beneficiary": "jeff"}`) @@ -277,14 +268,12 @@ func TestGetMetrics(t *testing.T) { // GetMetrics 8 metrics, err = vm.GetMetrics() - require.NoError(t, err) - assert.Equal(t, &types.Metrics{ - HitsPinnedMemoryCache: 1, - HitsMemoryCache: 3, - HitsFsCache: 1, - ElementsPinnedMemoryCache: 0, - ElementsMemoryCache: 1, - SizePinnedMemoryCache: 0, - SizeMemoryCache: 5602873, - }, metrics) + assert.NoError(t, err) + require.Equal(t, uint32(1), metrics.HitsPinnedMemoryCache) + require.Equal(t, uint32(3), metrics.HitsMemoryCache) + require.Equal(t, uint32(1), metrics.HitsFsCache) + require.Equal(t, uint64(0), metrics.ElementsPinnedMemoryCache) + require.Equal(t, uint64(1), metrics.ElementsMemoryCache) + require.Equal(t, uint64(0), metrics.SizePinnedMemoryCache) + require.InEpsilon(t, 5602873, metrics.SizeMemoryCache, 0.18) } diff --git a/libwasmvm/Cargo.toml b/libwasmvm/Cargo.toml index 1768ecbf4..ce99a94df 100644 --- a/libwasmvm/Cargo.toml +++ b/libwasmvm/Cargo.toml @@ -3,7 +3,7 @@ name = "wasmvm" version = "1.0.0" publish = false authors = ["Ethan Frey "] -edition = "2018" +edition = "2021" description = "Go bindings for cosmwasm contracts" repository = "https://github.com/CosmWasm/wasmvm" license = "Apache-2.0" diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 2ac190474..e94b4bd3a 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -695,19 +695,32 @@ mod tests { let mut error_msg = UnmanagedVector::default(); let metrics = get_metrics(cache_ptr, Some(&mut error_msg)); let _ = error_msg.consume(); - assert_eq!( - metrics, - Metrics { - hits_pinned_memory_cache: 0, - hits_memory_cache: 0, - hits_fs_cache: 1, - misses: 0, - elements_pinned_memory_cache: 1, - elements_memory_cache: 0, - size_pinned_memory_cache: 5602873, - size_memory_cache: 0, - } + let Metrics { + hits_pinned_memory_cache, + hits_memory_cache, + hits_fs_cache, + misses, + elements_pinned_memory_cache, + elements_memory_cache, + size_pinned_memory_cache, + size_memory_cache, + } = metrics; + assert_eq!(hits_pinned_memory_cache, 0); + assert_eq!(hits_memory_cache, 0); + assert_eq!(hits_fs_cache, 1); + assert_eq!(misses, 0); + assert_eq!(elements_pinned_memory_cache, 1); + assert_eq!(elements_memory_cache, 0); + let expected = 5602873; // +/- 20% + assert!( + size_pinned_memory_cache > expected * 80 / 100, + "size_pinned_memory_cache: {size_pinned_memory_cache}" + ); + assert!( + size_pinned_memory_cache < expected * 120 / 100, + "size_pinned_memory_cache: {size_pinned_memory_cache}" ); + assert_eq!(size_memory_cache, 0); // Unpin let mut error_msg = UnmanagedVector::default();