Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-19 Thread lars.knoll
On 3/19/12 2:11 AM, ext Rohan McGovern rohan.mcgov...@nokia.com wrote:

marius.storm-ol...@nokia.com said:
 While it's not normal to do this type of dependency lock for upwards
dependencies, i think in this case we should indeed do the extra
checking. Not just because QtDeclarative is such an important tech for
Qt5, but also because it's a very good test case for QtBase.
 

What would be the proposed workflow to resolve this situation?

  - I have a change in qtbase which I can't push because it breaks a
qtdeclarative test.

  - I have a fix to the test in qtdeclarative but I can't push it
because it doesn't pass without my qtbase change.

One solution I can think of is to introduce a %reverse_dependencies
in sync.profile, used for CI and nothing else, which can control the
SHA1 of qtdeclarative used while testing qtbase.

The easiest way is probably to do it in 3 stages:
* Pin the SHA1 of qtbase in declarative
* Submit the qtbase change
* Unpin the sha1 and submit the declarative fix.


Another is to skip the testing of qtdeclarative in qtbase
branchname's CI if qtdeclarative's sync.profile does not contain
qtbase = refs/heads/branchname.

 The extra time used for checking both repos will give much greater
stability as a whole.
 

Well, we don't really know that.  Note that introducing qtdeclarative
into the qtbase tests means that both directions of breakage are now
possible (i.e. not only can qtbase changes block qtdeclarative's CI,
but now qtdeclarative changes will be able to block qtbase's CI - though
it should be unlikely).

However it's certainly reasonable to expect that, and give it a try.

 Maybe the fast platforms can do the extra checking, while slow
platforms still handle only QtBase? At least we will capture most
compile issues?

I think we'd start with adding new configurations rather than modifying
existing ones.  e.g. as there is currently a linux-g++-32 Ubuntu 10.04
x86 configuration for qtbase, there could be a new linux-g++-32 Ubuntu
10.04 x86 with declarative configuration.

Doing it that way also means the with declarative configuration can
run just the qtdeclarative autotests (we assert that there's no need to
run the qtbase autotests again), theoretically not increasing the
overall runtime.

Unfortunately there's probably not enough resources to do that for some
platforms (like Mac).

If we can do it in a new configuration that only tests declarative that'll
help the total runtime of the tests. Not having it for some platforms is
IMO acceptable. No CI system will ever be perfect :)

 (The CI rules might get very complicated though.)

Yes, in some ways I feel this is adding complexity to the test setup to
work around a false simplicity in our source code setup.  We claim
that Qt is modular, but actually we know some parts of it are not really,
so we add gates to enforce some level of de-modularization.

The main problem here is that our test coverage of qtbase in itself is not
good enough in some areas. So we have to cover this up by adding
declarative tests in thus implicitly raising test coverage of qtbase.

 
 Rohan/Sergio, what will be the turn-around increase if we always test
Declarative together with QtBase?
 

The runtime should be somewhere between the current runtime of qtbase,
and the qtbase runtime plus the qtdeclarative runtime.  Anything more
would be speculation ... but I don't think the runtime would be a big
issue :)

Anyway, overall I think it's worth a try, but we should accept that this
could also create some new problems as well as solving some existing
ones.

Let's give it a try and see how it goes. Given the submit policies we now
have in place this should work most of the times, and we'll simply need to
deal with exceptions (where we need a change in both base and declarative)
manually. I don't think this should happen too often anymore.

Cheers,
Lars

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-19 Thread Rohan McGovern
Knoll Lars (Nokia-MP/Oslo) said:
 On 3/19/12 2:11 AM, ext Rohan McGovern rohan.mcgov...@nokia.com wrote:
 
 marius.storm-ol...@nokia.com said:
  While it's not normal to do this type of dependency lock for upwards
 dependencies, i think in this case we should indeed do the extra
 checking. Not just because QtDeclarative is such an important tech for
 Qt5, but also because it's a very good test case for QtBase.
  
 
 What would be the proposed workflow to resolve this situation?
 
   - I have a change in qtbase which I can't push because it breaks a
 qtdeclarative test.
 
   - I have a fix to the test in qtdeclarative but I can't push it
 because it doesn't pass without my qtbase change.
 
 One solution I can think of is to introduce a %reverse_dependencies
 in sync.profile, used for CI and nothing else, which can control the
 SHA1 of qtdeclarative used while testing qtbase.
 
 The easiest way is probably to do it in 3 stages:
 * Pin the SHA1 of qtbase in declarative
 * Submit the qtbase change
 * Unpin the sha1 and submit the declarative fix.

I don't understand this suggestion.
If qtdeclarative's sync.profile has pinned to a particular qtbase SHA1,
that shouldn't affect the with declarative qtbase CI configuration,
right?  So how does it resolve the deadlock?

