From f9d284461d7027418befff07957408892ab06009 Mon Sep 17 00:00:00 2001 From: Expotential108 Date: Tue, 29 Nov 2022 17:49:12 +0900 Subject: [PATCH] fix: getmetrics test due to this is environment-dependent test (#80) * fix: GetMetrics test to be less strict * fix: get_metrics test to be less strict * revert: SizeMemoryCache --- api/lib_test.go | 93 +++++++++++++++++++----------------------- lib_test.go | 93 +++++++++++++++++++----------------------- libwasmvm/src/cache.rs | 39 ++++++++++++------ 3 files changed, 109 insertions(+), 116 deletions(-) diff --git a/api/lib_test.go b/api/lib_test.go index 3c67ed2..1f367de 100644 --- a/api/lib_test.go +++ b/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: 5665691, - }, 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, 5665691, 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: 5665691, - }, 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, 5665691, 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: 5665691, - SizeMemoryCache: 5665691, - }, 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, 5665691, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5665691, 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: 5665691, - SizeMemoryCache: 5665691, - }, 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, 5665691, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5665691, 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: 5665691, - }, 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, 5665691, 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: 5665691, - }, 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, 5665691, metrics.SizeMemoryCache, 0.18) } func TestInstantiate(t *testing.T) { diff --git a/lib_test.go b/lib_test.go index 983340f..1f792ae 100644 --- a/lib_test.go +++ b/lib_test.go @@ -132,12 +132,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: 5665691, - }, 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, 5665691, metrics.SizeMemoryCache, 0.18) // Instantiate 2 msg2 := []byte(`{"verifier": "fred", "beneficiary": "susi"}`) @@ -147,13 +146,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: 5665691, - }, 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, 5665691, metrics.SizeMemoryCache, 0.18) // Pin err = vm.Pin(checksum) @@ -161,15 +158,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: 5665691, - SizeMemoryCache: 5665691, - }, 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, 5665691, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5665691, metrics.SizeMemoryCache, 0.18) // Instantiate 3 msg3 := []byte(`{"verifier": "fred", "beneficiary": "bert"}`) @@ -179,16 +174,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: 5665691, - SizeMemoryCache: 5665691, - }, 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, 5665691, metrics.SizePinnedMemoryCache, 0.18) + require.InEpsilon(t, 5665691, metrics.SizeMemoryCache, 0.18) // Unpin err = vm.Unpin(checksum) @@ -196,16 +189,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: 5665691, - }, 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, 5665691, metrics.SizeMemoryCache, 0.18) // Instantiate 4 msg4 := []byte(`{"verifier": "fred", "beneficiary": "jeff"}`) @@ -215,14 +206,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: 5665691, - }, 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, 5665691, metrics.SizeMemoryCache, 0.18) } diff --git a/libwasmvm/src/cache.rs b/libwasmvm/src/cache.rs index 5351d1d..a2c6de9 100644 --- a/libwasmvm/src/cache.rs +++ b/libwasmvm/src/cache.rs @@ -693,19 +693,34 @@ 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: 5665691, - 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 = 5665691; // +/- 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();