[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 29/34] qapi: Implement deprecated-output=hide for QMP even
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v4 29/34] qapi: Implement deprecated-output=hide for QMP events |
Date: |
Wed, 18 Mar 2020 17:59:31 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Eric Blake <address@hidden> writes:
> On 3/17/20 6:54 AM, Markus Armbruster wrote:
>> This policy suppresses deprecated bits in output, and thus permits
>> "testing the future". Implement it for QMP events: suppress
>> deprecated ones.
>>
>> No QMP event is deprecated right now.
>>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>
>> @@ -140,6 +141,23 @@ static void test_event_d(TestEventData *data,
>> qobject_unref(data->expect);
>> }
>> +static void test_event_deprecated(TestEventData *data, const void
>> *unused)
>> +{
>> + data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST-EVENT-FEATURES1' }");
>> +
>> + memset(&compat_policy, 0, sizeof(compat_policy));
>> +
>> + qapi_event_send_test_event_features1();
>> + g_assert(data->emitted);
>> +
>> + compat_policy.deprecated_output = COMPAT_POLICY_OUTPUT_HIDE;
>
> Umm, did you forget to set compat_policy.has_deprecated_output = true?
I did. Works anyway, because I don't bother checking it. I'll clean it
up.
> (proof that we really want QAPI defaults to be working, to get rid of
> pointless has_* members...)
>
>> + data->emitted = false;
>> + qapi_event_send_test_event_features1();
>> + g_assert(!data->emitted);
>> +
>> + qobject_unref(data->expect);
>> +}
>> +
>
>> +++ b/scripts/qapi/events.py
>> @@ -61,7 +61,8 @@ def gen_param_var(typ):
>> return ret
>> -def gen_event_send(name, arg_type, boxed, event_enum_name,
>> event_emit):
>> +def gen_event_send(name, arg_type, features, boxed,
>> + event_enum_name, event_emit):
>> # FIXME: Our declaration of local variables (and of 'errp' in the
>> # parameter list) can collide with exploded members of the event's
>> # data type passed in as parameters. If this collision ever hits in
>> @@ -86,6 +87,14 @@ def gen_event_send(name, arg_type, boxed,
>> event_enum_name, event_emit):
>> if not boxed:
>> ret += gen_param_var(arg_type)
>> + if 'deprecated' in [f.name for f in features]:
>> + ret += mcgen('''
>> +
>> + if (compat_policy.deprecated_output == COMPAT_POLICY_OUTPUT_HIDE) {
>> + return;
>
> Here, you took the shortcut that if we always 0-initialize,
> deprecated_output will never be true except when has_deprecated_output
> is also true. But the test above violated that rule of thumb.
Generated code ensures FOO is zero when !has_FOO. Manual code should do
the same.
The pedantically correct check
has_FOO && FOO == some_non_zero_value
can then safely be abbreviated to just
FOO == some_non_zero_value
which I find less turing and more more legible.
> Otherwise, this patch makes sense.
Thanks!
- [PATCH v4 32/34] qapi: Implement deprecated-input=reject for QMP commands, (continued)
- [PATCH v4 32/34] qapi: Implement deprecated-input=reject for QMP commands, Markus Armbruster, 2020/03/17
- [PATCH v4 28/34] qapi: Implement deprecated-output=hide for QMP command results, Markus Armbruster, 2020/03/17
- [PATCH v4 25/34] qapi: New special feature flag "deprecated", Markus Armbruster, 2020/03/17
- [PATCH v4 13/34] qapi: Consistently put @features parameter right after @ifcond, Markus Armbruster, 2020/03/17
- [PATCH v4 29/34] qapi: Implement deprecated-output=hide for QMP events, Markus Armbruster, 2020/03/17
- [PATCH v4 34/34] qapi: New -compat deprecated-input=crash, Markus Armbruster, 2020/03/17
- [PATCH v4 19/34] qapi/schema: Call QAPIDoc.connect_member() in just one place, Markus Armbruster, 2020/03/17
- [PATCH v4 26/34] qapi: Mark deprecated QMP parts with feature 'deprecated', Markus Armbruster, 2020/03/17
- [PATCH v4 17/34] qapi/schema: Reorder classes so related ones are together, Markus Armbruster, 2020/03/17
- [PATCH v4 31/34] qapi: Implement deprecated-output=hide for QMP introspection, Markus Armbruster, 2020/03/17
- [PATCH v4 33/34] qapi: Implement deprecated-input=reject for QMP command arguments, Markus Armbruster, 2020/03/17
- [PATCH v4 12/34] qapi: Add feature flags to remaining definitions, Markus Armbruster, 2020/03/17
- [PATCH v4 20/34] qapi: Add feature flags to struct members, Markus Armbruster, 2020/03/17