From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZIHy0-0007at-40 for qemu-devel@nongnu.org; Thu, 23 Jul 2015 10:59:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZIHxu-00080k-69 for qemu-devel@nongnu.org; Thu, 23 Jul 2015 10:59:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42258) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZIHxt-00080d-Ty for qemu-devel@nongnu.org; Thu, 23 Jul 2015 10:59:18 -0400 References: <1435782155-31412-1-git-send-email-armbru@redhat.com> <1435782155-31412-15-git-send-email-armbru@redhat.com> <55AE3E6D.4000008@redhat.com> From: Eric Blake Message-ID: <55B1013F.1030704@redhat.com> Date: Thu, 23 Jul 2015 08:59:11 -0600 MIME-Version: 1.0 In-Reply-To: <55AE3E6D.4000008@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="IaNWJicw7vtPQ0bHCpGmSDhcaaJhjbcXU" Subject: Re: [Qemu-devel] [PATCH RFC v2 14/47] qapi-tests: New tests for union, alternate command arguments List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , qemu-devel@nongnu.org Cc: kwolf@redhat.com, berto@igalia.com, mdroth@linux.vnet.ibm.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --IaNWJicw7vtPQ0bHCpGmSDhcaaJhjbcXU Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 07/21/2015 06:43 AM, Eric Blake wrote: > On 07/01/2015 02:22 PM, Markus Armbruster wrote: >> A command's 'data' must be a struct type, given either as a >> dictionary, or as struct type name. >> >> Existing test case data-int.json covers simple type 'int'. Add test >> cases for type names referring to union and alternate types. >=20 > We could probably relax things to allow a union (which is always a > dictionary on the wire), but I agree that allowing an alternate type is= > not appropriate (the goal here is that we require a dictionary). But > it's also easier to be conservative now and relax later. >=20 >> +++ b/tests/qapi-schema/args-alternate.json >> @@ -0,0 +1,4 @@ >> +# we do not allow alternate arguments >> +# TODO should we support this? >=20 > I see no reason to allow a non-dictionary in QMP, so this TODO could be= > dropped. Or, to be clear, we document that arguments is always a dictionary, for: { "execute":"command", "arguments":{} }. Allowing an alternate would break that, so it is a different level of change to allow an alternate (change the QMP protocol) than what it would be to allow a union (the QMP protocol is unchanged). Not that we can't do it if we ever have a reason, it's just that I don't see it being worth a TODO statement. >=20 >> +++ b/tests/qapi-schema/args-union.json >> @@ -0,0 +1,4 @@ >> +# FIXME we should reject union arguments >> +# TODO should we support this? >> +{ 'union': 'Uni', 'data': { 'case1': 'int', 'case2': 'str' } } >> +{ 'command': 'oops', 'data': 'Uni' } >=20 > This, on the other hand, seems valid from the wire format (it will > always be a dictionary). I guess the problem is that we generate a C > function signature based by calling out each member of the dictionary -= > but how do you do that for a union? So I see what you are doing: > marking that this test currently passes the parser, but then causes > problems for generating C code, so we should either reject it up front,= > or fix the generator. The FIXME documents what you will do later in th= e > series (reject it up front) and the TODO documents what we can do down > the road (fix the generator to allow it). See also 32/47 - events have the same problem. --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --IaNWJicw7vtPQ0bHCpGmSDhcaaJhjbcXU Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJVsQE/AAoJEKeha0olJ0Nq/CQH/RRLSZ+fTpUdMpLUhtljCuAJ b0py917st1Pn0FVGci+nqh4FsR3XoBW6Yu+m4Nem76XgqoTgDaRLa/csQt40EDz8 WYnHyRrx6Z/2fXFtbE+fRNHCfLsZVmKgFxjeSQcBv+JlRcRLVdcA5QtuYHtxyvzX uC3PIK4b73aRTXphcQCz9mJlWUVJHvYbFw3KFzdyUOiQzaxtmtutgZL6tr5AYpFH elgKElDFbKz5xlz00Z1teGcfGyEFMz03OlBzuGeW/Vzt9PsLdM6vA0zQCx/JbaoF d0VA7te7NtPn0zI7SFQO5C4T589s8y+xuExcWuynowjkcHv1vfYVlpkeeStoX0s= =I9c/ -----END PGP SIGNATURE----- --IaNWJicw7vtPQ0bHCpGmSDhcaaJhjbcXU--