Or do you think declarative's sync.profile _should_ affect the with
declarative qtbase CI config?  That means pinning a qtbase SHA1 in
qtdeclarative effectively disables this config, since you'll be testing
qtdeclarative's requested qtbase SHA1 which does not include the incoming
qtbase changes.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-19 Thread Thiago Macieira
On segunda-feira, 19 de março de 2012 14.28.35, Kent Hansen wrote:
 Den 19. mars 2012 10:32, skrev ext Thiago Macieira:
  On segunda-feira, 19 de março de 2012 08.01.41, lars.kn...@nokia.com
wrote:
  Yes, in some ways I feel this is adding complexity to the test setup to
  work around a false simplicity in our source code setup.  We claim
  that Qt is modular, but actually we know some parts of it are not
  really,
  so we add gates to enforce some level of de-modularization.
 
  The main problem here is that our test coverage of qtbase in itself is
  not
  good enough in some areas. So we have to cover this up by adding
  declarative tests in thus implicitly raising test coverage of qtbase.
 
  While the statement is true, I don't think it's the cause of the problem.
 
  qtdeclarative is well-known for depending on the internals of QtCore and
  QtGui. Internals are not unit-tested and will probably never be.

 None of the breakages I've seen in the last few weeks have been due to
 depending on qtbase internals.
 Where are the parts in qtdeclarative where depending on internals are
 likely to cause problems? Maybe we can clean that up some more.

I expect the kernel: metatype, metaobject system and event delivery.

Anyway, where *are* the breakages? Last time this happened, I asked you to
tell us where the breakages are so we could be more careful with the changes.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
 Intel Sweden AB - Registration Number: 556189-6027
 Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden


signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-19 Thread Samuel Rødal
On 03/19/2012 03:18 PM, ext Thiago Macieira wrote:
 On segunda-feira, 19 de março de 2012 14.28.35, Kent Hansen wrote:
 Den 19. mars 2012 10:32, skrev ext Thiago Macieira:
 On segunda-feira, 19 de março de 2012 08.01.41, lars.kn...@nokia.com
 wrote:
 Yes, in some ways I feel this is adding complexity to the test setup to
 work around a false simplicity in our source code setup.  We claim
 that Qt is modular, but actually we know some parts of it are not
 really,
 so we add gates to enforce some level of de-modularization.

 The main problem here is that our test coverage of qtbase in itself is
 not
 good enough in some areas. So we have to cover this up by adding
 declarative tests in thus implicitly raising test coverage of qtbase.

 While the statement is true, I don't think it's the cause of the problem.

 qtdeclarative is well-known for depending on the internals of QtCore and
 QtGui. Internals are not unit-tested and will probably never be.

 None of the breakages I've seen in the last few weeks have been due to
 depending on qtbase internals.
 Where are the parts in qtdeclarative where depending on internals are
 likely to cause problems? Maybe we can clean that up some more.

 I expect the kernel: metatype, metaobject system and event delivery.

 Anyway, where *are* the breakages? Last time this happened, I asked you to
 tell us where the breakages are so we could be more careful with the changes.

Indeed, it might be a good idea to start adding auto-tests in qtbase 
whenever there's an auto-test that fails in qtdeclarative etc.

--
Samuel
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-19 Thread morten.sorvig

On Mar 19, 2012, at 8:01 PM, ext kent.han...@nokia.com wrote:

 (Top-posting from webmail)
 Yes, we should try to add tests to qtbase when a bug is caught by a 
 qtdeclarative test, just like we add tests for any other bug fix.
 
 http://codereview.qt-project.org/#change,19582 broke qquicktextinput. 
 http://codereview.qt-project.org/#change,20286 fixed it, but no new test was 
 added.

qtbase already has a covering test for clipboard. The test is unfortunately 
skipped on Mac since the pasteboard server is not available during CI runs. We 
should be able to run some of it in-process like qquicktextinput does, I'll see 
what can be done the next time I touch the clipboard code.

Morten




___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-18 Thread marius.storm-olsen
While it's not normal to do this type of dependency lock for upwards 
dependencies, i think in this case we should indeed do the extra checking. Not 
just because QtDeclarative is such an important tech for Qt5, but also because 
it's a very good test case for QtBase.

The extra time used for checking both repos will give much greater stability as 
a whole.

Maybe the fast platforms can do the extra checking, while slow platforms still 
handle only QtBase? At least we will capture most compile issues?
(The CI rules might get very complicated though.)

Rohan/Sergio, what will be the turn-around increase if we always test 
Declarative together with QtBase?

Thanks!

--
Sent from my Nokia N9

On 3/16/12 17:15 Hansen Kent (Nokia-MP/Oslo) wrote:
Hi, Again the qtdeclarative CI has been blocked an entire day because of qtbase 
changes. 


