[00:00] Hmm, how many tests do we have? [00:00] how many would you like? [00:00] Since this run just finished in less than three hours. [00:01] 11369 tests. [00:01] nice [00:01] Not sure how long it should take on this machine, so I guess it could be right. [00:01] cleaner layering ? [00:02] Three errors left to fix, then could you throw it at EC2? [00:02] delighted to [00:07] lifeless: PgTestSetup only respects LP_TEST_INSTANCE if it matches the value in BaseLayer. But TestPgTestSetup is layerless, so BaseLayer is unconfigured. [00:07] I suppose I could just call BaseLayer.setUp. [00:07] Or mvoe TestPgTestSetup into BaseLayer... [00:08] Ah, it already calls BaseLayer.setUp in other places. I guess I'll do that. [00:08] ahm [00:08] I see [00:09] I the dynamic stuff is only part polished - that is, it works. [00:09] Yep. [00:09] but we should get rid of the support for static instances altogether (again, have to remove the persistent helper support) [00:09] Maybe once the librarian doesn't take 8 seconds to start. [00:10] zcml. [00:10] I keep saying I want to nuke it; I really am serious :) [00:10] well [00:10] I want to remove the global nature of it [00:10] we shouldn't pay to import all of lp to run 300 lines of code [00:12] Sure. [00:18] lifeless: Why is LP_TEST_INSTANCE an envvar? [00:19] It presumably won't be crossing process boundaries... [00:19] helpers [00:19] Hm? [00:19] librarian etc [00:19] gnerally we'll want to set a config section up [00:19] Don't they use LPCONFIG? [00:20] but it can be useful to introspect [00:20] also [00:20] the reinvoke logic [00:20] which reinvokes the runner [00:21] So, at the moment PgTestSetup respects LP_TEST_INSTANCE. But it only does that when BaseLayer is set up, and BaseLayer sets LP_TEST_INSTANCE to the PID. [00:21] So the two tests that PgTestSetup respects the var are a little wrong. [00:21] hang on [00:21] why do you say 'But it only does that when BaseLayer is set up,' [00:22] thats now how I read the code in lib/canonical/ftests/pgsql.py [00:22] s/now/not/ [00:22] In PgTestSetup.__init__, the end of the PgTestSetup.dynamic branch checks that the instance name matches BaseLayer. [00:23] to call config.reloadConfig() [00:23] If it matches, it uses the calculated name. If not, it reverts to the old one. [00:23] lifeless: I have some more pictures [00:23] jml: cool [00:23] lifeless: http://people.canonical.com/~jml/lpstats/good-and-bad.png [00:23] lifeless: http://people.canonical.com/~jml/lpstats/good-and-bad-by-time.png [00:23] and then different versions of the same data... [00:23] Ah, nice. [00:24] http://people.canonical.com/~jml/lpstats/how-many-tests-are-slow.png [00:24] http://people.canonical.com/~jml/lpstats/good-and-bad-by-time-bar.png [00:24] subunit-ls + openoffice [00:24] jml: do you have one with the area [00:25] test time per test * tests in that bucket [00:25] lifeless: yes, that's what good-and-bad-by-time is [00:25] lifeless: it's the sum of the times of tests in that bracket [00:25] cool [00:25] so, start on the 100s tests?! [00:26] lifeless: yeah, exactly [00:26] I also like that we actually have six orders of magnitude of test run times [00:27] the sole 1000s test is actually ~200s [00:27] you could drop the first 3 off without loss of usefulness [00:27] I guess I could have been more strictly logarithmic [00:27] jml: Not the 120s Windmill test that I just found? [00:27] Or does that count as 100s? [00:27] wgrant: subunit-ls [00:27] sorry... [00:28] wgrant: that may be the same one, machine variation. [00:28] lifeless: Indeed. [00:28] But most of it is sleeping. [00:28] So... [00:28] gzip -dc some-run.subunit.gz | subunit-ls --times | awk '{ print $2 " " $1 }' | sort -n | tail [00:28] jml: I'd like a leverage graph [00:28] wgrant: not-found-traversal.txt used to be mostly sleeping [00:29] jml: http://people.canonical.com/~jml/lpstats/good-and-bad-by-time.png scaled down by tests-per-bucket [00:29] as in, the more tests the wider the bar, say? [00:30] jml: or less height [00:30] jml: Yeah, test_inline_subscriber is indeed the longest test. [00:30] jml: 'time spent running those tests / count(those tests)' [00:30] right [00:30] Followed by two Soyuz ones /o\ [00:30] was just typing that [00:30] lifeless: easy enough to do [00:31] I think that that would show the buckets with the most return - amount of time saved per test fixed in that bucket (on average) [00:31] I might also shift to be log(run_time) rather than n s.t. 10**(n-1) < run_time <= 10**n [00:31] int(log(run_time)), of course [00:32] wgrant: so I'm confused [00:32] wgrant: this branch was spread over 2?3?months [00:32] lifeless: btw [00:33] and more tz changes than is desirable. [00:33] Heh. [00:33] lifeless: my last two blog posts link to paste bins with subunit scripts [00:33] jml: yes, I saw ;) [00:33] lifeless: in my ideal world, someone would make them better and upstream them. [00:34] lifeless: Do you see what I mean about the BaseLayer thing? [00:34] At the end of the PgTestSetup.dynamic branch. [00:34] wgrant: I'm trying to remember *why* [00:34] Ahh. [00:35] wgrant: do what makes sense to you [00:35] Apart from that one there are only three Twisted-ish tests failing, all of which have an 'error' but no error message. [00:35] if all the tests pass, we can land this devilish branch [00:35] Which is a little disturbing. [00:35] and iterate later [00:35] its already had plenty of skew issues with trunk. [00:35] Yep. [00:36] jml: I think that would be ideal too [00:36] I'll just make it set up BaseLayer and use the PID instead of 'xx'. [00:36] For now; [00:36] lifeless: it'll be a little while before I move on to subunit hacking though. still have a chunk of testtools stuff that I want to get done [00:37] lifeless: I'm most of the way through a draft of testtools manual for test authors [00:38] cool [00:39] it's making me realize there's stuff I want to be able to say but can't yet === wgrant_ is now known as wgrnat [00:42] Any ideas on how to debug http://paste.ubuntu.com/537289/? Three errors left in the branch, but no error message. [00:42] I've not seen this before... [00:43] isn't that what henninge was seeing? [00:43] perhaps merge devel [00:44] lifeless: Hah, true, it's on devel too. [00:45] still? [00:45] Yeah. [00:45] :< [00:45] buildbot is clean [00:45] As is Hudson. [00:45] >< [00:45] But it's reproducible on three machines here. [00:45] All Maverick, though. [00:46] >, [00:46] ok [00:46] push [00:46] me pull [00:46] we ec2 === wgrnat is now known as wgrant [00:46] Pushing... [00:47] Done. [00:49] its with ec2 now [00:50] Thanks. [00:50] the lib/lp/registry/tests/test_mlists.py was fugly [00:50] Did you change it? [00:50] we shouldn't need to use popen directly - or at least have a helper for passing the right LPCONFIG around. [00:51] This one was sort of special, since it needs the appserver config. [00:51] still [00:51] I removed the other LPCONFIG stuff. [00:51] no i didn't [00:53] librarian next? [00:53] Just waiting for it to merge. [00:53] Come on LP... [01:02] I love the way the upstream/downstream linking is coming together [01:06] lifeless: --parallel is rather silent. [01:07] wgrant: feel free to slap any reporter you want on it [01:07] lifeless: No idea whatsoever how to do that! [01:07] wgrant: the easiest way is --subunit | subunit2pyunit [01:07] It seems to be working, as postgres is going crazy. [01:07] Aha. [01:08] Thanks. [01:08] or --subunit | tribunal - [01:09] lifeless: http://people.canonical.com/~jml/lpstats/duration-over-count.png [01:09] jml: interesting [01:09] thanks [01:10] lifeless: np [01:10] basically, there are "only" ~250 tests that are between 10s and 100s long [01:11] whereas all the other categories are between ~800 and ~5000 [01:12] if I could do SQL on subunit streams, I could probably get a per-layer thing fairly easily [01:14] that would be nice [01:14] though time-in-layer isn't very intereseting to me [01:15] I guess not [01:15] I'd like to break things down by package a bit more too [01:15] but that involves still more Python that I can't be bothered writing [01:18] * jml off [01:19] ciao === Guest81825 is now known as nigelb [03:00] === Top 10 Time Out Counts by Page ID === [03:00] Hard / Soft Page ID [03:00] 115 / 5419 Archive:+index [03:00] 92 / 233 BugTask:+index [03:00] 23 / 244 Distribution:+bugs [03:00] 13 / 134 ProjectGroupSet:CollectionResource:#project_groups [03:00] 11 / 4 Cve:+index [03:00] 7 / 12 DistroSeriesLanguage:+index [03:00] 6 / 282 Distribution:+bugtarget-portlet-bugfilters-stats [03:00] 6 / 188 POFile:+translate [03:00] 6 / 4 NullBugTask:+index [03:00] 6 / 3 Person:+bugs [04:49] wgrant: zomg [06:14] wgrant: pqm bailed, dunno why [06:14] have forwarded you the mail [06:14] oh, I do know why [06:14] it thinks a schema patch is there, I think [06:25] sent to db-devel instead === almaisan` is now known as al-maisan === al-maisan is now known as almaisan-away [07:04] lifeless: Ah, of course, I had to change fti.py :/ === nigelbabu is now known as nigelb [08:23] and its landed [08:24] Some time ago. [08:24] And Hudson hasn't blown up yet. [08:28] lifeless: librarian branch seems to be fairly happy. Just a few hardcoded URLs to sort out. [08:28] And an odd localhost/launchpad.dev conflict in URL generation. [08:28] wgrant: cool [08:29] wgrant: jml cherrypicked an early subsection of my work to debug some issues with librarian tests [11:48] lifeless: oh yeah, I forgot to tell you about that [14:05] heh, only now I saw the lp repo, love the " we are changing the world, one commit at a time" [17:00] * maxb chuckles at discovering /srv/importd.launchpad.net/production/launchpad-rev-11887-sigh/ in logs :-) [17:24] jml: :) [17:25] lifeless: I've got to head out now, but I'd appreciate it if you could look at the new & updated testtools MPs [17:26] shure [17:26] jml: did you see [17:26] https://code.launchpad.net/~lifeless/launchpad/subunit/+merge/42023 [17:26] lifeless: I did, but not the details. [17:26] lifeless: it's good stuff :) [17:26] jml: https://code.launchpad.net/~jml/testtools/unexpected-success-2/+merge/42050 looks wrong [17:27] oh [17:27] its an incremental diff [17:27] I think that needs to be called out [17:27] or something [17:27] it's still a beta feature. file bugs. [17:27] * jml really does have to go [17:27] lifeless: thanks for looking [22:54] * thumper calmly walks away from the laptop to avoid putting his fist through the screen [22:54] mwhudson: do you have a minute to talk? [23:01] * thumper lunchinates [23:12] thumper: in general, yes [23:24] wgrant: O hai [23:27] StevenK: Hi. [23:28] wgrant: What do you think of https://code.edge.launchpad.net/~stevenk/launchpad/db-spph-ancestry/+merge/41943 ? [23:29] StevenK: 'The previous release of this source package.' [23:29] It's not always. [23:29] It could be a previous override. [23:30] Also, have you checked that we can sanely populate it, in all locations that create SPPHs? [23:30] Also, in the case of a copy, it will be in another archive. [23:30] wgrant: I've been checking that we can actually populate it for existing data [23:38] I'd quite like to add a creator field at the same time. [23:38] It would mean that we had actual proper copying histories. [23:55] wgrant: This would work much better if I actually knew all the places SPPHs were created :-) [23:56] StevenK: Search for all invocations of SourcePackagePublishingHistory and newSourcePackagePublishingHistory? [23:56] wgrant: so, reckon on fixing Archive:+index today [23:56] Ah, yeah, got distracted by parallel testing. [23:57] a good distraction to be sure