[00:01] <sinzui> wgrant: mumble?
[00:22] <lifeless> it is used to generate a new proposal with the same metadata
[00:22] <lifeless> bah
[00:22] <lifeless> cjohnston: ^ very-late-reply :P
[00:26] <wgrant> erm.
[00:26] <wgrant> PQM is broken.
[00:26] <wgrant> star-merge succeeded at Mon May 16 21:21:35 2011 (0:00:33.523987)
[00:26] <wgrant> "Exception processing merge: 'str' object has no attribute 'set_revision_history'"
[00:26] <wgrant> And ever since it has kept trying to merge but said "nothing to do"
[00:30] <lifeless> whhhhhhhe
[00:31] <wgrant> You're it.
[00:38] <lifeless> sinzui: hi
[00:38] <lifeless> sinzui: are you still running a script that assigns milestones?
[00:38] <lifeless> sinzui: if so, can you remove the milestoning from it ?
[00:38] <lifeless> (inspired by the change on bug Bug 736011)
[00:38] <_mup_> Bug #736011: ProductRelease:+rdf timeout <timeout> <Launchpad itself:In Progress by sinzui> < https://launchpad.net/bugs/736011 >
[00:51] <wgrant> lifeless: Do you want to reassign with-without-datetime to ~launchpad-committers, or pull lp:~wgrant/storm/with-without-datetime?
[00:51] <wgrant> (my DISTINCT ON changes are in trunk now)
[00:52] <lifeless> wgrant: just push a fresh one to either ~launchpad-committers or your own namespace
[00:52] <wgrant> k
[00:58] <timrc> Trying to setup a Launchpad development environment.  I've been following the instructions at https://dev.launchpad.net/Running, and now when I try to access my instance I get the following? https://pastebin.canonical.com/47513/
[00:59] <mwhudson> timrc: pastebin.ubuntu.com next time? :)
[00:59] <timrc> mwhudson, ah sorry force of habit
[00:59] <wgrant> timrc: How are you trying to access it?
[01:00] <wgrant> It looks like you're poking the XML-RPC server.
[01:01] <timrc> wgrant, the console log shows http://pastebin.ubuntu.com/608736/
[01:01] <timrc> perhaps it's a hostname problem..
[01:02] <wgrant> No, that's fine.
[01:02] <wgrant> Which URL are you using?
[01:03] <timrc> Locally, http://<IP_ADDRESS>:8085/
[01:03] <mwhudson> ah
[01:03] <mwhudson> that won't work
[01:03] <lifeless> don't do that :)
[01:03] <mwhudson> hostname based vhosting woo
[01:03] <timrc> lol
[01:04] <wgrant> timrc: You're running it in a VM, then?
[01:05] <timrc> wgrant, Correct...
[01:05] <timrc> So I just need to make launchpad.dev point to the right place?
[01:05] <lifeless> https://dev.launchpad.net/Running/VirtualMachine
[01:05] <wgrant> What lifeless said.
[01:05] <wgrant> And yes.
[01:10] <timrc> lifeless, wgrant: Thanks.  Looking now
[01:12] <Ursinha> lifeless, hello
[01:13] <lifeless> Ursinha: tudo bem!
[01:13] <Ursinha> hehe
[01:13] <Ursinha> lifeless, tudo
[01:14] <Ursinha> lifeless, why is bug 667390 still needed for you? did you see how the dashboard puts all fixed bugs in wiki format and in a single row?
[01:14] <_mup_> Bug #667390: provide wiki syntax bug links in deployable revision reports for easy copying to the LPS report <qa-tagger:Triaged by ursinha> < https://launchpad.net/bugs/667390 >
[01:14] <lifeless> Ursinha: folk deploy off of the report though
[01:15] <Ursinha> hm
[01:15] <Ursinha> how bad is it to check the dashboard instead of the report to do the deployment?
[01:15] <lifeless> whats the dashboard url?
[01:16] <lifeless> my browser has forgotten it :(
[01:16] <Ursinha> lifeless, http://lpqateam.canonical.com/
[01:17] <lifeless> Ursinha: way too little information
[01:17] <Ursinha> lifeless, what else do you need?
[01:17] <lifeless> Ursinha: I would not be comfortable with myself or others deploying where they cannot see all the revisions being deployed.
[01:17] <lifeless> because the system isn't perfect, seeing what will be deployed is a key piece of information
[01:17] <lifeless> Ursinha: its things like seeing the commit message which has told be of the bugs in determining which bug links are found, for instance.
[01:18] <Ursinha> right.
[01:18] <Ursinha> I fixed that bug, btw, but I got your point
[01:18] <lifeless> thank you
[01:18] <lifeless> (for fixing the bug)
[01:22] <wgrant> That is a very nice page.
[01:23] <Ursinha> :)
[01:24] <wgrant> Ursinha: Is it easy enough to show the current state of devel/db-devel, so we can see how many revs are not yet in *stable?
[01:25] <Ursinha> wgrant, it's doable with not much effort, I believe
[01:47] <LPCIBot> Project devel build #722: FAILURE in 5 hr 12 min: https://lpci.wedontsleep.org/job/devel/722/
[02:01] <wgrant> + spph data model is confusing (records exist where they were built, not where they have been copied to)
[02:02] <wgrant> I am confuse.
[02:02] <wgrant> The build records exist where they were built.
[02:02] <wgrant> The SPPH is the copy.
[02:02] <lifeless> oh, my misunderstanding
[02:02] <lifeless> please correct it
[02:02] <lifeless> what I intended was to say:
[02:02] <lifeless>  - the behaviour matches our model
[02:02] <lifeless>  - our model is confusing
[02:02] <lifeless>  - its low priority
[02:03] <lifeless>  - and not specific to oneiric or ppas
[02:11] <LPCIBot> Project windmill-devel build #88: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/88/
[02:11] <timrc> lifeless, thanks, https://dev.launchpad.net/Running/RemoteAccess got me through the rest :)
[02:19] <cjohnston> Question.. I got a buildbot thing, but am not allowed to access the details page.. Seems odd to me?
[02:20] <wgrant> Yeah, that's a bit unfortunate.
[02:20] <lifeless> now we don't do production branches thats fixable
[02:20] <wgrant> It was a success, though, so you don't have to worry about it.
[02:20] <lifeless> RT it
[02:20] <wgrant> lifeless: Last I heard there was also an XSS.
[02:21] <wgrant> But that was nearly two years ago.
[02:21] <lifeless> oh freaking yay
[02:21] <cjohnston> was just curious wgrant since I got it.. heh
[02:21]  * lifeless vents
[02:21] <lifeless> cjohnston: we did have good reasons for having it private. Some may still apply.
[02:21] <wgrant> cjohnston: Yeah, I had to put up with it for 18 months, I know the annoyance :(
[02:21] <cjohnston> so lifeless, rt saying that I'm getting an email from buildbot but don't have access to view the details?
[02:22] <lifeless> no
[02:23] <lifeless> wgrant will have a fiddle at some point
[02:23] <lifeless> if we can open it, we will
[02:23] <lifeless> or we may finish obsoleting it in one of a few ways
[02:23] <cjohnston> ok.. so just bug wgrant .. lol kiddin
[02:23] <cjohnston> g
[02:24] <cjohnston> Do either of you have time to look at a review comment that was made and maybe explain it to me?
[02:25] <wgrant> Sure.
[02:25] <cjohnston> https://code.launchpad.net/~chrisjohnston/launchpad/197793/+merge/61053
[02:26] <cjohnston> I don't really understand his comments... One is for duplicates and one is for subscribing to the main bug.. And its diferentiating why a user is subscribed afaik
[02:27]  * cjohnston got a job today!
[02:27] <cjohnston> heh
[02:27] <cjohnston> or another job today.. or something
[02:28] <wgrant> cjohnston: On line 24 of the diff, it doesn't say what they are a subscriber to.
[02:28] <cjohnston> so on line 24 add to the bug report?
[02:28] <cjohnston> "to the bug report"
[02:28] <wgrant> This bug probably already existed, but the target of "is a direct subscriber" is a little more obvious than "is subscribed"
[02:29] <wgrant> I'm not sure whether "bug" or "bug report" is better.
[02:29] <wgrant> But yes.
[02:29] <LPCIBot> Project windmill-db-devel build #282: STILL FAILING in 1 hr 14 min: https://lpci.wedontsleep.org/job/windmill-db-devel/282/
[02:29] <cjohnston> seems from other bugs that people are wanting bug report since they are "reports of bugs"
[02:29] <cjohnston> and not actual bugs
[02:34] <cjohnston> Ok.. pushed that.. Hopefully that will be another one that can be closed
[02:36] <cjohnston> Since I don't seem to have access, can someone fix #7 in https://dev.launchpad.net/PatchSubmission please
[02:40] <StevenK> cjohnston: Done.
[02:40] <cjohnston> ty StevenK
[02:41] <lifeless> \o/
[02:41] <lifeless> wgrant: https://code.launchpad.net/~wgrant/launchpad/bug-740584/+merge/61060 - got a minute
[02:58] <wgrant> lifeless: Hi.
[02:58] <wgrant> What about it?
[03:13] <lifeless> > They were, 5 years ago. They should all be unpublished and removed from the librarian by now.
[03:13] <lifeless> Do they serve any purpose for us then?
[03:13] <lifeless> wgrant: do they?
[03:20] <wgrant> lifeless: Other than being a historical record, no.
[03:20] <wgrant> But it's a historical record that has traditionally never been erased.
[03:20] <wgrant> To erase it would be a change of policy.
[03:23] <lifeless> but these were never built
[03:23] <lifeless> they were imported from dak, you are saying
[03:23] <wgrant> Right.
[03:23] <wgrant> But to erase them would mean erasing part of Ubuntu's publication history.
[03:23] <lifeless> so its not a historical record; its a historical fiction
[03:23] <wgrant> For deleting the BPBs implies deleting the BPRs, and therefore their corresponding BPPHs.
[03:24] <lifeless> thats true, but we don't know about bpph's before soyuz anyway
[03:24] <lifeless> we know about these by happenstance, more or less.
[03:25] <wgrant> Sure.
[03:25] <lifeless> I think we should get some specifics
[03:25] <lifeless> put it in context
[03:25] <lifeless> and ask on u-d
[03:25] <lifeless> It seems weird to have a data model axiom and then not enforce it
[03:26] <lifeless> what do you think?
[03:26] <wgrant> It would be a no-brainer to enforce it if it didn't require unprecedented history erasure.
[03:27] <lifeless> Well, I'm framing it as precendented - the dak import already lost it
[03:27] <wgrant> That is true.
[03:27] <wgrant> However.
[03:27] <wgrant> It is possible that some of these are still published in Dapper.
[03:27] <lifeless> in which case its a gpl violation, no ?
[03:28] <wgrant> Yes.
[03:28] <lifeless> so, we should get the details regardless.
[03:28] <wgrant> Sure.
[03:28] <wgrant> I'm looking at cleanup for the easier ones first.
[03:28] <lifeless> cool
[03:28] <lifeless> should the mp be made wip / rejected?
[03:28] <lifeless> pending the outcome of the data cleanup effort?
[03:29] <wgrant> I will WIP it.
[03:47] <LPCIBot> Project windmill-devel build #89: STILL FAILING in 1 hr 18 min: https://lpci.wedontsleep.org/job/windmill-devel/89/
[03:47] <lifeless> thanks
[04:01] <lifeless> bombs away
[04:02] <wgrant> Oh?
[04:02] <wgrant> Ah.
[04:04] <lifeless> yes indeed
[04:31] <wgrant> cjohnston: Still around?
[04:31] <wgrant> lifeless: Could you mentor https://code.launchpad.net/~wallyworld/launchpad/poppy-sftp-gpgconf/+merge/60454?
[04:33] <lifeless> found an oversight ;)
[04:38] <LPCIBot> Project windmill-db-devel build #283: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-db-devel/283/
[05:29] <LPCIBot> Project windmill-devel build #90: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-devel/90/
[05:30] <StevenK> wgrant: O hai, Mr. OCR.
[05:31] <wgrant> So I am.
[05:31] <wgrant> I can hardly review that.
[05:31] <wgrant> But OK.
[05:32] <StevenK> wgrant: Well, sure. I can prod lifeless until he squirms, if you prefer.
[05:32] <wgrant> He'll be mentoring anyway, so I will do it.
[05:34] <wgrant> Some of these DB surgery fix queries are a little long :(
[06:05] <nigelb> hello! can someone review https://code.launchpad.net/~nigelbabu/launchpad/645825-ui-example/+merge/61175 for me?
[06:07] <StevenK> nigelb: Done.
[06:07] <nigelb> StevenK: yay, thanks :)
[06:07] <nigelb> StevenK: oh, test changes and additions, hrm, could guide me through those or link me to some place that would guide me through those
[06:08] <StevenK> nigelb: So you've changed the template -- there is likely to be a test (or a number of them) that create a view of that template.
[06:09] <nigelb> windmill test?
[06:09] <StevenK> I hope not. :-)
[06:11] <nigelb> ah, the tests I find in lib/lp/registry/tests?
[06:11] <StevenK> That is some of them
[06:11] <StevenK> The view tests are more likely to be in lib/lp/registry/browser/tests
[06:11] <StevenK> However, I'm having trouble finding a relevant test for ProductSeriesView
[06:12] <StevenK> lib/lp/registry/browser/tests/productseries-views.txt that looks promising
[06:13] <nigelb> I'm scrolling through that one already
[06:13] <StevenK> nigelb: Can you run that test on your branch by 'bin/test -vvt productseries-views.txt' ?
[06:14] <nigelb> okay, running
[06:14] <nigelb> I'm failure sure I might have to write new ones because I don't find any checking this particular situation.
[06:16] <StevenK> I've been thinking about that -- I doubt that the tests don't exist, but the only way to be sure is a fairly large hammer -- bin/test -vvm registry
[06:16] <StevenK> Either that, or wgrant or lifeless could offer suggestions?
[06:17] <nigelb> I'm running the productseries-views.txt one, I'll wait for more suggestions to fix it.
[06:18] <nigelb> aha "Ran 2 tests with 0 failures and 0 errors in 13.684 seconds."
[06:18] <wgrant> StevenK: Reviewed.
[06:19]  * StevenK watches for 'Needs Fixing'
[06:19] <LPCIBot> Project windmill-devel build #91: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-devel/91/
[06:20] <StevenK> wgrant: No, but both the packagecopier and the overrides want Archive
[06:23] <StevenK> wgrant: And since we're using UbuntuOverridePolicy(), a component will always be returned.
[06:24] <nigelb> StevenK: Now that those 2 ran successfully, but may not be related to the code I touched, should I be trying to figure out how to write new tests?
[06:24] <wgrant> StevenK: We are using UbuntuOverridePolicy at the moment.
[06:24] <wgrant> StevenK: Nothing in the interface says a policy has to return a component.
[06:24] <wgrant> Indeed, that doesn't make sense and is already violated by FromExistingOverridesPolicy
[06:26] <wgrant> StevenK: I evisage that primary archives will use a chain of UnknownComponentOverridePolicy and FromExistingDestinationOverridesPolicy, while PPAs might use MainOnlyOverridePolicy and FromSourceOverridesPolicy, and copy archives might use FromSourceOverridesPolicy and FromExistingPrimaryOverridesPolicy
[06:27] <wgrant> Er, last case is the wrong way around. FromExistingPrimaryOverridesPolicy and FromSourceOverridesPolicy
[06:32] <wgrant> StevenK: Do you see what I'm aiming at here?
[06:33] <StevenK> wgrant: I do
[06:33] <StevenK> That my work is a jumping off point, and not the end result.
[06:34] <wgrant> That's correct. This is a complex issue which you are taking nice initial bites out of.
[06:34] <StevenK> wgrant: http://pastebin.ubuntu.com/608827/ is the uglyness that results from moving the circular import you commented on.
[06:34] <wgrant> And it has to be somewhat complete before we can turn it on.
[06:34] <wgrant> Because copies are used for security updates and moving from -proposed to -updates.
[06:35] <wgrant>   File "/home/steven/launchpad/lp-branches/copies-use-overrides/lib/lp/soyuz/model/queue.py", line 97, in <module>
[06:35] <wgrant>     from lp.soyuz.scripts.packagecopier import update_files_privacy
[06:35] <wgrant> Can you move that import into whatever uses it?
[06:36] <wgrant> It's in a condemned code path anyway.
[06:36] <StevenK> Yes, thank $DEITY.
[06:38] <StevenK> wgrant: Round two: http://pastebin.ubuntu.com/608831/
[06:39] <wgrant>   File "/home/steven/launchpad/lp-branches/copies-use-overrides/lib/lp/soyuz/model/archive.py", line 198, in <module>
[06:39] <wgrant>     from lp.soyuz.scripts.packagecopier import do_copy
[06:39] <wgrant> Move it into syncSource(s).
[06:39] <wgrant> Hm.
[06:39] <wgrant> In fact there's a single underlying method you can put it into.
[06:39] <wgrant> I forget what it's called.
[06:39] <wgrant> _copySource or something.
[06:40] <wgrant> _copySources
[06:40] <StevenK> Right
[06:40] <wgrant> That is also condemned.
[06:40] <wgrant> As copies are going async.
[06:41] <StevenK> Success!
[06:41] <wgrant> Also, refactor + behaviour change in a single commit == strangle
[06:42] <StevenK> Ha
[06:43] <wgrant> Yay, DISTINCT ON replacement branch worked.
[06:43] <StevenK> \o/
[06:43] <StevenK> Does that replace all uses of it?
[06:44] <wgrant> There are some fully string-based SELECTs that I haven't fixed.
[06:44] <wgrant> But all those that use the hack ("DISTINCT ON (foo, bar) 0 as ignore") are gone.
[06:44] <StevenK> \o/
[06:45] <StevenK> It's landed?
[06:45] <wgrant> No.
[06:45] <wgrant> Passed ec2 except for a typo.
[06:45] <wgrant> Not reviewed yet.
[06:45] <StevenK> Would you like one?
[06:45] <wgrant> I've not written the description yet.
[06:50] <StevenK> wgrant: That sound be quick. "Now that Storm supports DISTINCT ON, make use of it instead of a SQL() hack."
[06:50] <wgrant> It was.
[06:50] <wgrant> But then it took 3 minutes to generate a diff.
[06:50] <wgrant> https://code.launchpad.net/~wgrant/launchpad/native-distinct-on/+merge/61199
[06:54] <StevenK> wgrant: Can the distinct_on in lib/lp/registry/model/distroseriesdifference.py be expressed only once?
[06:54] <jtv> wallyworld_: I'd be honoured.  Just not today, because it's a holiday.  :)
[06:54] <wallyworld_> jtv: awesome. thanks!
[06:54] <jtv> (Also in a somewhat bad mood due to a combination of bugs costing me hours of work)
[06:55] <StevenK> wgrant: And should bug 374777 be linked to the MP?
[06:55] <wgrant> StevenK: It could be, but it doesn't seem terribly valuable as they are doing different things.
[06:55] <_mup_> Bug #374777: DISTINCT ON queries <Storm:Fix Committed by wgrant> < https://launchpad.net/bugs/374777 >
[06:55] <wallyworld_> jtv: been there, done that :-(
[06:55] <StevenK> Ah, I see.
[06:55] <wgrant> StevenK: Not really. That's a Storm bug.
[06:56] <jtv> wallyworld_: that in its way is a small consolation, thanks
[06:56] <StevenK> wgrant: Thank you for proving I can't read, again. r=me
[06:56] <wgrant> Thankyou sir.
[06:56] <wallyworld_> jtv: so what's the holiday? king's brother's cousin's birthday?
[06:56] <StevenK> Haha
[06:57] <jtv> wallyworld_: sssshhh careful—joke about that and the police is obliged to investigate.  We're talking 3—15 years in a hotel that Amnesty International has been giving consistently bad reviews.
[06:57] <jtv> This is merely one of the main religious holidays.
[06:57] <wallyworld_> jtv: yeah i know. that's why i made sure i was all the way over here when i said it :-D
[06:58] <jtv> I _would_ have laughed out loud at this point but I'm not in a place where it's very safe to show too much independent thought.  :)
[06:58]  * wallyworld_ wishes we had more religion here to get all their holidays
[06:58]  * jtv wishes Santa would finally hurry up and get that heatstroke while visiting Australia, ridding the rest of us of his nonsense.
[06:59] <jtv> FTR, his dying day (which is what you celebrate with saints; I'll refrain from commenting) is December 6, not 25.
[06:59] <jtv> Did I mention that bad mood I was having?
[07:00] <jtv> Ironic thought: I'm not just in a place where it's not safe to show independent thought; I'm in a place where I've been told so in urgent but hushed tones.  And it happens to be right outside the most prestigious university.
[07:10] <LPCIBot> Project windmill-devel build #92: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-devel/92/
[07:11] <jtv> lifeless: loved the email pointing to the Services Analysis.  Q about that document though:
[07:12] <jtv> It looks as the "It's relatively difficult to have cascading failures" (as a benefit of the existing design) is mostly making the opposite case.  Is there anything positive under this header that we'd risk losing by changing to a different design?
[07:14] <StevenK> wgrant: And thank you for the hint for of "use a tuple" -- I disliked the two loops over binaries anyway
[07:16] <wgrant> StevenK: How are you going with the rest of the points.
[07:16] <wgrant> They were, uh, a little extensive.
[07:17] <wgrant> Apply question marks to taste.
[07:19] <StevenK> wgrant: 1-3, 5, 6, 9-11
[07:19] <StevenK> Or so
[07:47] <LPCIBot> Yippie, build fixed!
[07:47] <LPCIBot> Project devel build #723: FIXED in 5 hr 35 min: https://lpci.wedontsleep.org/job/devel/723/
[07:49] <LPCIBot> Project windmill-db-devel build #284: STILL FAILING in 2 min 26 sec: https://lpci.wedontsleep.org/job/windmill-db-devel/284/
[07:50] <StevenK> Uhhh
[07:59] <LPCIBot> Project windmill-devel build #93: STILL FAILING in 49 min: https://lpci.wedontsleep.org/job/windmill-devel/93/
[08:00] <LPCIBot> Project db-devel build #554: FAILURE in 6 hr 12 min: https://lpci.wedontsleep.org/job/db-devel/554/
[08:25]  * StevenK smashes Zope.
[08:25] <StevenK> Returning an override policy from IArchive seems to give me a proxy-wrapped object
[08:27] <wgrant> StevenK: As it should.
[08:28] <StevenK>     override = policy.calculateSourceOverrides(
[08:28] <StevenK> ForbiddenAttribute: ('calculateSourceOverrides', <lp.soyuz.adapters.overrides.UbuntuOverridePolicy object at 0xedd0b50>)
[08:28] <StevenK> :-(
[08:28] <wgrant> Right, you'll need an interface and security declarations.
[08:28] <StevenK> Bugger
[08:29] <nigelb> StevenK: do you have anything more for me on https://code.launchpad.net/~nigelbabu/launchpad/645825-ui-example/+merge/61175
[08:29] <StevenK> nigelb: Sorry, I got distracted.
[08:29] <nigelb> StevenK: np :)
[08:30] <StevenK> Perhaps someone else knows which tests exercise the code you changed.
[08:30] <nigelb> hrm, so basically, bug more people to look at it? :-)
[08:32] <StevenK> wgrant: Doesn't the fact that the code is in adapters mean that an interface is not needed?
[08:32] <wgrant> StevenK: No.
[08:38] <adeuring> good morning
[08:51] <LPCIBot> Project windmill-db-devel build #285: STILL FAILING in 51 min: https://lpci.wedontsleep.org/job/windmill-db-devel/285/
[09:02] <nigelb> Anyone's familiar with test cases that I could modify / write to make get this merge accepted? https://code.launchpad.net/~nigelbabu/launchpad/645825-ui-example/+merge/61175
[09:03] <poolie> hi all
[09:08] <poolie> nigelb: you probably need to look for some tests in a 'browser' directory that touch the same page
[09:08] <poolie> hopefully you can adapt them
[09:09] <nigelb> poolie: I'll be honest, I've very little experience with unit testing. I've written them, but not for an app this scale :)
[09:09] <poolie> lifeless: hi?
[09:10] <lifeless> hi
[09:11] <poolie> i really liked your perf tuesday mail
[09:11] <poolie> also, congratulations on the content
[09:12] <poolie> that's quite a fabulous practice you've created there
[09:18] <mrevell> How do?
[09:23] <lifeless> mrevell: hi
[09:23] <lifeless> poolie: practice?
[09:23] <poolie> mrevell: habit
[09:23] <poolie> bah
[09:23] <poolie> lifeless: "habit"  or pattern or whatever
[09:23] <poolie> is good.
[09:23] <lifeless> ah :)
[09:23] <lifeless> stubbornness :P
[09:24] <poolie> well, celebrating progress
[09:25] <lifeless> hows londinium
[09:27] <poolie> very good
[09:37] <poolie> lifeless: if you have any more cycles i'd like your opinion on https://code.launchpad.net/~mbp/launchpad/uniqueid-clue/+merge/61153
[09:39] <jkakar> Sometimes I think Launchpad suffers because it tries to have a one-size-fits-all solution... which means the obvious things that would for 98% of the projects and users can't be done because they don't work for 2% that are complex.
[09:39] <jkakar> For example, the project home page is pretty hard to use... it's really hard to find things like the active reviews page, for example.  Or whether or not the project has associated PPAs.
[09:40] <jkakar> I wonder if we need to ditch the idea that we have a single view for all projects and instead have a perfect view that degrades (or mutates) as projects get more complex.
[09:41] <wgrant> jkakar: Projects don't have associated PPAs :(
[09:41] <jkakar> wgrant: I know.  It's dumb.
[09:41] <jkakar> wgrant: The team/project model in Launchpad is broken.
[09:42] <jkakar> wgrant: I know it's uber flexible and makes all kinds of use cases possible... but it also makes the obvious ones very hard to achieve.
[09:42] <jkakar> wgrant: I find myself consistently educating users about very basic aspects of Launchpad.
[09:42] <jkakar> wgrant: It should be easier for people to figure out how it works and what it does.
[09:43] <jkakar> wgrant: I hope there's some budget for UI improvements this year... Launchpad is slipping behind the competition and it's so much better in so many ways.
[09:44] <jkakar> Anyway, I guess the burden created by technical debt is slowly being beaten down... it sounds like things have improved *a lot* in the last year, which is excellent.
[09:44] <wgrant> Launchpad slipped behind the competition about 4 years ago.
[09:44] <wgrant> jkakar: The maintenance squads are currently working solely on removing the pile of critical bugs.
[09:44] <wgrant> In the last month we have made significant progress.
[09:44] <wgrant> I expect it will be done in another 2 or 3 months.
[09:45] <wgrant> Then Launchpad can improve, as there will be people dedicated to doing non-feature work like unbreaking the UI.
[09:45] <jkakar> wgrant: Yep, it can definitely improve and the team is smart and capable.
[09:46] <jkakar> wgrant: It also rocks today, despite it being hard for newcomers to realize that.
[09:46] <wgrant> Functionality-wise it rocks.
[09:46] <jkakar> wgrant: Yes, exactly.
[09:46] <wgrant> UI-wise, it, uh....
[09:46] <jkakar> wgrant: Yeah. :)
[09:46] <poolie> i'm wondering about trying to spike a timeline view at the rally
[09:46] <jkakar> poolie: DO IT! :)
[09:47] <jkakar> poolie: Also, integrate lp:kanban while you're there. ;b
[09:47] <jkakar> Speaking of which, I really want to find more time to work on it.
[09:47] <poolie> (kthxbye? :-)
[09:47] <poolie> me too
[09:47] <jkakar> Hehe
[09:48] <jkakar> poolie: I want to port it to Go... but I guess that wouldn't be as good a use of my time as landing some of the improvements we've discussed.
[09:48] <jkakar> But I'm very excited about Go... I've been playing with it on and off and its really nice.
[09:50] <poolie> me too
[09:50] <jml> jkakar: as nice as C++?
[09:51] <jkakar> jml: C++ is not nice in any way.
[09:51] <jml> jkakar: aww, you'll hurt its feelings
[09:51] <jkakar> jml: It's much better than C++, from what I can tell so far.
[09:51] <jkakar> jml: Good. :)
[09:51] <jml> heh heh
[09:52] <jkakar> jml: Actually, I love C++... the way you have to think... the weird crap that comes up that is completely unrelated to your problem... template metaprogramming...
[09:52] <jkakar> jml: But I never ever ever want to maintain a real system written in C++ (I've done it, I know how much it sucks).
[09:53] <poolie> it is far smaller
[09:54] <poolie> at least one order of magnitude less complexit in the language, probably two
[09:54] <poolie> of course it is younger
[09:54] <rvba> lifeless: wgrant Hi, I've recently used the new (to me that is) "RECURSIVE WITH" SQL feature ... and I did this with store.execute(...) ... Is there a way to do this properly with Storm? (I saw only raw sql statements using RECURSIVE WITH in the existing code)
[09:54] <jkakar> poolie: Yes, that's a nice way to put it.  It is younger, but it already has a very nice set of libraries (both builtin and community contributed).
[09:55] <jkakar> poolie: It's also cool that they're still evolving the language and not promising backwards compatibility... things are moving, it's not a dead language.
[09:55] <rvba> This is the branch in question FYI https://code.launchpad.net/~rvb/launchpad/distro-overlay2-bug-758908-dependencies/+merge/61110
[09:55] <wgrant> rvba: lib/lp/blueprints/model/specification.py
[09:56] <wgrant> rvba: the WITH query still has to be raw SQL at the moment.
[09:56] <wgrant> rvba: But the rest can be Storm.
[09:56] <poolie> jkakar: i'v been wondering what will bring erlang-like ideas to the mainstream
[09:56] <poolie> this may be it
[09:57] <rvba> wgrant: ok thanks. Since my query is only a RECURSIVE WITH query, it will stay the way it is now then.
[09:57] <poolie> wgrant: if it's not too late i'd appreciate your thoughts on https://code.launchpad.net/~mbp/launchpad/uniqueid-clue/+merge/61153
[09:57] <poolie> i guess specifically if it's likely to overall help worth the trouble
[09:57] <wgrant> poolie: Er, tests depend on the format? Ew.
[09:58] <poolie> doctests stab stab
[09:58] <wgrant> How many?
[09:58] <poolie> becasue of course if you have
[09:58] <poolie> >>> thing.name
[09:58] <poolie> generic-....
[09:58] <poolie> then you will get a decent error if it fails whereas
[09:58] <poolie> >>> thing.name == expected
[09:58] <poolie> True
[09:59] <poolie> then it says nothing useful
[09:59] <wgrant> Ah, yes.
[10:00] <poolie> oh not that many
[10:00] <poolie> 7 failures, 5 errors
[10:00] <wgrant> I think you should remove those contract violations and land it :)
[10:00] <jkakar> poolie: Indeed.
[10:01] <poolie> thanks
[10:02] <poolie> in particular "if something unexpected happens just die" as a strong default makes so much sense
[10:02] <lifeless> rvba: store.with_
[10:02] <lifeless> rvba: its in our storm branch
[10:03] <lifeless> poolie: it looked ok to me
[10:03] <lifeless> poolie: a measurement of the overhead would be useful
[10:04] <rvba> lifeless: thanks, I'll take a look at this.
[10:05] <lifeless> grep for '\<with_\>'
[10:05]  * rvba is doing precisely this.
[10:06] <lifeless> oh, I see wgrant helped you out already
[10:06] <rvba> yes :)
[10:06] <lifeless> jkakar: so, I found go slower than pypy in the weekend :)(
[10:06] <lifeless> jkakar: not enough data to draw conclusions on
[10:06] <LPCIBot> Project windmill-devel build #94: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-devel/94/
[10:06] <lifeless> jkakar: but if pypy gets a free threading model, it would be a real serious language IMO
[10:07] <lifeless> jkakar: if you have any thoughts on https://dev.launchpad.net/ArchitectureGuide/ServicesAnalysis I would appreciate them!
[10:12] <poolie> lifeless: go vs pypy on what sort of a benchmark?
[10:15] <poolie> nigelb: if you get stuck, i for one will try to help you
[10:15] <poolie> i'm sure the ocr (currently gmb) will too
[10:15] <poolie> fairly sure ;-)
[10:15] <poolie> o/ gmb
[10:16] <lifeless> poolie: lmirror journal tokenising
[10:16] <lifeless> poolie: string splitting a 74MB null delimited file
[10:17]  * gmb waves
[10:17] <poolie> interesting
[10:17] <poolie> using go slices?
[10:17] <nigelb> poolie: I'm just stuck at the sheer size of it and limited time I have to figure things out, but I shall be back later to take a poke at things
[10:17] <jkakar> lifeless: Ah, very interesting.
[10:17] <lifeless> poolie: yes
[10:18] <lifeless> jkakar: intro to it is on the launchpad-dev list
[10:18] <jkakar> lifeless: Cool, will check it out.
[10:18] <poolie> nigelb: so one thing could be to just kick off './bin/test' and see if anything does currently fail
[10:18] <poolie> if it does' you know what to fix
[10:19] <nigelb> I did a test but not the whole thing
[10:19] <poolie> it takes a while though, like 4h on a decent machine
[10:20] <nigelb> poolie: what I ran is "bin/test -vvt productseries-views.txt"
[10:24] <poolie> i would probably try 'bin/test -m registry'
[10:29] <nigelb> hrm, okay.  I'm on my work box now, should be home in a few hours to fix that
[10:29] <lifeless> jkakar: on UI, I think LP needs to focus on lean somewhat ;)
[10:29] <lifeless> portlets are  a poor way to summarise and present useful info IMNSHO
[10:29] <lifeless> (great for overview stats though)
[10:30] <poolie> lifeless: i wonder if someone could make kind of science fiction screenshots for lp
[10:30] <poolie> like they did with unity
[10:30] <poolie> to exemplify that kind of concept
[10:32] <jkakar> lifeless, poolie: Yes, agreed.  I'd like to see science fiction screenshots... I've been thinking about doing it myself... but time. :/
[10:33] <lifeless> mmm
[10:33] <lifeless> perhaps
[10:33] <lifeless> mockups are a great way to communicate the visual nature
[10:33] <jkakar> The way we did the Landscape UI revamp was very nice.
[10:34] <jkakar> We focused on information architecture first, to understand what it was we wanted to communicate...
[10:34] <lifeless> I think the key thing is someone with the: a) time, b) mandate [assumed or granted, I don't care], c) knowledge and d) communication skills overhauling things
[10:34] <lifeless> jml has been doing this with his review on what we do and why
[10:34] <jkakar> Then from there we started to think about workflows, primary and secondary use cases, etc.
[10:34] <lifeless> and his highlighting of things that are not core - and these things cost
[10:34] <jkakar> lifeless: Yes, agreed.
[10:35] <lifeless> like answers, it /costs/ a lot - links to other parts of the system, UI realestate on the home page etc etc
[10:38] <lifeless> jkakar: so it seemed to me while you revamped that the folk doing the visuals had to come to grips with what the system does
[10:38] <lifeless> in a fairly thorough fashion
[10:39] <lifeless> jkakar: or did I misperceive?
[10:42]  * jml tries to think about bug 772754, but drowns in text
[10:42] <_mup_> Bug #772754: After better-bug-notification changes, list of bug subscribers is confusing <story-better-bug-notification> <Launchpad itself:Triaged by yellow> < https://launchpad.net/bugs/772754 >
[10:42] <jml> will tackle other emails first.
[10:42] <gmb> jml: I feel your paint.
[10:42] <gmb> Er.
[10:42] <gmb> Pain.
[10:43] <jml> gmb: it's smooth and contains no added lead.
[10:44] <gmb> So many rejoinders, so few of which are actually appropriate for a public channel.
[10:45] <lifeless> gmb: bad bad bad bad bad man
[10:45] <jml> A deliberate move on my part.
[10:45] <gmb> I'm that bad that I made lifeless think bad thoughts (with jml's help). I win at badness.
[10:46] <jml> There need to be terms for repartée of the same ilk as chess terms
[10:46] <gmb> ... Hm, also, might want to rephrase "I make lifeless think bad thoughts" to something where it sounds less like he wants me for his cuddle toy.
[10:46] <gmb> Shuttingupnow.
[10:46] <jml> I guess "zugzwang" might actually just work.
[10:47] <lifeless> heh, cloudbees have adverts 'hudson is now jenkins'
[10:47] <lifeless> its on!
[10:49] <wgrant> It's not off yet?
[10:49] <gmb> Is `Not(Something.attribute == None)` the correct Storm way to say "Something.attribute IS NOT NULL"?
[10:49] <gmb> Or am I better off using SQL() for that
[10:49] <gmb> ?
[10:49] <wgrant> gmb: != None?
[10:49] <gmb> wgrant: I thought there were issues with the != operator.
[10:49] <wgrant> I use it all the time.
[10:49] <wgrant> So I hope not.
[10:49] <gmb> Fair point, then :)
[10:50] <jkakar> lifeless: Yes, that was definitely the case.  We worked together, starting by giving the designers an overview of the system, and from there we worked together to clarify the ideas they came up with.
[10:50] <wgrant> You shouldn't do != None normally,.
[10:50] <gmb> No.
[10:50] <wgrant> But for Storm expressions it's fine.
[10:50] <gmb> Okay.
[10:50] <gmb> wgrant: Thanks, I'll give that a shot.
[10:50] <jkakar> lifeless: A big factor during the whole process was also deciding what we could reasonably achieve.  Some of their ideas were fantastic but unrealistic in terms of implementation difficulty and cost.
[10:50] <jkakar> lifeless: I'm pretty proud of how things turned out.  Landscape is *much* better now than it was.
[10:51] <jkakar> lifeless: And we came up with nice patterns that make putting new things in place easier.
[10:51] <lifeless> cool
[10:51] <lifeless> thats excellent
[10:53] <jkakar> lifeless: Yes, it was a lot of fun.
[10:53] <jkakar> lifeless: Something that was hard though, was that we had to do *a lot* of work before we could release anything...
[10:53] <lifeless> yeah, that hurts
[10:53] <jkakar> lifeless: We were iterating with the designers, but we had a broken system for a long time.  It was a bit hard.
[10:54] <jkakar> lifeless: I'm not really sure what we could have done differently, but focusing on deliverable milestones is very important.
[10:57] <LPCIBot> Project windmill-devel build #95: STILL FAILING in 50 min: https://lpci.wedontsleep.org/job/windmill-devel/95/
[11:21] <cjohnston> wgrant: mornin
[11:23] <wgrant> cjohnston: Hi. Your blueprint essential checkbox fix is on production now.
[11:23] <cjohnston> I see that! Yippie!
[11:23] <cjohnston> Thanks wgrant
[11:29] <wgrant> Maybe I should unbreak community-contributions.py
[11:29] <cjohnston> uh oh
[11:31] <wgrant> https://dev.launchpad.net/Contributions still thinks I don't work for Canonical.
[11:38] <cjohnston> a couple of my other branches are now listed as approved, I guess they just need to go through the merging process! yippie!
[11:44] <cjohnston> Off to work for a few hours... Be back this afternoon.
[12:09] <lifeless> jml: I'm not coordinating the project setup sabdfl has asked for at this point; if you want me to say so and I'll get on it tomorrow.
[12:09] <jml> lifeless: will be talking to flacoste about it later today.
[12:09] <lifeless> great
[12:09] <lifeless> I shall happily purge it from my mind :>
[12:09] <jml> lifeless: will keep you posted.
[12:09] <jml> good good.
[12:09] <lifeless> gnight!
[12:09] <jml> lifeless: g'night.
[13:09] <gmb> allenap: Of https://bugs.launchpad.net/launchpad/+bug/783948: I'm going to open a second bug to track the fact that somehow bug page rendering has been broken.
[13:09] <_mup_> Bug #783948: Entering a comment returns an error <Launchpad itself:Triaged> < https://launchpad.net/bugs/783948 >
[13:09] <gmb> Sound sane to you?
[13:10] <allenap> gmb: Sure, I don't mind :) It's likely to be the same underlying bug though.
[13:12] <gmb> allenap: Weeee-ll. I see two: 1) We should still be able to render the page in the presence of slightly funky data (which is what I assume is going on here) and 2) We shouldn't accept the funky data in the first place.
[13:13] <allenap> gmb: Cool.
[13:19] <gmb> Well, hiding the comments doesn't make the page render.
[13:19]  * gmb waits for the OOPS.
[13:27] <wgrant> LocationError: (<zope.browserpage.metaconfigure.SimpleViewClass from /srv/launchpad.net/production/launchpad-rev-13053/lib/lp/bugs/browser/../templates/bug-portlet-subscribers.pt object at 0xfe1d610>, 'current_user_mute_class')
[13:28] <wgrant> Huh.
[13:28] <gmb> wgrant: Are you looking at the bug linked to in bug 783948 too?
[13:28] <_mup_> Bug #783948: Entering a comment returns an error <Launchpad itself:Triaged> < https://launchpad.net/bugs/783948 >
[13:28] <wgrant> Thankyou TALES for your awesome exception suppression.
[13:28] <wgrant> gmb: No, I looked at the OOPS linked in the bug.
[13:28] <wgrant> It doesn't OOPS for me.
[13:28] <gmb> wgrant: Oh really? Now that is interesting.
[13:28] <wgrant> I even tried muting it.
[13:28] <gmb> Curious.
[13:29] <LPCIBot> Yippie, build fixed!
[13:29] <LPCIBot> Project db-devel build #555: FIXED in 5 hr 28 min: https://lpci.wedontsleep.org/job/db-devel/555/
[13:29] <wgrant> Note that I am in ~ubuntu-bugs.
[13:29] <wgrant> So I have a subscription to mute.
[13:29] <gmb> Aaah.
[13:29] <wgrant> Both to the distro and through the dupe.
[13:30] <gmb> So, this could be another regression due to my fix for bug 772609, maybe. Poo.
[13:30] <_mup_> Bug #772609: bug subscription mute link is not shown for membership in a team with a direct or structural subscription <bad-commit-13003> <story-better-bug-notification> <Launchpad itself:In Progress by gmb> < https://launchpad.net/bugs/772609 >
[13:30] <poolie> how do i select a single doctest file to run?
[13:30] <gmb> poolie: bin/test -ct doctest-filename.txt
[13:30] <poolie> with the full path?
[13:31] <gmb> poolie: No, just hte filename will work.
[13:31] <gmb> s/will/should/
[13:31] <jml> poolie: it does a regex match on the calculated doctest id, which is, I think, lib/lp/bugs/doc/thingy.txt
[13:31] <jml> (it used to be lib/lp/bugs/tests/../doc/thingy.txt)
[13:33] <wgrant> gmb: Do you have any idea what's going on here? We may want to revert the deployment.
[13:34] <gmb> wgrant: Working on it now, but that's my thinking too.
[13:35] <wgrant> allenap: Is it still broken for you?
[13:36] <wgrant> If so, we should probably try accessing that view property in a harness to get the real exception.
[13:36] <allenap> wgrant: Arr, t'is.
[13:37] <wgrant> allenap: With that same locationerror?
[13:37] <allenap> wgrant: Yep.
[13:37] <gmb> wgrant, allenap: I'm going to give this some looking at for the next hour or so; I can't be certain that my revision caused this breakage, but if I can't find a cause in the next hour we'll roll it back and hope that that fixes it.
[13:38] <allenap> gmb, wgrant: Renders fine if I'm logged out.
[13:38] <wgrant> gmb: We can trivially roll back to 13045 in a few minutes if required.
[13:39] <gmb> wgrant: Hmm. If it's trivial then maybe we should give it a shot.
[13:39] <gmb> (I always have my work reverted overnight)
[13:40] <wgrant> Sorry, my QA was obviously crap this time :/
[13:40] <gmb> wgrant: There are only so many permutations you can check for.
[13:40] <gmb> This is more of a notest problem.
[13:40] <gmb> (or badtest)
[13:56] <deryck> Morning, all.
[13:58] <poolie> hi deryck
[14:01] <deryck> henninge, ping for standup
[14:01] <henninge> deryck: coming
[14:01] <deryck> cool
[14:04] <poolie> does launchpad actually retriage all High bugs every four months?
[14:04] <wgrant> The intention is to do that.
[14:04] <poolie> mrevell: ^^, but aside from that the page looks really good
[14:04] <wgrant> But it's all a bit chaotic at the moment.
[14:04] <wgrant> Like Criticals.
[14:05] <mrevell> Thanks for taking a look. I meant to ask in my email to the list if that was something we were actually doing.
[14:16] <poolie> it was just curiousity
[14:16] <poolie> until the critical queue is drained it's probably not worth doing
[14:35] <danilos> gmb, hi, can you please take a look at https://code.launchpad.net/~danilo/launchpad/bug-772763-remove-nothing/+merge/61251?
[14:35] <gmb> danilos: Sure
[14:35] <danilos> gmb, thanks, the diff is likely to show up only in 5 mins or so :)
[14:35] <gmb> danilos: Works for me. I need a cup of coffee anyway :)
[14:37] <danilos> gmb, diff is up so whenever the coffee is brewed... :)
[14:45] <gmb> danilos: Looking now.
[14:51] <nigelb> hey gmb, do you have a moment to help me proceed with https://code.launchpad.net/~nigelbabu/launchpad/645825-ui-example/+merge/61175.  I seem to be stuck not knowing how to deal with test cases
[14:52] <gmb> danilos: r=me. I particularly approve of your removal of tests (yes, I know they would have broken, but it warms my heart to see a test file a bit shorter).
[14:52] <gmb> nigelb: Sure, I'll take a look.
[14:53] <nigelb> gmb: thanks
[14:54] <gmb> nigelb: Do you know if any tests break as a result of your changes (I know it's not exactly a trivial think to run all the LP tests on your own machine...)
[14:54] <nigelb> gmb: hang on, let me show you what I did run
[14:55] <gmb> k
[14:56] <nigelb> gmb: I ran "bin/test -vvt productseries-views.txt" which ran successfully
[14:56] <nigelb> I'm okay to write new tests for this if you can explain where they need to be written
[14:58] <gmb> nigelb: Okay. Let's try and work out what needs to change...
[14:58] <nigelb> awesome :)
[14:59] <poolie> benji: if you're here, could i get a wee little incremental review on https://code.launchpad.net/~mbp/launchpad/778437-sprb-spam/+merge/60360
[14:59] <benji> poolie: sure
[15:01] <benji> poolie: there are conflict markers in the diff
[15:03] <poolie> yeah i just discovered that
[15:03] <poolie> this is getting kind of messy
[15:04] <poolie> istm this ought to be split out into some kind of pubsub filter rather than doing it inline here
[15:04] <gmb> nigelb: The following might fail now: `bin/test -ct xx-upload-directions`
[15:05] <nigelb> gmb: where do you reckon I should start?
[15:05] <gmb> nigelb: Well, run that test.
[15:05] <gmb> If it fails then you know to update it.
[15:05] <gmb> If not, you *still* need to update it
[15:05] <gmb> (The file is here: lib/lp/code/stories/branches/xx-upload-directions.txt)
[15:05] <nigelb> heh, ok
[15:05] <gmb> nigelb: If it doesn't fail, ping me and I'll see if I can walk you through adding the necessary changes.
[15:06] <nigelb> gmb: okay!
[15:07] <nigelb> gmb: that didn't fail
[15:07] <gmb> Poo.
[15:07] <nigelb> heh
[15:07] <gmb> nigelb: Okay, bear with me whilst i take a look at the test
[15:18] <gmb> nigelb: Still looking - got distracted by a failing RAID disk.
[15:18] <nigelb> np, I'm looking at these tests to figure out how they work
[15:20] <poolie> o/ nigel
[15:21] <poolie> thanks benji
[15:21] <benji> np
[15:21] <gmb> Oh, that's annoying.
[15:21] <nigelb> o/ poolie
[15:21] <nigelb> nigelb: persistently trying to fix my first bug on Lp :)
[15:21] <gmb> nigelb: I think you can probably add something to xx-upload-directions.txt
[15:22] <gmb> (As in, that seems like a sane place for it to be).
[15:22] <nigelb> ok, but I have't understood how the tets in that file work
[15:22] <nigelb> >>> name12_browser.open(branch_page)
[15:22] <gmb> OTOH pagetests are horrible and need to die, so...
[15:23] <gmb> nigelb: Are you familiar with doctests at all?
[15:23] <nigelb> ^^ is that the bit where the actual test happens?
[15:23] <gmb> Yes.
[15:23] <gmb> nigelb: Think of the >>> do_something() bits as being stuff exectued in the Python CLI.
[15:23] <nigelb> aha
[15:23] <gmb> The bits inbetween are the documentation.
[15:24] <nigelb> and the data is assumed to be the default data?
[15:24] <gmb> nigelb: Yes. That's why we don't usually like to add to these tests unless we can help it.
[15:24] <gmb> nigelb: But if you can think of a way to exercise your code using the sampledata then that's not a bad place to start at all.
[15:24] <nigelb> well, for testing this, we'll have to change the data I think, or is there a project in the default data that has more than one series?
[15:25] <gmb> nigelb: I don't know.
[15:26] <gmb> nigelb: But you could use the testing factory to create one.
[15:26] <gmb> nigelb: e.g.:
[15:26] <gmb> >>> product = factory.makeProduct()
[15:26] <gmb> >>> ...
[15:27] <gmb> (I *think* the factory is available in all the doc and pagetests now)
[15:27] <nigelb> found one
[15:27] <nigelb> https://launchpad.dev/alsa-utils
[15:27] <gmb> Aha.
[15:27] <nigelb> bah
[15:27] <nigelb> that has branch linked
[15:28] <nigelb> here's another https://launchpad.dev/a52dec/failedbranch
[15:28] <jml> gmb: is this bug closed? https://bugs.launchpad.net/launchpad/+bug/674815
[15:28] <_mup_> Bug #674815: When a bug is marked as duplicate, you are invited to subscribe to the master bug <lp-bugs> <story-better-bug-notification> <Launchpad itself:Triaged> < https://launchpad.net/bugs/674815 >
[15:29] <gmb> jml: I don't know off the top of my head.
[15:33] <gmb> nigelb: I think you'd be best-off using the factory to create a new project
[15:33] <gmb> And then adding the necessary number of series to that.
[15:33] <nigelb> wow, that's a lot of test code to write o.O
[15:34] <gmb> nigelb: Really? Let me look...
[15:34] <nigelb> gmb: well, use factory to create a project, create a new series, and then test, and then tear down.
[15:34] <gmb> nigelb: You don't need to tear down.
[15:34] <gmb> It's done automatically.
[15:35] <gmb> It should be something like:
[15:35] <gmb> >>> product = factory.makeProduct()
[15:35] <gmb> >>> series_1 = factory.makeProductSeries(product=product)
[15:35] <gmb> >>> series_2 = ...
[15:36] <gmb> Then you can do something like
[15:36] <gmb> >>> user_browser.open('$URL_TO_WHATEVER_PAGE')
[15:36] <gmb> and check that the text you're looking for appears in that page.
[15:37] <nigelb> okay, let me take it step by step :)
[15:37] <gmb> nigelb: Unless I'm missing something; I don't know codehosting well.
[15:37] <gmb> nigelb: Sure thing.
[15:37] <wgrant> (note, though, that writing more doctests is likely to invoke hitherto unknown demons)
[15:37] <nigelb> wgrant: I thought touching launchpad did that anyway.
[15:38] <wgrant> :(
[15:38] <nigelb> so, I start by making a product using product = factory.makeProduct()
[15:38] <nigelb> then I make a new series in that product using the series_1 line above
[15:39] <gmb> wgrant: Agreed. nigelb: This should probably go in a unit test, thinking about it
[15:39] <gmb> nigelb: So let's back up a step here and find somewhere suitable for it...
[15:39] <nigelb> gmb: ah
[15:39] <nigelb> gmb: pause for now
[15:40] <nigelb> lib/lp/registry/tests/test_productseries.py?
[15:40] <wgrant> It'll be in lib/lp/*/browser/tests
[15:40] <nigelb> ah
[15:40] <gmb> nigelb: Hmm. It's a view test so it should go in lib/lp/registry/browser/tests
[15:40] <gmb> And there isn't a producteseries one in there.
[15:41] <gmb> So we need to create one.
[15:41] <gmb> nigelb: You can copy the test boilerplate from standard_test_template.py in the root of the LP tree.
[15:41] <gmb> call it lib/lp/registry/browser/tests/test_productseries_views.py
[15:43] <nigelb> okay, done
[15:44] <nigelb> http://pad.ubuntu.com/lp-productseries-test
[15:45] <nigelb> I'm guessing I should import TestCaseWithFactory instead of DatabaseFunctionalLayerDatabaseFunctionalLayer
[15:45] <gmb> Aha!
[15:45] <gmb> Good idea that man.
[15:45] <nigelb> heh
[15:45] <gmb> nigelb: No, you need to import it instead of TestCase
[15:45] <nigelb> ah, ok
[15:47] <gmb> nigelb: We need LaunchpadFunctionalLayer since we want to actually render a View
[15:47] <gmb> So...
[15:47] <nigelb> gmb: and we don't want database since we're going to use factory right?
[15:47] <gmb> nigelb: No, you need the database (it's implicit)
[15:48] <nigelb> ohh, okay
[15:48] <gmb> Horrible admission: We always use a live DB instance, even when we use the factory
[15:48] <wgrant> gmb: Not DatabaseFunctionalLayer? I'm not sure this will need the librarian.
[15:48] <wgrant> And that takes ages to start, so nice to avoid it where possible :)
[15:48] <gmb> wgrant: If that provides the UI, then sure. I thought it didn't.
[15:48] <gmb> I'm happy to be wrong.
[15:50] <nigelb> gmb: okay, I did the SetUp bit, does that look right? (I looked at one of the poll tests)
[15:50] <wgrant> gmb: IIRC LaunchpadLayer just provides librarian and memcache. But this is an entirely confusing mess.
[15:50] <gmb> nigelb: Actually, you can do it in the test.
[15:50] <nigelb> gmb: oh, okay, I'll just rename the thing
[15:50] <gmb> ok
[15:50] <wgrant> Lots of browser tests are DatabaseFunctionalLayer.
[15:51] <gmb> wgrant: Fair neough. Let's just do that and fix it if it breaks.
[15:51] <wgrant> That's how I tend to choose layers, yeah :/
[15:51] <nigelb> heh
[15:51] <gmb> nigelb: You can drop the self.* stuff too when you're creating your variables in-test.
[15:52] <nigelb> now how I open the url to one of those.
[15:54] <nigelb> gmb: ah, so much learning :)
[15:54] <gmb> nigelb: I think you can just use create_initialized_view. Hang on...
[15:55] <wgrant> Indeed. view = create_initialized_view(series, '+whateverview'); self.assertThat(view(), Contains('whatever string you are looking for in the output'))
[15:56] <wgrant> (Contains is imported from lp.testing.matchers; create_initialized_view from lp.testing.views)
[15:57] <gmb> wgrant: I like this thing where you're always one step ahead of my typing.
[15:57] <gmb> Saves me a job.
[15:59] <nigelb> gmb: that leaves me with one question, how do I build the string based on name of lp user, product and series
[16:00] <gmb> nigelb: Something like this...
[16:00] <nigelb> basically I need to build "lp:~name16/productname/seriesname"
[16:00] <nigelb> etherpad is so much fun for pair coding :)
[16:01] <gmb> Yeah.
[16:01] <gmb> It rocks.
[16:01] <gmb> I'd totally forgotten about it.
[16:01] <gmb> (And I've always been burned by Gobby)
[16:01] <nigelb> heh, this UDS, we had a good time with it (minus the spam)
[16:02] <gmb> I can imagine
[16:02] <nigelb> I think you've written the test completely, and I've learned how to write a new one now :)
[16:03] <gmb> Heh.
[16:03] <nigelb> now, how do I test this beast? :)
[16:10] <nigelb> gmb: ^^
[16:11] <gmb> nigelb: You should just be able to run `bin/test -ct test_productseries_views`
[16:11] <gmb> And that should JustWork.
[16:11] <nigelb> famous last words
[16:11] <nigelb> ;)
[16:11] <sinzui> gmb: do you have time to review https://code.launchpad.net/~sinzui/launchpad/language-add-admin/+merge/61267
[16:12] <gmb> Sure
[16:13] <poolie> i wonder if it is worth doing some stats on what kind of change in lp needs a rollback
[16:13] <poolie> and perhaps that could guide us to put flags on that type of change beforehand
[16:13] <poolie> (or even perhaps to not make problem changes, but hey)
[16:13] <nigelb> gmb: ah, it failed.  The user isn't logged in. Is there a way to create a way where the user we created is logged in?
[16:14] <gmb> nigelb: There is, yes.
[16:14] <gmb> nigelb: I'm just reviewing sinzui's code, so I suggest grepping for "with person_logged_in" in lib/lp
[16:14] <gmb> Should help.
[16:14] <nigelb> will do, thanks
[16:14] <gmb> person_logged_in comes from lp.testing, IIRC.
[16:18] <gmb> sinzui: r=me
[16:18] <sinzui> fab
[16:18] <sinzui> thank you very much
[16:20] <nigelb> bah, traceback
[16:23] <nigelb> gmb: got a huge traceback :(
[16:24] <poolie> benji, i don't understand when lp reviews get into approved state
[16:24] <gmb> nigelb: Paste it for me
[16:24] <poolie> specifically can i just flip https://code.launchpad.net/~mbp/launchpad/uniqueid-clue/+merge/61153 myself
[16:24] <poolie> or what should i do?
[16:25] <poolie> no ocr now?
[16:25] <gmb> poolie: I'm still here.
[16:25] <benji> poolie: yep, you can flip it yourself; most reviewers leave the over-all status alone
[16:25] <gmb> poolie: If it's reviewed and approved, feel free to flip the flag
[16:26] <benji> The idea is that if you need more than one review (ui, db, etc.) then you should decide when it's sufficiently approved
[16:26] <nigelb> gmb: http://paste.ubuntu.com/609048/
[16:28] <gmb> nigelb: Can you update the EP session with your current test?
[16:28] <nigelb> gmb: erm, EP session?
[16:28] <gmb> EtherPad
[16:28] <nigelb> ah, etherpad
[16:28] <nigelb> done; http://pad.ubuntu.com/lp-productseries-test
[16:29] <gmb> Hmm.
[16:29] <gmb> Okay, gimme a sec
[16:32] <gmb> nigelb: I've changed the test so s/+index/+code-summary/
[16:32] <gmb> ]
[16:33] <gmb> Don't know if that'll work, but give it a shot.
[16:33] <gmb> (since that's the page you changed)
[16:33] <nigelb> okay, I'll take a shot
[16:37] <nigelb> gmb: failed again :(
[16:37] <nigelb> http://paste.ubuntu.com/609051/
[16:37] <gmb> !
[16:38] <gmb> nigelb: [36m        No revision control details recorded for[0m
[16:38] <gmb> [36m        <em>Product-name738808 generic-string738812 series</em>.[0m
[16:38] <gmb> Might have something to do with it
[16:38] <LPCIBot> Project windmill-db-devel build #286: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-db-devel/286/
[16:39] <nigelb> gmb: hrm, the slashes didn't turn up?
[16:39] <gmb> nigelb: No, I just think we need to do something extra to the series to make this work.
[16:39] <gmb> Just not sure what.
[16:40] <nigelb> gmb: heh, what can I do at this point?
[16:41] <gmb> nigelb: Try person = product.owner
[16:41] <gmb> Instead of using self.factory.makePerson()
[16:41] <nigelb> okay
[16:41] <gmb> (It seems thtat message only appears if you don't have edit rights).
[16:41] <gmb> Not that that will fix it, but it's a step along the road.
[16:41] <gmb> Aaah
[16:41] <gmb> nigelb: You need to have an SSH key for person.
[16:41]  * benji looks.
[16:42] <nigelb> gmb: ahh.
[16:42] <gmb> nigelb: I've tweaked the EP doc.
[16:43] <nigelb> gmb: \o/ Trying again :)
[16:45] <nigelb> gmb: IT WORKED!
[16:45]  * nigelb does happy dance
[16:45] <gmb> WEWT
[16:45] <gmb> nigelb: Commit it, push it, ping me and I'll review it.
[16:46] <nigelb> that's the hardest I've worked to fix a bug.
[16:52] <nigelb> gmb: https://code.launchpad.net/~nigelbabu/launchpad/645825-ui-example/+merge/61175
[16:52] <gmb> nigelb: Welcome to our world. I've been doing this for four years.
[16:52] <gmb> No wonder I'm going bald.
[16:53] <nigelb> gmb: heh.
[16:53] <gmb> nigelb: Argh. One thing I should have said: The test needs a comment at the start of it that states the expected behaviour. e.g.:
[16:54] <gmb> "# The LP branch URL displayed to the user on the +code-summary page for a product series will relate to that series instead of to the default series for the Product.
[16:54] <gmb> :
[16:54] <gmb> (Wrapped to 78 characters, obviously)
[16:55] <gmb> nigelb: But that aside, I'm happy for this to land.
[16:55] <gmb> Can you add that comment and push it? I'll run it through EC2 for you when you have done.
[16:56] <nigelb> gmb: I can do that right away
[16:56] <gmb> Cool
[16:57] <nigelb> gmb: could you glance at the etherpad again to see if its fine :)
[16:57] <gmb> Sure...
[16:57] <nigelb> ahhh, gmb = Graham Binns, now I realize :-)
[16:58] <gmb> nigelb: Ah, not at the start of the Testcase, at the start of the test. So:
[16:58] <nigelb> aha
[16:59] <gmb> nigelb: Yup. I couldn't be bothered thinking up an imaginative nick, so I just used my initials.
[16:59] <nigelb> gmb: heh, neither can I ;)
[16:59] <gmb> :)
[16:59] <gmb> nigelb: Anyway, let me know when that's pushed and I'll run it through EC2 for you.
[17:00]  * benji is very imaginative.
[17:00] <gmb> Heh
[17:00] <nigelb> gmb: its pushed, I'm waiting for lp to show updated branches
[17:00] <benji> gmb: are you off the OCR clock for the day?
[17:00] <gmb> benji: Depends. How big is the branch?
[17:01] <benji> gmb: not teeny: 469 line diff; I bet I can persuade one of the yellow guys to do it
[17:01] <gmb> benji: No, I'll tkae that.
[17:01] <gmb> It'll take me to EoD.
[17:01] <gmb> :)
[17:02] <benji> ok, here you go https://code.launchpad.net/~benji/launchpad/bug-777786/+merge/61274
[17:02] <gmb> Ta
[17:03] <nigelb> gmb: Thanks a bunch for the help :-)
[17:04] <gmb> np
[17:29] <gmb> benji: r=me
[17:30] <benji> thanks
[17:49] <LPCIBot> Project windmill-devel build #96: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-devel/96/
[18:36] <LPCIBot> Project windmill-db-devel build #287: STILL FAILING in 46 min: https://lpci.wedontsleep.org/job/windmill-db-devel/287/
[19:04] <LPCIBot> Project windmill-devel build #97: STILL FAILING in 47 min: https://lpci.wedontsleep.org/job/windmill-devel/97/
[20:02] <LPCIBot> Project windmill-devel build #98: STILL FAILING in 46 min: https://lpci.wedontsleep.org/job/windmill-devel/98/
[21:23] <lifeless> morning
[21:59] <cr3> in terms of development, what's the difference between using schroot and kvm?
[22:12] <cjohnston> mornin lifeless
[22:19] <lifeless> hi cjohnston
[22:19] <lifeless> cr3: ip addresses I suspect
[22:19] <lifeless> flacoste: hi
[22:19] <flacoste> hi lifeless
[22:19] <lifeless> flacoste: nvm, I remembered what it was - grouping criticals
[22:25] <cjohnston> hey flacoste
[22:27] <flacoste> hi cjohnston
[22:44] <lifeless> poolie: thanks for the feedback
[23:07] <soren> I just thought of something... jml said in his UDS lightning talk that you were adding a bunch of new headers to e-mail for easier filtering.. Some of us use GMail, and it doesn't let you filter on arbitrary mail headers (because it doesn't index those, presumably). Is anyone considering that use case?
[23:08] <soren> i.e. copying the mail headers in the body in a way that is searchable/filterable (or something else that makes filtering with gmail suck less).
[23:24] <lifeless> I don't think so
[23:24] <lifeless> there is a bug about this though
[23:43] <lifeless> http://www.readwriteweb.com/cloud/2011/04/5-graph-databases-to-consider.php
[23:48] <mwhudson> lifeless: have you read the 'release it' book?
[23:48] <lifeless> mwhudson: yes
[23:48] <mwhudson> cool
[23:48] <lifeless> a bit light weight, but some good clear explanations
[23:48] <lifeless> I think most web devs should read it
[23:48] <mwhudson> i thought i could detect various release it thoughts in https://dev.launchpad.net/ArchitectureGuide/ServicesAnalysis
[23:48] <lifeless> mmm, possibly
[23:48] <mwhudson> plenty of other sources for that sort of thing though
[23:48] <lifeless> I last looked at it > a year back
[23:49] <mwhudson> there are only two things i really remember from the book -- one is the idea of 'integration point' and the other is "SQL IS NOT AN INTEGRATION STRATEGY"
[23:49] <lifeless> :)
[23:49] <lifeless> the things I thought was nicest in the book was the pattern for handling occasionally failing services
[23:50] <lifeless> the ratcheting-alert-thingy
[23:50] <mwhudson> ah yeah
[23:50] <lifeless> mwhudson: what do you think of the proposal
[23:50] <mwhudson> related to the integration point thing was the thought of why it's so important to always attach errbacks to deferreds in twisted
[23:51] <mwhudson> because if you get a deferred, it's generally something that will take some time to complete
[23:51] <mwhudson> and that's actually really strongly correlated with 'something that you cannot rule out failing'
[23:51] <mwhudson> (i.e. an integration point)
[23:51] <mwhudson> lifeless: i think it makes sense mostly, i'm only about halfway in
[23:51] <lifeless> jcsackett: bug 784273
[23:51] <_mup_> Bug #784273: InvalidURIError generated by unescaped search on frontpage <Launchpad itself:New> < https://launchpad.net/bugs/784273 >
[23:52] <lifeless> jcsackett: the url in the exception is a lie
[23:52] <mwhudson> there are some sentences that i think aren't really clear, i'll be sending an email about that in due course :)
[23:52] <lifeless> jcsackett: if you look at the request variables you can see the actual query string and path - I've pulled that out into the bug description for you (and it oopses if I click on the  link)
[23:52] <lifeless> mwhudson: cool, thanks!
[23:53] <lifeless> jcsackett: also, please triage-when-you-file :)
[23:55] <jcsackett> lifeless: ack, on the triage, i got distracted. :-)
[23:55] <jcsackett> and thanks for the updates.
[23:55] <lifeless> no probs
[23:55] <lifeless> I was intruiged by it not oopsing so I went fiddling :)
[23:55] <lifeless> mwhudson: if you know what the sentence means, feel free to edit
[23:56] <mwhudson> lifeless: will do
[23:58] <lifeless> I wonder if we should prevent users putting in a one-line summary of their problem
[23:58] <lifeless> make that a developer only field
[23:59] <lifeless> + apport field
[23:59] <lifeless> (because very very very few users put the problem in the field vs their preferred solution)