Blame SOURCES/kvm-tests-arm-cpu-features-Check-feature-default-values.patch

ddf19c
From 323889aa2182bf39df10f1caf43f22daea2d7d37 Mon Sep 17 00:00:00 2001
ddf19c
From: Andrew Jones <drjones@redhat.com>
ddf19c
Date: Fri, 31 Jan 2020 14:23:12 +0000
ddf19c
Subject: [PATCH 10/15] tests/arm-cpu-features: Check feature default values
ddf19c
MIME-Version: 1.0
ddf19c
Content-Type: text/plain; charset=UTF-8
ddf19c
Content-Transfer-Encoding: 8bit
ddf19c
ddf19c
RH-Author: Andrew Jones <drjones@redhat.com>
ddf19c
Message-id: <20200131142314.13175-4-drjones@redhat.com>
ddf19c
Patchwork-id: 93626
ddf19c
O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH 3/5] tests/arm-cpu-features: Check feature default values
ddf19c
Bugzilla: 1647366
ddf19c
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
ddf19c
RH-Acked-by: Auger Eric <eric.auger@redhat.com>
ddf19c
RH-Acked-by: Gavin Shan <gshan@redhat.com>
ddf19c
ddf19c
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1647366
ddf19c
ddf19c
Author: Andrew Jones <drjones@redhat.com>
ddf19c
Date:   Thu, 30 Jan 2020 16:02:06 +0000
ddf19c
ddf19c
    tests/arm-cpu-features: Check feature default values
ddf19c
ddf19c
    If we know what the default value should be then we can test for
ddf19c
    that as well as the feature existence.
ddf19c
ddf19c
    Signed-off-by: Andrew Jones <drjones@redhat.com>
ddf19c
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
ddf19c
    Message-id: 20200120101023.16030-5-drjones@redhat.com
ddf19c
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
ddf19c
ddf19c
(cherry picked from commit 789a35efb583464f9fcd5d871a7fd6164318bb91)
ddf19c
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
ddf19c
---
ddf19c
 tests/arm-cpu-features.c | 37 ++++++++++++++++++++++++++++---------
ddf19c
 1 file changed, 28 insertions(+), 9 deletions(-)
ddf19c
ddf19c
diff --git a/tests/arm-cpu-features.c b/tests/arm-cpu-features.c
ddf19c
index 6e99aa9..89285ca 100644
ddf19c
--- a/tests/arm-cpu-features.c
ddf19c
+++ b/tests/arm-cpu-features.c
ddf19c
@@ -159,6 +159,25 @@ static bool resp_get_feature(QDict *resp, const char *feature)
ddf19c
     qobject_unref(_resp);                                              \
ddf19c
 })
ddf19c
 
ddf19c
+#define assert_feature(qts, cpu_type, feature, expected_value)         \
ddf19c
+({                                                                     \
ddf19c
+    QDict *_resp, *_props;                                             \
ddf19c
+                                                                       \
ddf19c
+    _resp = do_query_no_props(qts, cpu_type);                          \
ddf19c
+    g_assert(_resp);                                                   \
ddf19c
+    g_assert(resp_has_props(_resp));                                   \
ddf19c
+    _props = resp_get_props(_resp);                                    \
ddf19c
+    g_assert(qdict_get(_props, feature));                              \
ddf19c
+    g_assert(qdict_get_bool(_props, feature) == (expected_value));     \
ddf19c
+    qobject_unref(_resp);                                              \
ddf19c
+})
ddf19c
+
ddf19c
+#define assert_has_feature_enabled(qts, cpu_type, feature)             \
ddf19c
+    assert_feature(qts, cpu_type, feature, true)
ddf19c
+
ddf19c
+#define assert_has_feature_disabled(qts, cpu_type, feature)            \
ddf19c
+    assert_feature(qts, cpu_type, feature, false)
ddf19c
+
ddf19c
 static void assert_type_full(QTestState *qts)
ddf19c
 {
ddf19c
     const char *error;
ddf19c
@@ -405,16 +424,16 @@ static void test_query_cpu_model_expansion(const void *data)
ddf19c
     assert_error(qts, "host", "The CPU type 'host' requires KVM", NULL);
ddf19c
 
ddf19c
     /* Test expected feature presence/absence for some cpu types */
ddf19c
-    assert_has_feature(qts, "max", "pmu");
ddf19c
-    assert_has_feature(qts, "cortex-a15", "pmu");
ddf19c
+    assert_has_feature_enabled(qts, "max", "pmu");
ddf19c
+    assert_has_feature_enabled(qts, "cortex-a15", "pmu");
ddf19c
     assert_has_not_feature(qts, "cortex-a15", "aarch64");
ddf19c
 
ddf19c
     if (g_str_equal(qtest_get_arch(), "aarch64")) {
ddf19c
-        assert_has_feature(qts, "max", "aarch64");
ddf19c
-        assert_has_feature(qts, "max", "sve");
ddf19c
-        assert_has_feature(qts, "max", "sve128");
ddf19c
-        assert_has_feature(qts, "cortex-a57", "pmu");
ddf19c
-        assert_has_feature(qts, "cortex-a57", "aarch64");
ddf19c
+        assert_has_feature_enabled(qts, "max", "aarch64");
ddf19c
+        assert_has_feature_enabled(qts, "max", "sve");
ddf19c
+        assert_has_feature_enabled(qts, "max", "sve128");
ddf19c
+        assert_has_feature_enabled(qts, "cortex-a57", "pmu");
ddf19c
+        assert_has_feature_enabled(qts, "cortex-a57", "aarch64");
ddf19c
 
ddf19c
         sve_tests_default(qts, "max");
ddf19c
 
ddf19c
@@ -451,8 +470,8 @@ static void test_query_cpu_model_expansion_kvm(const void *data)
ddf19c
         QDict *resp;
ddf19c
         char *error;
ddf19c
 
ddf19c
-        assert_has_feature(qts, "host", "aarch64");
ddf19c
-        assert_has_feature(qts, "host", "pmu");
ddf19c
+        assert_has_feature_enabled(qts, "host", "aarch64");
ddf19c
+        assert_has_feature_enabled(qts, "host", "pmu");
ddf19c
 
ddf19c
         assert_error(qts, "cortex-a15",
ddf19c
             "We cannot guarantee the CPU type 'cortex-a15' works "
ddf19c
-- 
ddf19c
1.8.3.1
ddf19c