Commit 2e2e0df2 authored by Peter Krempa's avatar Peter Krempa Committed by Markus Armbruster
Browse files

tests: qapi: Test 'features' of commands



Signed-off-by: default avatarPeter Krempa <pkrempa@redhat.com>
Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Message-Id: <20191018081454.21369-4-armbru@redhat.com>
parent 23394b4c
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -290,3 +290,21 @@
            'cfs1': 'CondFeatureStruct1',
            'cfs2': 'CondFeatureStruct2',
            'cfs3': 'CondFeatureStruct3' } }

# test 'features' for command

{ 'command': 'test-command-features0',
  'features': [] }
{ 'command': 'test-command-features1',
  'features': [ 'feature1' ] }
{ 'command': 'test-command-features3',
  'features': [ 'feature1', 'feature2' ] }

{ 'command': 'test-command-cond-features1',
  'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'} ] }
{ 'command': 'test-command-cond-features2',
  'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'},
                { 'name': 'feature2', 'if': 'defined(TEST_IF_FEATURE_2)'} ] }
{ 'command': 'test-command-cond-features3',
  'features': [ { 'name': 'feature1', 'if': [ 'defined(TEST_IF_COND_1)',
                                              'defined(TEST_IF_COND_2)'] } ] }
+23 −0
Original line number Diff line number Diff line
@@ -412,3 +412,26 @@ object q_obj_test-features-arg
    member cfs3: CondFeatureStruct3 optional=False
command test-features q_obj_test-features-arg -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
command test-command-features0 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
command test-command-features1 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature feature1
command test-command-features3 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature feature1
    feature feature2
command test-command-cond-features1 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature feature1
        if ['defined(TEST_IF_FEATURE_1)']
command test-command-cond-features2 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature feature1
        if ['defined(TEST_IF_FEATURE_1)']
    feature feature2
        if ['defined(TEST_IF_FEATURE_2)']
command test-command-cond-features3 None -> None
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature feature1
        if ['defined(TEST_IF_COND_1)', 'defined(TEST_IF_COND_2)']
+9 −4
Original line number Diff line number Diff line
@@ -61,10 +61,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
            self._print_if(m.ifcond, 8)
        self._print_variants(variants)
        self._print_if(ifcond)
        if features:
            for f in features:
                print('    feature %s' % f.name)
                self._print_if(f.ifcond, 8)
        self._print_features(features)

    def visit_alternate_type(self, name, info, ifcond, variants):
        print('alternate %s' % name)
@@ -80,6 +77,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
        print('    gen=%s success_response=%s boxed=%s oob=%s preconfig=%s'
              % (gen, success_response, boxed, allow_oob, allow_preconfig))
        self._print_if(ifcond)
        self._print_features(features)

    def visit_event(self, name, info, ifcond, arg_type, boxed):
        print('event %s %s' % (name, arg_type and arg_type.name))
@@ -99,6 +97,13 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
        if ifcond:
            print('%sif %s' % (' ' * indent, ifcond))

    @classmethod
    def _print_features(cls, features):
        if features:
            for f in features:
                print('    feature %s' % f.name)
                cls._print_if(f.ifcond, 8)


def test_frontend(fname):
    schema = QAPISchema(fname)
+24 −0
Original line number Diff line number Diff line
@@ -51,6 +51,30 @@ void qmp_test_features(FeatureStruct0 *fs0, FeatureStruct1 *fs1,
{
}

void qmp_test_command_features0(Error **errp)
{
}

void qmp_test_command_features1(Error **errp)
{
}

void qmp_test_command_features3(Error **errp)
{
}

void qmp_test_command_cond_features1(Error **errp)
{
}

void qmp_test_command_cond_features2(Error **errp)
{
}

void qmp_test_command_cond_features3(Error **errp)
{
}

UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
                              bool has_udb1, UserDefOne *ud1b,
                              Error **errp)