qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] tests: check empty qmp output visitor


From: Amos Kong
Subject: Re: [Qemu-devel] [PATCH] tests: check empty qmp output visitor
Date: Tue, 27 May 2014 09:53:08 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, May 20, 2014 at 07:19:49PM -0500, Michael Roth wrote:
> Quoting Marcel Apfelbaum (2014-05-20 10:07:59)
> > Checks the output visitor behaviour for NULL values.
> > 
> > Signed-off-by: Marcel Apfelbaum <address@hidden>
> > ---
> >  Notes:
> >  - I didn't add Michael's Sob because I tweaked the test a little.
> 
> Tweaked it so it didn't crash 100% of the time even after your fix? :)
> 
> Another approach, since the expected behavior now is for
> qmp_output_get_qobject() to return NULL in this case, is to just
> assert(arg == NULL) and drop the qdict/QDECREF completely.

Agree.

We expecte arg is NULL, but this patch will still success when
arg isn't NULL.

Can we add the empty test after g_test_init()? We can make sure
the out_visitor_data is really empty.

Amos.

> >  - To be added on top of  "qapi: output visitor crashes qemu if it 
> > encounters a NULL value",
> >    otherwise the test will fail.
> > 
> >  tests/test-qmp-output-visitor.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/tests/test-qmp-output-visitor.c 
> > b/tests/test-qmp-output-visitor.c
> > index 9c15458..de1bf83 100644
> > --- a/tests/test-qmp-output-visitor.c
> > +++ b/tests/test-qmp-output-visitor.c
> > @@ -507,6 +507,19 @@ static void 
> > test_visitor_out_union_anon(TestOutputVisitorData *data,
> >      qapi_free_UserDefAnonUnion(tmp);
> >  }
> > 
> > +static void test_visitor_out_empty(TestOutputVisitorData *data,
> > +                                   const void *unused)
> > +{
> > +    QObject *arg;
> > +    QDict *qdict;
> > +
> > +    arg = qmp_output_get_qobject(data->qov);
> > +    if (arg) {
> > +        qdict = qobject_to_qdict(arg);
> > +        QDECREF(qdict);
> > +    }
> > +}
> > +
> >  static void init_native_list(UserDefNativeListUnion *cvalue)
> >  {
> >      int i;
> > @@ -859,6 +872,8 @@ int main(int argc, char **argv)
> >                              &out_visitor_data, 
> > test_visitor_out_union_flat);
> >      output_visitor_test_add("/visitor/output/union-anon",
> >                              &out_visitor_data, 
> > test_visitor_out_union_anon);
> > +    output_visitor_test_add("/visitor/output/empty",
> > +                            &out_visitor_data, test_visitor_out_empty);
> >      output_visitor_test_add("/visitor/output/native_list/int",
> >                              &out_visitor_data, 
> > test_visitor_out_native_list_int);
> >      output_visitor_test_add("/visitor/output/native_list/int8",
> > -- 
> > 1.8.3.1
> 

-- 
                        Amos.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]