It's great that the CI catches all these issues, but at the same time it's 
ridiculous how much time is spent suffering through failed qtdeclarative CI 
runs and fixing those failures up after the fact!


If the turn-around time will increase by one hour or whatever by also testing 
qtdeclarative as part of the qtbase CI runs, so what? The increased stability 
and confidence in the results should easily make it a net win. No longer will 
there be a need to wonder whether a failed qtdeclarative CI run was due to one 
of the actual staged changed, or a recent qtbase change, and dreading the 
aftermath that comes from that.


The current option of pinning the qtbase SHA1 used by qtdeclarative to some 
older, known good SHA1 _after_ a breaking qtbase change has gone through, is 
bad. BAD! Don't ask me to write a paper called Pinning of SHA1s considered 
harmful, because I will.


Pinning just masks the failure. C'mon, after first locating a good qtbase 
SHA1 and being able to commit your own changes again, wouldn't you ideally want 
to go on with your own work instead of spending the rest of the day chasing 
down some unknown change in qtbase, contacting the author (if possible), 
waiting for the fix/revert, and babysitting that through the CI? But someone 
certainly needs to fix it, and while that's ongoing, new changes are blissfully 
making their way into qtbase, which means new qtdeclarative failures can 
appear, and it gets progressively harder to get out of the mess. (Happened 
twice this week.)


Marking qtdeclarative tests as insignificant due to qtbase-introduced failures, 
just to get stuff through the CI again, is also a bit ho-humm. Who follows up 
that backlog of ignored tests?


Yes, there are some qtbase changes that require qtdeclarative to be adapted 
(AKA intentional breakages), and then you need to run the qtbase CI in 
isolation. But that should be the exception, not the rule. It's in those cases 
one should first pin the qtbase SHA1 in qtdeclarative before staging the qtbase 
change, and afterwards adapt qtdeclarative (with a change already prepared and 
reviewed) and unpin the qtbase SHA1 at once. Takes away all the surprise.


Hey, I know, we can just move qtdeclarative into qtbase. Bring back the 
-no-declarative configure option and we're golden.


With best wishes for the weekend,
Kent 
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-18 Thread Rohan McGovern
marius.storm-ol...@nokia.com said:
 While it's not normal to do this type of dependency lock for upwards 
 dependencies, i think in this case we should indeed do the extra checking. 
 Not just because QtDeclarative is such an important tech for Qt5, but also 
 because it's a very good test case for QtBase.
 

What would be the proposed workflow to resolve this situation?

  - I have a change in qtbase which I can't push because it breaks a
qtdeclarative test.

  - I have a fix to the test in qtdeclarative but I can't push it
because it doesn't pass without my qtbase change.

One solution I can think of is to introduce a %reverse_dependencies
in sync.profile, used for CI and nothing else, which can control the
SHA1 of qtdeclarative used while testing qtbase.

Another is to skip the testing of qtdeclarative in qtbase
branchname's CI if qtdeclarative's sync.profile does not contain
qtbase = refs/heads/branchname.

 The extra time used for checking both repos will give much greater stability 
 as a whole.
 

Well, we don't really know that.  Note that introducing qtdeclarative
into the qtbase tests means that both directions of breakage are now
possible (i.e. not only can qtbase changes block qtdeclarative's CI,
but now qtdeclarative changes will be able to block qtbase's CI - though
it should be unlikely).

However it's certainly reasonable to expect that, and give it a try.

 Maybe the fast platforms can do the extra checking, while slow platforms 
 still handle only QtBase? At least we will capture most compile issues?

I think we'd start with adding new configurations rather than modifying
existing ones.  e.g. as there is currently a linux-g++-32 Ubuntu 10.04
x86 configuration for qtbase, there could be a new linux-g++-32 Ubuntu
10.04 x86 with declarative configuration.

Doing it that way also means the with declarative configuration can
run just the qtdeclarative autotests (we assert that there's no need to
run the qtbase autotests again), theoretically not increasing the
overall runtime.

Unfortunately there's probably not enough resources to do that for some
platforms (like Mac).

 (The CI rules might get very complicated though.)

Yes, in some ways I feel this is adding complexity to the test setup to
work around a false simplicity in our source code setup.  We claim
that Qt is modular, but actually we know some parts of it are not really,
so we add gates to enforce some level of de-modularization.

 
 Rohan/Sergio, what will be the turn-around increase if we always test 
 Declarative together with QtBase?
 

The runtime should be somewhere between the current runtime of qtbase,
and the qtbase runtime plus the qtdeclarative runtime.  Anything more
would be speculation ... but I don't think the runtime would be a big
issue :)

Anyway, overall I think it's worth a try, but we should accept that this
could also create some new problems as well as solving some existing
ones.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] The qtbase CI should run the qtdeclarative tests

2012-03-17 Thread Donald Carr
Golf clap

