qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

tests/qapi-schema: Avoid 'str' in alternate test cases

The next commit is going to make alternate members of type 'str'
conflict with other scalar types. Would break a few test cases that
don't actually require 'str'. Flip them from 'str' to 'bool' or
'EnumOne'.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1495471335-23707-4-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

+68 -64
+1 -1
tests/qapi-schema/alternate-clash.json
··· 5 5 # the implicit Alt1Kind enum, we would still have a collision with the 6 6 # resulting C union trying to have two members named 'a_b'. 7 7 { 'alternate': 'Alt1', 8 - 'data': { 'a-b': 'str', 'a_b': 'int' } } 8 + 'data': { 'a-b': 'bool', 'a_b': 'int' } }
+1 -1
tests/qapi-schema/alternate-nested.json
··· 1 1 # we reject a nested alternate branch 2 2 { 'alternate': 'Alt1', 3 - 'data': { 'name': 'str', 'value': 'int' } } 3 + 'data': { 'name': 'bool', 'value': 'int' } } 4 4 { 'alternate': 'Alt2', 5 5 'data': { 'nested': 'Alt1', 'b': 'bool' } }
+1 -1
tests/qapi-schema/args-alternate.json
··· 1 1 # we do not allow alternate arguments 2 - { 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } } 2 + { 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'bool' } } 3 3 { 'command': 'oops', 'data': 'Alt' }
+1 -1
tests/qapi-schema/doc-bad-alternate-member.json
··· 6 6 # @bb: b 7 7 ## 8 8 { 'alternate': 'AorB', 9 - 'data': { 'a': 'str', 'b': 'int' } } 9 + 'data': { 'a': 'bool', 'b': 'int' } }
+5 -4
tests/qapi-schema/qapi-schema-test.json
··· 93 93 { 'struct': 'WrapAlternate', 94 94 'data': { 'alt': 'UserDefAlternate' } } 95 95 { 'alternate': 'UserDefAlternate', 96 - 'data': { 'udfu': 'UserDefFlatUnion', 's': 'str', 'i': 'int' } } 96 + 'data': { 'udfu': 'UserDefFlatUnion', 'e': 'EnumOne', 'i': 'int' } } 97 97 98 98 { 'struct': 'UserDefC', 99 99 'data': { 'string1': 'str', 'string2': 'str' } } 100 100 101 101 # for testing use of 'number' within alternates 102 - { 'alternate': 'AltStrBool', 'data': { 's': 'str', 'b': 'bool' } } 103 - { 'alternate': 'AltStrNum', 'data': { 's': 'str', 'n': 'number' } } 102 + { 'alternate': 'AltEnumBool', 'data': { 'e': 'EnumOne', 'b': 'bool' } } 103 + { 'alternate': 'AltEnumNum', 'data': { 'e': 'EnumOne', 'n': 'number' } } 104 104 { 'alternate': 'AltNumStr', 'data': { 'n': 'number', 's': 'str' } } 105 - { 'alternate': 'AltStrInt', 'data': { 's': 'str', 'i': 'int' } } 105 + { 'alternate': 'AltNumEnum', 'data': { 'n': 'number', 'e': 'EnumOne' } } 106 + { 'alternate': 'AltEnumInt', 'data': { 'e': 'EnumOne', 'i': 'int' } } 106 107 { 'alternate': 'AltIntNum', 'data': { 'i': 'int', 'n': 'number' } } 107 108 { 'alternate': 'AltNumInt', 'data': { 'n': 'number', 'i': 'int' } } 108 109
+17 -13
tests/qapi-schema/qapi-schema-test.out
··· 1 + alternate AltEnumBool 2 + tag type 3 + case e: EnumOne 4 + case b: bool 5 + alternate AltEnumInt 6 + tag type 7 + case e: EnumOne 8 + case i: int 9 + alternate AltEnumNum 10 + tag type 11 + case e: EnumOne 12 + case n: number 1 13 alternate AltIntNum 2 14 tag type 3 15 case i: int 4 16 case n: number 17 + alternate AltNumEnum 18 + tag type 19 + case n: number 20 + case e: EnumOne 5 21 alternate AltNumInt 6 22 tag type 7 23 case n: number ··· 10 26 tag type 11 27 case n: number 12 28 case s: str 13 - alternate AltStrBool 14 - tag type 15 - case s: str 16 - case b: bool 17 - alternate AltStrInt 18 - tag type 19 - case s: str 20 - case i: int 21 - alternate AltStrNum 22 - tag type 23 - case s: str 24 - case n: number 25 29 event EVENT_A None 26 30 boxed=False 27 31 event EVENT_B None ··· 66 70 alternate UserDefAlternate 67 71 tag type 68 72 case udfu: UserDefFlatUnion 69 - case s: str 73 + case e: EnumOne 70 74 case i: int 71 75 object UserDefB 72 76 member intb: int optional=False
+1 -1
tests/qapi-schema/returns-alternate.json
··· 1 1 # we reject returns if it is an alternate type 2 - { 'alternate': 'Alt', 'data': { 'a': 'int', 'b': 'str' } } 2 + { 'alternate': 'Alt', 'data': { 'a': 'int', 'b': 'bool' } } 3 3 { 'command': 'oops', 'returns': 'Alt' }
+11 -12
tests/test-clone-visitor.c
··· 42 42 43 43 static void test_clone_alternate(void) 44 44 { 45 - AltStrBool *b_src, *s_src, *b_dst, *s_dst; 45 + AltEnumBool *b_src, *s_src, *b_dst, *s_dst; 46 46 47 - b_src = g_new0(AltStrBool, 1); 47 + b_src = g_new0(AltEnumBool, 1); 48 48 b_src->type = QTYPE_QBOOL; 49 49 b_src->u.b = true; 50 - s_src = g_new0(AltStrBool, 1); 50 + s_src = g_new0(AltEnumBool, 1); 51 51 s_src->type = QTYPE_QSTRING; 52 - s_src->u.s = g_strdup("World"); 52 + s_src->u.e = ENUM_ONE_VALUE1; 53 53 54 - b_dst = QAPI_CLONE(AltStrBool, b_src); 54 + b_dst = QAPI_CLONE(AltEnumBool, b_src); 55 55 g_assert(b_dst); 56 56 g_assert_cmpint(b_dst->type, ==, b_src->type); 57 57 g_assert_cmpint(b_dst->u.b, ==, b_src->u.b); 58 - s_dst = QAPI_CLONE(AltStrBool, s_src); 58 + s_dst = QAPI_CLONE(AltEnumBool, s_src); 59 59 g_assert(s_dst); 60 60 g_assert_cmpint(s_dst->type, ==, s_src->type); 61 - g_assert_cmpstr(s_dst->u.s, ==, s_src->u.s); 62 - g_assert(s_dst->u.s != s_src->u.s); 61 + g_assert_cmpint(s_dst->u.e, ==, s_src->u.e); 63 62 64 - qapi_free_AltStrBool(b_src); 65 - qapi_free_AltStrBool(s_src); 66 - qapi_free_AltStrBool(b_dst); 67 - qapi_free_AltStrBool(s_dst); 63 + qapi_free_AltEnumBool(b_src); 64 + qapi_free_AltEnumBool(s_src); 65 + qapi_free_AltEnumBool(b_dst); 66 + qapi_free_AltEnumBool(s_dst); 68 67 } 69 68 70 69 static void test_clone_native_list(void)
+28 -28
tests/test-qobject-input-visitor.c
··· 537 537 g_assert_cmpint(tmp->u.i, ==, 42); 538 538 qapi_free_UserDefAlternate(tmp); 539 539 540 - v = visitor_input_test_init(data, "'string'"); 540 + v = visitor_input_test_init(data, "'value1'"); 541 541 visit_type_UserDefAlternate(v, NULL, &tmp, &error_abort); 542 542 g_assert_cmpint(tmp->type, ==, QTYPE_QSTRING); 543 - g_assert_cmpstr(tmp->u.s, ==, "string"); 543 + g_assert_cmpint(tmp->u.e, ==, ENUM_ONE_VALUE1); 544 544 qapi_free_UserDefAlternate(tmp); 545 545 546 546 v = visitor_input_test_init(data, "{'integer':1, 'string':'str', " ··· 565 565 g_assert_cmpint(wrap->alt->u.i, ==, 42); 566 566 qapi_free_WrapAlternate(wrap); 567 567 568 - v = visitor_input_test_init(data, "{ 'alt': 'string' }"); 568 + v = visitor_input_test_init(data, "{ 'alt': 'value1' }"); 569 569 visit_type_WrapAlternate(v, NULL, &wrap, &error_abort); 570 570 g_assert_cmpint(wrap->alt->type, ==, QTYPE_QSTRING); 571 - g_assert_cmpstr(wrap->alt->u.s, ==, "string"); 571 + g_assert_cmpint(wrap->alt->u.e, ==, ENUM_ONE_VALUE1); 572 572 qapi_free_WrapAlternate(wrap); 573 573 574 574 v = visitor_input_test_init(data, "{ 'alt': {'integer':1, 'string':'str', " ··· 588 588 { 589 589 Visitor *v; 590 590 Error *err = NULL; 591 - AltStrBool *asb; 592 - AltStrNum *asn; 593 - AltNumStr *ans; 594 - AltStrInt *asi; 591 + AltEnumBool *aeb; 592 + AltEnumNum *aen; 593 + AltNumEnum *ans; 594 + AltEnumInt *asi; 595 595 AltIntNum *ain; 596 596 AltNumInt *ani; 597 597 598 598 /* Parsing an int */ 599 599 600 600 v = visitor_input_test_init(data, "42"); 601 - visit_type_AltStrBool(v, NULL, &asb, &err); 601 + visit_type_AltEnumBool(v, NULL, &aeb, &err); 602 602 error_free_or_abort(&err); 603 - qapi_free_AltStrBool(asb); 603 + qapi_free_AltEnumBool(aeb); 604 604 605 605 v = visitor_input_test_init(data, "42"); 606 - visit_type_AltStrNum(v, NULL, &asn, &error_abort); 607 - g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT); 608 - g_assert_cmpfloat(asn->u.n, ==, 42); 609 - qapi_free_AltStrNum(asn); 606 + visit_type_AltEnumNum(v, NULL, &aen, &error_abort); 607 + g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT); 608 + g_assert_cmpfloat(aen->u.n, ==, 42); 609 + qapi_free_AltEnumNum(aen); 610 610 611 611 v = visitor_input_test_init(data, "42"); 612 - visit_type_AltNumStr(v, NULL, &ans, &error_abort); 612 + visit_type_AltNumEnum(v, NULL, &ans, &error_abort); 613 613 g_assert_cmpint(ans->type, ==, QTYPE_QFLOAT); 614 614 g_assert_cmpfloat(ans->u.n, ==, 42); 615 - qapi_free_AltNumStr(ans); 615 + qapi_free_AltNumEnum(ans); 616 616 617 617 v = visitor_input_test_init(data, "42"); 618 - visit_type_AltStrInt(v, NULL, &asi, &error_abort); 618 + visit_type_AltEnumInt(v, NULL, &asi, &error_abort); 619 619 g_assert_cmpint(asi->type, ==, QTYPE_QINT); 620 620 g_assert_cmpint(asi->u.i, ==, 42); 621 - qapi_free_AltStrInt(asi); 621 + qapi_free_AltEnumInt(asi); 622 622 623 623 v = visitor_input_test_init(data, "42"); 624 624 visit_type_AltIntNum(v, NULL, &ain, &error_abort); ··· 635 635 /* Parsing a double */ 636 636 637 637 v = visitor_input_test_init(data, "42.5"); 638 - visit_type_AltStrBool(v, NULL, &asb, &err); 638 + visit_type_AltEnumBool(v, NULL, &aeb, &err); 639 639 error_free_or_abort(&err); 640 - qapi_free_AltStrBool(asb); 640 + qapi_free_AltEnumBool(aeb); 641 641 642 642 v = visitor_input_test_init(data, "42.5"); 643 - visit_type_AltStrNum(v, NULL, &asn, &error_abort); 644 - g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT); 645 - g_assert_cmpfloat(asn->u.n, ==, 42.5); 646 - qapi_free_AltStrNum(asn); 643 + visit_type_AltEnumNum(v, NULL, &aen, &error_abort); 644 + g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT); 645 + g_assert_cmpfloat(aen->u.n, ==, 42.5); 646 + qapi_free_AltEnumNum(aen); 647 647 648 648 v = visitor_input_test_init(data, "42.5"); 649 - visit_type_AltNumStr(v, NULL, &ans, &error_abort); 649 + visit_type_AltNumEnum(v, NULL, &ans, &error_abort); 650 650 g_assert_cmpint(ans->type, ==, QTYPE_QFLOAT); 651 651 g_assert_cmpfloat(ans->u.n, ==, 42.5); 652 - qapi_free_AltNumStr(ans); 652 + qapi_free_AltNumEnum(ans); 653 653 654 654 v = visitor_input_test_init(data, "42.5"); 655 - visit_type_AltStrInt(v, NULL, &asi, &err); 655 + visit_type_AltEnumInt(v, NULL, &asi, &err); 656 656 error_free_or_abort(&err); 657 - qapi_free_AltStrInt(asi); 657 + qapi_free_AltEnumInt(asi); 658 658 659 659 v = visitor_input_test_init(data, "42.5"); 660 660 visit_type_AltIntNum(v, NULL, &ain, &error_abort);
+2 -2
tests/test-qobject-output-visitor.c
··· 406 406 visitor_reset(data); 407 407 tmp = g_new0(UserDefAlternate, 1); 408 408 tmp->type = QTYPE_QSTRING; 409 - tmp->u.s = g_strdup("hello"); 409 + tmp->u.e = ENUM_ONE_VALUE1; 410 410 411 411 visit_type_UserDefAlternate(data->ov, NULL, &tmp, &error_abort); 412 412 qstr = qobject_to_qstring(visitor_get(data)); 413 413 g_assert(qstr); 414 - g_assert_cmpstr(qstring_get_str(qstr), ==, "hello"); 414 + g_assert_cmpstr(qstring_get_str(qstr), ==, "value1"); 415 415 416 416 qapi_free_UserDefAlternate(tmp); 417 417