Update binary stats selftest to support sanity test for stats
read/write mode and offset.

Signed-off-by: Jing Zhang <[email protected]>
---
 tools/testing/selftests/kvm/kvm_binary_stats_test.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c 
b/tools/testing/selftests/kvm/kvm_binary_stats_test.c
index d85859a6815a..2a34b5e822e8 100644
--- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c
+++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c
@@ -77,6 +77,8 @@ static void stats_test(int stats_fd)
                                <= KVM_STATS_UNIT_MAX, "Unknown KVM stats 
unit");
                TEST_ASSERT((pdesc->flags & KVM_STATS_BASE_MASK)
                                <= KVM_STATS_BASE_MAX, "Unknown KVM stats 
base");
+               TEST_ASSERT((pdesc->flags & KVM_STATS_MODE_MASK)
+                               <= KVM_STATS_MODE_MAX, "Unknown KVM stats 
mode");
                /* Check exponent for stats unit
                 * Exponent for counter should be greater than or equal to 0
                 * Exponent for unit bytes should be greater than or equal to 0
@@ -106,11 +108,18 @@ static void stats_test(int stats_fd)
        }
        /* Check overlap */
        TEST_ASSERT(header->data_offset >= header->desc_offset
-                       || header->data_offset + size_data <= 
header->desc_offset,
-                       "Data block is overlapped with Descriptor block");
+               || header->data_offset + size_data <= header->desc_offset,
+               "Data block is overlapped with Descriptor block");
        /* Check validity of all stats data size */
        TEST_ASSERT(size_data >= header->count * sizeof(stats_data->value[0]),
                        "Data size is not correct");
+       /* Check stats offset */
+       for (i = 0; i < header->count; ++i) {
+               pdesc = (void *)stats_desc + i * size_desc;
+               TEST_ASSERT(pdesc->offset < size_data,
+                       "Invalid offset (%u) for stats: %s",
+                       pdesc->offset, pdesc->name);
+       }
 
        /* Allocate memory for stats data */
        stats_data = malloc(size_data);
-- 
2.32.0.272.g935e593368-goog

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to