I relish modularity, but construing a hard dependency as a soft dependency
is inviting a world of hurt for the CI underpant gnomes (/me makes a note
to buy Kent flowers next time he is in Oslo)
On Mar 16, 2012 3:14 PM, kent.han...@nokia.com wrote:

  Hi,
 Again the qtdeclarative CI has been blocked an entire day because of
 qtbase changes.

  It's great that the CI catches all these issues, but at the same time
 it's ridiculous how much time is spent suffering through failed
 qtdeclarative CI runs and fixing those failures up after the fact!

  If the turn-around time will increase by one hour or whatever by also
 testing qtdeclarative as part of the qtbase CI runs, so what? The increased
 stability and confidence in the results should easily make it a net win. No
 longer will there be a need to wonder whether a failed qtdeclarative CI run
 was due to one of the actual staged changed, or a recent qtbase change, and
 dreading the aftermath that comes from that.

  The current option of pinning the qtbase SHA1 used by qtdeclarative to
 some older, known good SHA1 _after_ a breaking qtbase change has gone
 through, is bad. BAD! Don't ask me to write a paper called Pinning of
 SHA1s considered harmful, because I will.

  Pinning just masks the failure. C'mon, after first locating a good
 qtbase SHA1 and being able to commit your own changes again, wouldn't you
 ideally want to go on with your own work instead of spending the rest of
 the day chasing down some unknown change in qtbase, contacting the author
 (if possible), waiting for the fix/revert, and babysitting that through the
 CI? But someone certainly needs to fix it, and while that's ongoing, new
 changes are blissfully making their way into qtbase, which means new
 qtdeclarative failures can appear, and it gets progressively harder to get
 out of the mess. (Happened twice this week.)

  Marking qtdeclarative tests as insignificant due to qtbase-introduced
 failures, just to get stuff through the CI again, is also a bit ho-humm.
 Who follows up that backlog of ignored tests?

  Yes, there are some qtbase changes that require qtdeclarative to be
 adapted (AKA intentional breakages), and then you need to run the qtbase
 CI in isolation. But that should be the exception, not the rule. It's in
 those cases one should first pin the qtbase SHA1 in qtdeclarative before
 staging the qtbase change, and afterwards adapt qtdeclarative (with a
 change already prepared and reviewed) and unpin the qtbase SHA1 at once.
 Takes away all the surprise.

  Hey, I know, we can just move qtdeclarative into qtbase. Bring back the
 -no-declarative configure option and we're golden.

  With best wishes for the weekend,
 Kent

 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development


___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] The qtbase CI should run the qtdeclarative tests

2012-03-16 Thread kent.hansen
Hi,
Again the qtdeclarative CI has been blocked an entire day because of qtbase 
changes.

It's great that the CI catches all these issues, but at the same time it's 
ridiculous how much time is spent suffering through failed qtdeclarative CI 
runs and fixing those failures up after the fact!

If the turn-around time will increase by one hour or whatever by also testing 
qtdeclarative as part of the qtbase CI runs, so what? The increased stability 
and confidence in the results should easily make it a net win. No longer will 
there be a need to wonder whether a failed qtdeclarative CI run was due to one 
of the actual staged changed, or a recent qtbase change, and dreading the 
aftermath that comes from that.

The current option of pinning the qtbase SHA1 used by qtdeclarative to some 
older, known good SHA1 _after_ a breaking qtbase change has gone through, is 
bad. BAD! Don't ask me to write a paper called Pinning of SHA1s considered 
harmful, because I will.

Pinning just masks the failure. C'mon, after first locating a good qtbase 
SHA1 and being able to commit your own changes again, wouldn't you ideally want 
to go on with your own work instead of spending the rest of the day chasing 
down some unknown change in qtbase, contacting the author (if possible), 
waiting for the fix/revert, and babysitting that through the CI? But someone 
certainly needs to fix it, and while that's ongoing, new changes are blissfully 
making their way into qtbase, which means new qtdeclarative failures can 
appear, and it gets progressively harder to get out of the mess. (Happened 
twice this week.)

Marking qtdeclarative tests as insignificant due to qtbase-introduced failures, 
just to get stuff through the CI again, is also a bit ho-humm. Who follows up 
that backlog of ignored tests?

Yes, there are some qtbase changes that require qtdeclarative to be adapted 
(AKA intentional breakages), and then you need to run the qtbase CI in 
isolation. But that should be the exception, not the rule. It's in those cases 
one should first pin the qtbase SHA1 in qtdeclarative before staging the qtbase 
change, and afterwards adapt qtdeclarative (with a change already prepared and 
reviewed) and unpin the qtbase SHA1 at once. Takes away all the surprise.

Hey, I know, we can just move qtdeclarative into qtbase. Bring back the 
-no-declarative configure option and we're golden.

With best wishes for the weekend,
Kent
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development