From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52458) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUfkn-0003hj-54 for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:44:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUfke-0004GD-2a for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:44:25 -0400 Received: from e8.ny.us.ibm.com ([32.97.182.138]:60048) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUfkd-0004Fr-VA for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:44:16 -0400 Received: from /spool/local by e8.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 18 Sep 2014 13:44:10 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (b01cxnp22035.gho.pok.ibm.com [9.57.198.25]) by d01dlp02.pok.ibm.com (Postfix) with ESMTP id AC7BF6E803F for ; Thu, 18 Sep 2014 13:43:55 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id s8IHi7Ht4981074 for ; Thu, 18 Sep 2014 17:44:07 GMT Received: from d01av03.pok.ibm.com (localhost [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s8IHi7aZ009212 for ; Thu, 18 Sep 2014 13:44:07 -0400 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Michael Roth In-Reply-To: <20140918172712.GA32084@thinpad.lan.raisama.net> References: <1410719879-25181-1-git-send-email-mst@redhat.com> <1410719879-25181-4-git-send-email-mst@redhat.com> <20140918162947.16792.44892@loki> <20140918172712.GA32084@thinpad.lan.raisama.net> Message-ID: <20140918174406.19243.70771@loki> Date: Thu, 18 Sep 2014 12:44:06 -0500 Subject: Re: [Qemu-devel] [PULL 03/12] test-qdev-global-props: Run tests on subprocess List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: Peter Maydell , Anthony Liguori , qemu-devel@nongnu.org, Don Slutz , "Michael S. Tsirkin" Quoting Eduardo Habkost (2014-09-18 12:27:12) > On Thu, Sep 18, 2014 at 11:29:47AM -0500, Michael Roth wrote: > > Quoting Michael S. Tsirkin (2014-09-14 13:41:23) > > > From: Eduardo Habkost > > > = > > > There are multiple reasons for running the global property tests on a > > > subprocess: > > > = > > > * We need the global_props lists to be empty for each test case, so > > > global properties from the previous test won't affect the next one; > > > * We don't want the qdev_prop_check_global() warnings to pollute test > > > output; > > > * With a subprocess, we can ensure qdev_prop_check_global() is printi= ng > > > the warning messages it should. > > > = > > > Signed-off-by: Eduardo Habkost > > > Acked-by: Michael S. Tsirkin > > > Signed-off-by: Michael S. Tsirkin > > > --- > > > tests/test-qdev-global-props.c | 49 ++++++++++++++++++++++++++++++++= ++++------ > > > 1 file changed, 43 insertions(+), 6 deletions(-) > > > = > > > diff --git a/tests/test-qdev-global-props.c b/tests/test-qdev-global-= props.c > > > index e1a1317..34223a7 100644 > > > --- a/tests/test-qdev-global-props.c > > > +++ b/tests/test-qdev-global-props.c > > > @@ -65,7 +65,7 @@ static const TypeInfo static_prop_type =3D { > > > }; > > > = > > > /* Test simple static property setting to default value */ > > > -static void test_static_prop(void) > > > +static void test_static_prop_subprocess(void) > > > { > > > MyType *mt; > > > = > > > @@ -75,8 +75,16 @@ static void test_static_prop(void) > > > g_assert_cmpuint(mt->prop1, =3D=3D, PROP_DEFAULT); > > > } > > > = > > > +static void test_static_prop(void) > > > +{ > > > + g_test_trap_subprocess("/qdev/properties/static/default/subproce= ss", 0, 0); > > > + g_test_trap_assert_passed(); > > > + g_test_trap_assert_stderr(""); > > > + g_test_trap_assert_stdout(""); > > > +} > > = > > > > = > > > int main(int argc, char **argv) > > > { > > > g_test_init(&argc, &argv, NULL); > > > @@ -174,9 +200,20 @@ int main(int argc, char **argv) > > > type_register_static(&static_prop_type); > > > type_register_static(&dynamic_prop_type); > > > = > > > - g_test_add_func("/qdev/properties/static/default", test_static_p= rop); > > > - g_test_add_func("/qdev/properties/static/global", test_static_gl= obalprop); > > > - g_test_add_func("/qdev/properties/dynamic/global", test_dynamic_= globalprop); > > > + g_test_add_func("/qdev/properties/static/default/subprocess", > > > + test_static_prop_subprocess); > > > + g_test_add_func("/qdev/properties/static/default", > > > + test_static_prop); > > = > > Since in the code above test_static_prop is actually the test that re-r= uns > > /qdev/properties/static/default/subprocess under g_test_trap_subprocess= , aren't > > the tests (or test function implementations) backwards? > = > Your description is correct: ./static/default is test_static_prop(), > which runs ./static/default/subprocess (test_static_prop_subprocess()) > in a subprocess. But I don't understand what's backwards. Are you > talking about the function names, test path strings, or about the > ordering of the g_test_add_func() calls? I was under the false impression that this was adding a "subprocess" varian= t of each existing test, where the subprocess variants were supposed to have "su= bprocess" after them in the test paths to differentiate them, and the original cases = would retain the same paths. In that context the tests seemed reverse. Sorry for the confusion, reading the glib documentation would've made this fairly clear (though still a bit surprising, imo) > = > Note that the test case that will be run in a subprocess must contain > the "subprocess" component in its path, otherwise g_test_run() will try > to run it as a normal test case. So for the test path, we don't have a > choice. For the function names, I am just following the same convention > used for the test path. > = > -- = > Eduardo