/srv/irclogs.ubuntu.com/2012/04/13/#launchpad-dev.txt

=== wallyworld changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: wallyworld | Firefighting: - | Critical bugtasks: 4*10^2
pooliewhere did the ec2 script go?00:46
pooliei'm guessing lp-dev-utils00:47
wgrantYes, in there00:47
* poolie is trying to finish https://code.launchpad.net/~mbp/launchpad/925597-dkim-from/+merge/9897600:51
lifelesshave a good weekend y'all01:02
StevenKwallyworld: Can I borrow your eyes for a moment?01:20
wallyworldStevenK: sure, so long as you return them, and it depends on what you use them to look at01:21
StevenKwallyworld: http://pastebin.ubuntu.com/927290/ is one of my JS files, make lint reports "59: Expected ';' and instead saw '}'."01:21
wallyworldStevenK: you need to terminate the } with a ;01:22
wallyworldsince that block is a statement and all statements need to be terminated with a ; in js01:22
StevenKAh.01:22
wallyworldone of the reasons to prefer python :-)01:23
StevenKOh, bah. Y.one('[name="field.information_type"]'); is only matching the first radio button with that name. :-(01:24
wallyworlddo you want all of them or a specific one?01:24
rick_hStevenK: that's what .one does :)01:24
StevenKrick_h: Silence! :-P01:25
rick_h/one/all01:25
wallyworldwhat he said01:25
StevenKrick_h: s/one/all/   # perhaps? :-)01:25
rick_hsorry, was this in vimscript or something else :P01:25
StevenKrick_h, wallyworld: .all returns an array?01:25
wallyworldrick_h: ignore the pedant :-)01:25
rick_hhey, 'pseudocode' is legit01:25
wallyworlda NodeList01:25
wallyworldwhich you can call .each() on etc01:26
rick_hnodelists are nice, act like nodes01:26
StevenKCan I say .on('change', ) on it?01:26
wallyworldi'd use event delegation01:26
wallyworldinstead01:26
rick_hyou can say that on the nodelist, but yea, delegate ftw01:26
wallyworldattach a handler to the containing div or whatever and use a selector in the delegate() to choose what to listen to01:27
rick_hassuming they're all from a common parent node01:27
wallyworldStevenK: look at examples in shareetable.js01:27
StevenKThe radio button list is coming from Zope's form handling01:27
wallyworldthere should be a parent node you can use01:28
* wallyworld has to run away to drop the kid at the occupational therapist. back in ~3001:28
StevenKwallyworld: It's in a table, so the parent node is ... difficult to get.01:29
StevenKOh, wait a sec, there's a table inside another.01:29
StevenKrick_h: Hmmm, maybe I'm going about this all wrong01:37
rick_hhow so?01:42
StevenKrick_h: If I put the change function on all nodes, I'm not sure how to reach in and get which radio button is selected01:43
bigjoolswallyworld: fancy a liquid lunch today?01:43
rick_hso when you delegate you tell it you only care about 'input[name...]' nodes that change01:43
rick_hStevenK: and then when your callback is called, 'this' is the node that changed01:43
rick_hStevenK: http://yuilibrary.com/yui/docs/event/#delegation01:44
poolieis there an easy way to get a person by email, requiring that the email be verified?01:48
rick_hpoolie: there's 'admin = getUtility(IPersonSet).getByEmail(ADMIN_EMAIL)' usage01:50
wgrantI don't think that validates.01:50
rick_hbut you'll have to check the validated status of the email after you get hte person back I think01:50
pooliein my test for bug 925597 my current (not live) code is accepting mail from unverified addresses01:51
_mup_Bug #925597: From address is ignored if DKIM is supported <email> <regression> <Launchpad itself:In Progress by mbp> < https://launchpad.net/bugs/925597 >01:51
pooliewhich what a simple getPrincipalByLogin(addr) does01:51
pooliemm i think i should just check it01:51
pooliethanks01:51
StevenKrick_h: I'm not doing delegation yet.01:58
pooliewallyworld, could i get an incremental review on https://code.launchpad.net/~mbp/launchpad/925597-dkim-from/+merge/98976 ?02:11
wallyworldpoolie: sure02:16
wallyworldbigjools: i ate on the way back from dropping lachie off at the dr :-(02:17
bigjoolswallyworld: what part of liquid didn't you understand? :)02:17
wallyworldlol02:18
poolie:)02:18
poolieyay bne02:18
wallyworldbigjools:  i have to play soccer tonight but i could be persuaded to have one or two or three02:18
pooliebtw i'm probably going to be up there on about the 11th of june02:19
wallyworldpoolie: excellent. make sure you keep some time free to come over for dinner or something02:20
bigjoolsI trust we'll see you for a wee drinkie02:20
poolie:) please keep some beer for me02:20
bigjoolsDan Murphy's is going to get more custom02:20
wgrantHmmm02:20
wgrantWe have a lot of old private bugs that probably shouldn't be private.02:20
wallyworldpoolie: 2 comments 1. preload_dns_response. i'd prefer response_type to default to 'valid' instead of None02:24
pooliegood idea02:24
wallyworldpoolie: 2. i'd like to see tests for all the new code paths introduced for checking the email address02:25
wallyworldnot just the 'this is not active'' case02:25
poolieoh, person with no account, etc02:25
wallyworldyeah02:25
pooliemm02:25
pooliefair point02:25
wallyworldbigjools: when you going to Dan's?02:25
wallyworldpoolie: sorry to be picky on your last day02:26
bigjoolswhen I run out of OSH02:26
wallyworldi'm surprised you have any left02:26
lifelessyou Mosh ?02:26
bigjoolswar rationing02:26
pooliehm02:27
pooliei wonder if those can actually be hit or if i'm just over cautios02:27
wallyworldpoolie: i'm not sure tbh02:27
wallyworldpoolie: you could always put in asserts if we think those conditions should be impossible to hit02:28
poolieplain 'assert' or if/raise pseudo assert?02:29
lifelessif raise02:29
lifelessis what our style guide says02:29
lifelessOTOH the odds of running with -O are < 0.02:29
StevenKlifeless: What time is your flight?02:29
lifeless151002:30
pooliei'm guessing he's in the lounge02:30
lifelessdon't ask when I started work this morning :)02:30
StevenKpoolie: Given the airnz.co.nz hostname ...02:30
timrcI have a package waiting to build on staging in 59 seconds for about 4 hours02:30
lifelessare there live builders for it ?02:31
pooliecan anyone tell me off hand if address.person = None or person.account = None is likely to happen?02:31
wgrantaddress.person = None is impossible02:31
lifelessahh :)02:31
wgrantperson.account = None is likely02:31
lifelessthis is a special area of hell reserved for conflated services02:31
lifelesswhich we're trying to untangle02:31
wgranttimrc: staging doesn't do builds02:32
lifelesspoolie: a valid person has an account02:32
StevenKNo Soyuz services on staging at all, in fact.02:32
lifelesspoolie: (which may not help you)02:32
wgrantStevenK: buildd-manager runs, for TTBJs02:32
StevenKwallyworld: css-selector should be what?02:32
pooliethe question is should i add tests for getting mail from an address corresponding to a person with no account02:32
timrc$?@!02:32
timrck02:32
poolieat the moment it will just basically reject it but it's not tested02:32
StevenKwallyworld: You've got span in there02:33
pooliewell02:33
wallyworldStevenK: should be what you need to capture clicks from the nodes you want02:33
poolieif it's not tested, perhaps i should say the behaviour is undefined :)02:33
lifelesspoolie: that will happen in real life, so I'd say yes.02:33
lifelessauntil we fix up the cruft02:33
StevenKwallyworld: Right, but I've not used them before, so how do I match the radio buttons?02:33
poolieso test for person with no account, not for an address with no person?02:33
pooliek02:33
wgrantpoolie: EmailAddress.person is NOT NULL since January02:34
wallyworldStevenK: something like "input[name='field.foo']"02:34
poolieah ok02:34
wgrantYou may still see some code that assumes it can be null. I didn't catch everything.02:34
pooliethe interface still says required=False02:34
wgrantLike that.02:34
poolieshall i change it in this branch?02:34
wgrantPlease.02:34
wgrantThere were about 10 branches in that series; there was a *lot* to change.;02:34
StevenKrequired=True may have some test fallout02:34
poolieor maybe separately?02:35
wallyworldStevenK: should be no need to further qualify with type=radio02:35
wallyworldpoolie: i'd do it separately given the unknown test fallout02:36
wallyworldand since it's your last day and ideally we want this to land first time :-)02:36
StevenKpoolie: I'm a little annoyed at this UI branch I'm working on, I'm happy to cowboy a branch that changes it and toss it at ec202:37
poolieindeed02:37
pooliek02:37
wallyworldStevenK: let me know if you want me to look at anything with your ui stuff02:38
StevenKpoolie: This is in EmailAddress ?02:38
poolieyes IEmailAddress.person (required=False)02:39
pooliein my branch02:39
poolieit may just be out of date02:39
StevenKwgrant said he missed it accidently02:39
wgrantmm02:42
wgrantI'd be realised surprised if there was test fallout02:42
wgrantBut maybe02:42
lifelesswell the DB requires it02:47
lifelessso the only fallout could be of the form construct; assign; flush02:47
wgrantExactly02:47
wgrantAnd I doubt anything uses the interface02:47
wgrantWe don't use formlib on EmailAddresses02:47
wgrantuhm02:49
wgrantr15086 is odd02:49
wgrantI think someone mistakenly commented out bouncer.start()02:49
lifelesswahuh02:49
wgrantThe revision was an attempt to make the test more reliable02:50
wgrantBut I think it made it always fail instead :)02:50
* wgrant fixes02:51
wgrantThat works a bit better02:53
pooliewallyworld, ok, i added a test for a person with no account02:56
* wallyworld looks02:56
StevenKwallyworld: Ah ha, it doesn't work because Y.one('#radio-button-widget'); is null02:59
wallyworldStevenK: sounds plausible depending on how the ui is set up03:00
wgrantI hope this is a YUI test :)03:00
StevenKwallyworld: # is for class?03:01
wallyworldStevenK: # is for id03:01
wallyworld. is for class03:01
wallyworldpoolie: looks pretty good i think. 2 nitpics. imports need to be alphabetical, person = self.factory.makePerson(...) - person is not used so you don't need to make the assignment03:04
pooliek03:04
wallyworldthanks for making all the requested changes03:05
pooliewhich import is wrong?03:07
wallyworld+from lp.services.mail.incoming import (03:08
wallyworld+ InactiveAccount,03:08
wallyworld+ authenticateEmail,03:08
wallyworld+ )03:08
poolieah, case-insensitive sort is required?03:08
wallyworldi thought so but now i am doubting myself03:09
lifelessthere is a tool that will do it03:09
lifelessand yes, case insensitive03:09
wgrantutilities/format-imports03:09
wgrantAlso utilities/format-new-and-modified-imports03:09
lifelessthey should be in lp-dev-utils03:09
pooliewhich machine runs incoming.py again?03:15
wgrantloganberry03:15
pooliewallyworld, ok, i'll send it up03:28
wallyworldpoolie: i was just about to mark it approved in anticipation of the last few changes being made :-)03:28
wallyworldpoolie: i've approved it. did you want me to land it so that i can follow up if there's any issues?03:29
pooliethat'd be good, thanks!03:29
pooliei have one more mail thing in progress so i'll go on to that03:29
pooliegl03:29
wallyworldnp. i'll wait for your changes to be pushed and then throw it at ec203:30
poolieok, pushed03:31
* wallyworld lands03:33
poolieGetting distribution for 'storm==0.19.0.99-lpwithnodatetime-r406'.05:20
poolieAn error occurred when trying to install storm 0.19.0.99-lpwithnodatetime-r406. Look above this message for any errors that were output by easy_install.05:20
pooliedoes this mean something?05:20
wgrantpoolie: Is your download-cache up to date?05:21
pooliei did just update it..05:22
pooliei have an r406 tarball05:22
poolieah it's ok05:22
pooliei made a new chroot and it didn't have ccache, and my $CC points to it05:22
wgrantAh05:23
wgrantThat would do it indeed.05:23
wallyworldwgrant: just to double check - i got 3 ec2 runs rejected because of a pgbouncer error - that's fixed right?05:28
wgrantwallyworld: Yup05:30
wallyworldthanks, will lp-land the fuckers05:30
wgrantWhy does each test in test_bugtask_search execute more than 400 queries :/05:30
* StevenK stabs TAL, and then twists the knife.05:35
pooliewallyworld, my attempted landings of that branch get errors connecting to postfix06:36
poolieOperationalError: could not connect to server: Connection refused06:36
poolie       Is the server running on host "localhost" (127.0.0.1) and accepting06:36
poolie       TCP/IP connections on port 52425?06:36
pooliemaybe it's just transient06:36
wgrantpoolie: There should be a single failure like that06:37
wgrantI fixed it a couple of hours ago06:37
wallyworldpoolie: there was a bad commit by someone which commented out the startup of pgbouncer06:37
wallyworldpoolie: that has been fixed now06:37
pooliei launched these a couple of hours ago06:37
poolieok06:37
pooliebut probably before your fix06:37
pooliethanks06:37
wallyworldpoolie: if that's the only error then you are good to lp-land06:37
pooliei'll leave it with you06:37
poolie23m to go :)06:38
wgrant:(06:38
wallyworldpoolie: np. what's the url? this is a different one than the mp i landed earlier?06:38
poolieit's the one you sent earlier06:39
pooliedepending when you launched, you may have already caught the fix06:39
pooliei fired off an ec2 test earlier in parallel with your reviews06:39
wallyworldoh right, i haven't got the email from ec2 yet06:39
wallyworldstill 1 hour to go before i get the failure email06:40
poolieyou can look on its web server06:41
wallyworldpoolie: sure, i was just saying out loud why i didn't realise about the failure yet :-)06:42
wallyworldwgrant: sorry, just noticed your branch, looking now06:43
wallyworldwgrant: did you know the current storm egg has the Row function?07:00
wgrantOh, does it?07:00
wgrantThat's handy.07:00
wallyworldyeah :-)07:00
wallyworldwgrant: perhaps it would be better, in searchClause() in TestBugTaskTagSearchClauses, to only call convert_storm_clause_to_string if the thing in not None and return None otherwise and then test_empty() can just assertIsNone which seems more natural and doesn't need the explanatory text07:06
wgrantwallyworld: Possibly, yeah07:06
wallyworldpoolie: goodbye and good luck07:06
pooliethanks, same to you07:06
wallyworldpoolie: hopefully see you around 11th June :-)07:06
poolieyep :)07:07
adeuringgood morning07:08
wgrantpoolie: Likewise, good luck and hopefully I'll run into you at some point!07:10
poolieyep07:11
StevenKpoolie: It's a bit sad that I'm tied up for the next two weekends. :-(07:12
poolieone more critical bugfix for the road https://code.launchpad.net/~mbp/launchpad/893612-mail-too-big/+merge/10186507:12
poolieyeah it would have been nice to see you too07:12
StevenKpoolie: But, have a great time on your travels, and have fun storming the Googleplex.07:12
pooliebut, someone else will need to land it07:12
pooliethanks07:12
* wallyworld looks at poolie's one for the road07:13
StevenKwallyworld: Right next to the poolie's one for the kerb?07:13
wallyworldlol07:13
StevenKAnd then another one for the other kerb?07:14
StevenKAnd then you still have two nature strips, footpaths, street lights ...07:14
wallyworldpoolie: with incoming size check, shouldn't there be a place where the check is not done anymore and so some code should be cut out?07:15
pooliemm good point07:16
wallyworldpoolie: i'd understand if you didn;t want to do it. i can pick it up if you like07:17
pooliei added a comment apologizing for doing it twice07:17
pooliebut we should just delete it07:17
wallyworldi think so. so long as all mail processing goes through the code path that now does the check07:18
poolieok fixed07:19
* wallyworld hit refresh and taps fingers waiting for the new diff07:19
wallyworldas the blackboard said to mr squiggle - "hurry up"07:21
poolieupside down!07:21
poolienow that would be a nice april fools hack07:22
poolieat least for aussies07:22
pooliei wonder if you can get there in css07:22
wallyworldwgrant is too young to get that reference :-)07:22
wallyworldpoolie: r=me, i will land. thank you.07:25
pooliethanks mate07:26
pooliegood night and good luck07:26
pooliesee you in a while07:26
wallyworldyes, will do07:26
=== wallyworld changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 4*10^2
wgrantwallyworld: I just get it :)07:29
=== adeuring changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: adeuring | Firefighting: - | Critical bugtasks: 4*10^2 abgeändert
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
StevenKjml: No QA? :-)09:10
StevenK:-( , rather09:10
jmlStevenK: sorry, no. I got caught up in other things.09:11
=== al-maisan is now known as almaisan-away
=== bac changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: adeuring, bac | Firefighting: - | Critical bugtasks: 4*10^2 abgeändert
bacmorning adeuring  ... much reviewing today?11:16
bacadeuring, it is the first friday we've both been here in a very long time11:17
adeuringmorning bac, not much to review today. ANd I must admit that simply forgot to add myself to the topic the last weeks...11:25
jmlbenji: I decided to take the nuclear option on ThreadsafeForwardingResult: testing it so hard that the bugs glow. See https://code.launchpad.net/~jml/testtools/tsfr-fixup/+merge/1018911:51
benjijml: interesting, looking at it now12:04
=== almaisan-away is now known as al-maisan
benjijml: the branch looks good, the comment at the top of  test_only_one_test_at_a_time is probably the single most valuable thing in the branch and would have saved me many hours, perhaps even a day of flailing12:32
jmlbenji: :)12:32
benjijml: the other test methods could really use similar descriptions of why the test is important and what it demonstrates12:32
jmlbenji: I tried to tell you that thing on IRC yesterday.12:33
jmlor in the MP or somewhere12:33
benjijml: you succeeded :)  the day of flail preceded that12:33
jmlhaving it in the code ++12:33
jmlheh, good to know12:33
jmlbenji: have just pushed some documentation and comment tweaks: r26312:46
benjiI'll take a look.12:46
jmlbenji: you might also be interested in https://code.launchpad.net/~jml/testtools/wrap-result-in-concurrent-suite/+merge/101902 and https://code.launchpad.net/~jml/testtools/tagger/+merge/10190412:46
jmlanyway, now all of that is out of my head, I will return to my irregularly programmed schedule.12:49
benjijml: is there any reason not to always tag tests run concurrently?12:49
jmlbenji: I don't know, to be honest.12:50
jmlbenji: I thought about it.12:50
benjihmm, I don't know if subclassing will work for us because we don't controll the code running subunit (it's testr)12:50
jmlbenji: well, I don't think there's a reason for testr not to always tag tests that run concurrently :)12:51
jmlbenji: the reason (to give it too grand a name) I didn't tag tests automatically is because this approach felt more like "here's a bunch of components that you can assemble at will", which is more in keeping with some internal, vague, design aesthetic I have12:52
benjijml: I suppose we could do it that way.  When do you expect these three branches to land?12:53
jmlbenji: testtools has a 24hr timeout on code reviews.12:53
benjijml: meaning that if they aren't reviewed in 24 hours they are assumed approved?12:54
jmlbenji: so, I guess some time tomorrow, unless lifeless responds with deep objections.12:54
jmlbenji: right.12:54
benjik12:54
jmlbenji: obviously we allow for post-merge reviews, and I'd certainly like to get a second opinion from lifeless before a release.12:55
benjimakes sense12:55
deryckMorning, folks.13:00
rick_hmorning13:01
jmlhmm.13:02
jmlI guess this leaves a natural opening for a subunit tool that takes multiple input streams and generates one output stream.13:02
deryckabentley, ping for standup13:32
jmlI'm getting tracebacks running webservice tests, to do with the google service13:33
jmlhttp://pastebin.ubuntu.com/927931/13:33
jmlah, maybe that's because I didn't update my /etc/hosts file13:36
jml(wow, the things you forget!)13:37
benjithe things we forget are the things we shouldn't be expected to remember <0.2 wink>13:40
=== al-maisan is now known as almaisan-away
jmlhttps://code.launchpad.net/~jml/launchpad/expose-commercial-on-create-ppa/+merge/10190713:46
jml1 line patch.13:46
jmlflacoste: hello13:46
flacostehi jml13:46
jmlflacoste: may I please have a LoC exception for https://code.launchpad.net/~jml/launchpad/expose-commercial-on-create-ppa/+merge/10190713:46
jmlflacoste: also, if you could review & land it, that'd be great too.13:46
flacostejml: i'm kind of swamped today, so i may look for the exception, but review and land will have to be delegated13:49
jmlflacoste: no worries. it's a one-line patch, if that helps.13:50
jmlabentley: you moved ec2test to lp-dev-utils, right? how do I run the tests there?13:53
abentleyjml: I was using nosetests.13:53
jmlabentley: any PYTHONPATH mangling required? (it seems to depend on 'lp'?)13:56
abentleyjml, no.  I run "nosetests ec2test" and it seems happy.  I think there are two failing tests.13:57
jmlabentley: oh, there are failing tests in trunk? What failures do you  get?13:58
abentleyjml: https://pastebin.canonical.com/64277/13:58
jmlabentley: cool. those are the ones I get. thanks.13:59
abentleyjml: IIRC, fakemethod is also provided by bzr-pqm.13:59
jmlabentley: ta.14:00
jmlabentley: different API, it seems.14:18
jmlFakeMethod in bzr-pqm (at least the version on the system that comes via rocketfuel-setup) doesn't have call_count.14:19
abentleyjml: doh.  I guess we should have been more aggressive about switching this code to bzr-pqm originally.14:19
jmlabentley: well this particular thing is just about using a home-rolled mocking library, right?14:20
abentleyjml: Yes.14:20
* jml is tempted to re-implement14:22
jmlbrb14:22
jmlabentley: https://code.launchpad.net/~jml/lp-dev-utils/fix-tests/+merge/10191614:40
abentleyjml: I said earlier that PYTHONPATH does not need to be set.  What makes you say it does?14:41
jmlabentley: because setting it makes the test pass.14:41
abentleyjml: Which tests does it make pass?14:41
jmlabentley: ec2test.tests.test_remote.TestDaemonizationInteraction.test_daemonization14:42
jmlabentley: the error indicates that it can't find ec2test.remote14:42
jmlabentley: but of course, ec2test.remote exists and is perfectly easy to find, if you have PYTHONPATH set so that the 'ec2test' package is discoverable.14:42
abentleyjml: When I want subprocesses to have the same pythonpath as the current process, I usually set it in the code that invokes the subprocess.14:46
jmlabentley: well, not when you're hacking on Launchpad you don't. You use ./bin/py.14:47
abentleyjml: I can use bin/py when I'm hacking on Launchpad.14:47
jmlabentley: so you suggest converting turning sys.path into an env var and passing that through in the code that spawns the subprocess?14:48
abentleyjml: Yes.14:48
jmlabentley: got a shell quoting function handy?14:49
abentleyjml: I don't understand why I would need one.  Are you saying that python shell-expands the contents of PYTHONPATH?14:50
rick_hderyck: ping, do you have a sec? I'm not seeing tests for any of these cases and I'm feeling like I must be missing something14:50
rick_hI'm wearing grep out I think14:50
abentleyjml: Testing shows python does not shell-expand PYTHONPATH.  It does not expand $PETER in this example: http://pastebin.ubuntu.com/928037/14:52
rick_hoh man, nvm...having a monday for a friday. limiting to .py files won't find a bunch of tests :/14:53
rick_hderyck: ^14:53
jmlabentley: what if sys.path has paths that have a space or a colon.14:56
jmlspace seems to work14:58
cjwatsonshell quoting when spawning subprocesses is a really bad idea14:58
cjwatsonuse the functions that don't require shell quoting instead ...14:58
abentleycjwatson: agreed.14:58
jmlOEK14:59
jmlOK14:59
cjwatsone.g. subprocess.Popen and friends let you pass env=, so you copy os.environ and replace the keys you want directly14:59
jmlPretend I didn't say shell quoting. How do you safely turn sys.path into a value for PYTHONPATH that works regardless of what crazy paths are in sys.path?14:59
abentleycjwatson: Sure.14:59
deryckrick_h, sorry, was on call.15:01
deryckrick_h, I'm just about to step in another call.  can we chat after that?15:02
rick_hderyck: I think I'm ok now. Sorry for the ping15:02
abentleyjml: I don't know how to escape colons in a PATH.  Looking into it.15:02
deryckrick_h, dude, no worries.  always ping when in doubt.  sorry it took me so long to reply.15:02
cjwatsonAFAICS there's no way to wedge an entry containing os.pathsep into PYTHONPATH.15:02
cjwatsonThe good news is that, since it can't have got into sys.path via PYTHONPATH, the only way such a directory would be on sys.path is if you put it there yourself.15:03
jmlfsvo 'you'15:08
abentleycjwatson: Exception: https://pastebin.canonical.com/64293/15:08
jelmeris it still impossible to rename teams with PPAs that have been deleted, but were published in the past?15:09
jmlanyway, I've pushed up an os.pathsep.join(sys.path) version and updated the docs.15:10
abentleyjml: I think you can also update testr.conf15:11
jmlabentley: I tried. It fails when cwd isn't in PYTHONPATH15:12
jmlabentley: I can't speak for nosetests, but I'm pretty sure trial adds '.' to the sys.path as a convenience.15:13
abentleyjml: I saw 123 tests.  Are you seeing only 84?15:13
jmlabentley: trial shows 8815:13
* jml runs w/ nosetests15:14
jmlabentley: 125 w/ nosetests15:15
jmlabentley: I think that's because nosetests incorrectly discovers the TestRequest tests (from test_remote) inside remote_daemonization_test.py15:17
jmlabentley: which imports TestRequest in order to get at a helper function.15:18
abentleyjml: Okay, cool.  So long as we know why it happens.15:18
jmlabentley: it's a little fiddly to extract, because the helper relies on bzrlib.TestCase*'s make_branch_and_tree15:19
jmlI really should have pushed harder to get that stuff extracted out of the TestCase inheritance hierarchy.15:19
jmlbrb15:21
=== salgado is now known as salgado-lunch
abentleyjml: r=me15:28
jmlabentley: thanks. How do I land it?15:28
abentleyjml: We just push to that branch.15:28
jml\o/15:29
jmlabentley: I don't have commit access to that branch.15:29
abentleyjml: I will do it, then.15:29
jmlabentley: thanks.15:29
abentleyjml: I am going to add .testrepository to the list of ignored files.15:31
jmlabentley: good call. I think I have it in my global ignore15:31
jmloh that reminds me15:32
jmlbac: thanks for the review. can you please submit my branch to ec2 test?15:32
abentleyjml: landed.15:34
jmlabentley: thanks.15:35
rick_h36287715:40
abentleyrick_h: 3256815:41
rick_habentley: bah, my secret it out15:42
abentleyadeuring: chat?15:45
adeuringabentley: sure. mumble?15:45
abentleyadeuring: sure.15:46
=== matsubara is now known as matsubara-lunch
rick_hderyck: sanity check time, I'm not seeing the sendmail.simple_sendmail work through the IMailer and so stub.test_emails no longer works.15:55
rick_hderyck: in checking out how the sendmail it seems to be straight monkey patching/revert? http://paste.mitechie.com/show/616/15:55
rick_hderyck: so I should be doing this in the doctest for checking the notification emails? or am I not seeing the magic pretty way to do it like stub.test_emails?15:56
* deryck is readying back, thinking.....15:59
deryckrick_h, stub.test_emails is how we normally inspect mail in doctest.  and that doesn't work when calling sendmail in process.  I get that problem right?16:02
rick_hderyck: right, sendmail.simple_sendmail doesn't hit the stub.test_mails bit16:03
rick_hderyck: and it looks like it's because it doesn't use/implement the IMailer interface that stub is working against16:04
deryckrick_h, right.  it's just a function that calls sendmail directly, IIRC.16:04
rick_hderyck: basically updating hte doctest to monkey patch and restore sendmail.simple_sendmail is ugly as can be and tossing out a last ditch effort I'm missing something16:04
rick_hderyck: right, looks like it16:05
deryckrick_h, yeah, 1) I wouldn't monkey patch in doctest. I'd create a doctest helper if needed, and 2) we have to have something for this already, let me look more....16:05
rick_hderyck: rgr on 1, figured I'd need to do that since I'm updating several doctests to get this tested for each notification16:06
deryckrick_h, so I really thought when someone is subscribed to a bug, that we send them a notification in process in this same way....16:15
deryckrick_h, kind of a wart I'm recalling that we sent mail in process.16:15
deryckrick_h, and the testing is the same it seems. see: lib/lp/bugs/stories/bugs/bug-add-subscriber.txt16:16
deryckrick_h, so either, I'm wrong and we don't do it in process, or you can look there and work out what is different about that test that it works.16:16
rick_hderyck: ok, will look there. Probably using a different method of sending the emails than the simple_sendmail16:17
rick_hderyck: thanks16:17
deryckrick_h, so the subscription stuff does use the event system to trigger sending mail, but it still just wraps a callback that calls sendmail directly, which is at heart the same thing you're doing....16:22
deryckrick_h, see lp.bugs.subscribers.bug.send_bug_details_to_new_bug_subscribers to see how the mail is sent....16:23
deryckrick_h, and the stub mailer works fine there.16:23
rick_hderyck: looking16:23
deryckrick_h, should we high bandwidth this in a hangout?16:29
rick_hderyck: sorry, trying to pdb to see if I'm actually hitting the email code like I think I am and so is stub emails blank because simple_sendmail doesn't hit it, or my code isn't working like I think it should16:29
rick_hexcept in doctest having a hard time seeing if I'm hitting pdb because of hte block of code I think I am16:30
rick_hpdb doensn't show me the line num of the doctest in the path so not sure if it's a test before/after the one I'm trying to see16:30
deryckrick_h, yeah, that's why I was thinking hangout.... we could step though the paths together.16:30
rick_hderyck: sorry, long way of saying give me a few min16:30
rick_hderyck: k, hangout is ok then16:31
deryckrick_h, yeah, let's do, just to possibly save you some frustration.16:31
rick_hderyck: ok, we can try :)16:31
=== adeuring changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: bac | Firefighting: - | Critical bugtasks: 4*10^2
rick_hok, if in doubt, transaction.commit!16:55
=== matsubara-lunch is now known as matsubara
=== salgado-lunch is now known as salgado
bachi abentley , i'm finding when i run out tests within an lxc that many (perhaps all) of the celery tests fail with a timeout.  can you give me some advice on tracking this down?17:54
bac s/out/our17:54
abentleybac: with you in a minute.17:54
abentleybac: Okay.17:55
abentleybac: So, the timeout is emitted from a line that says something like responses[0].wait ?17:56
bachttp://paste.ubuntu.com/927046/17:56
bacabentley, yeppers17:56
bacabentley, ignore the 'whoami' errors, those have been resolved17:57
baconly interested in the timeouts17:57
abentleybac: So this means that rabbitmq did not send a message saying the job was processed in 30 seconds.17:58
abentleybac: possible causes: celeryd did not start correctly17:58
abentleybac: celeryd was not listening to the correct rabbitmq instance17:58
abentleybac: Not sure what else.17:59
bacabentley, should celeryd be running outside of the tests?17:59
abentleybac: No, the tests that need it will start it.  lp.services.job.tests.celeryd is a context manager that starts and stops celeryd.18:00
bacok18:00
abentleybac: does this happen if you restrict the tests to just ones using celery (e.g. "-t Celery") ?18:01
bacabentley, let me try18:03
abentleybac: I am guessing that if all the celery tests run on process, they work, but if they run on different processes they don't.18:04
abentleys/run on process/run on one process/18:04
abentleybac: rebooting.  Back in a sec.18:05
abentleybac: My best guess is that celeryd will be using the RabbitMQ config associated with another process.18:09
abentleybac: To test this, we could print celeryd's Popen.stderr.  That will indicate the broker config.  The Popen object is yielded by lp.services.job.tests.celeryd.18:11
bacok18:11
abentleybac: in some tests, it's referred to as "proc".18:11
bacabentley: Total: 12 tests, 2 failures, 5 errors in 5 minutes 25.011 seconds.18:12
abentleybac: Okay, cool.  We can reproduce it, then.18:12
abentleybac: lp.code.model.tests.test_branch.TestBranchJobViaCelery.test_branchChanged_via_celery show a "Function not implemented" OS error.18:15
abentleybac: That may be the root cause of all of this.18:15
bacabentley, where do you see that FNI error?18:17
abentleybac: line 279 of your paste.18:18
abentleybac: reconstructed: http://pastebin.ubuntu.com/928292/18:18
bacabentley, hey, that makes sense as there is a problem with lxc and semaphores18:19
abentleybac: yay?18:19
bacabentley, cool, thanks for the pointer18:20
abentleybac: np.18:20
abentleybac: if celeryd is incompatible with lxc, I guess the options are 1. fix lxc, 2. fix celeryd, 3. run celery tests outside lxc.18:23
abentley4. run celeryd outside lxc, run tests that use it inside lxc.18:24
SpamapSHey we're getting ready to bump the 'charms' distribution from oneiric->precise .. which means a LOSA running the script that does that. I forget who I need to ping to get that done.18:44
SpamapSflacoste: any ideas? ^^18:44
james_wSpamapS, copying branches, or just setting the precise as the default release?18:45
flacostejames_w: he probably wants to copy branches also18:45
flacosteor rebase them18:45
james_wSpamapS, either way saying "webops ping" will get you a friendly webops (neé LOSA) to help when it is time18:46
SpamapSI want to do both18:46
james_w(sorry webops)18:46
SpamapSwe need to shift dev focus to precise, and copy all the oneiric branches to precise.18:47
SpamapSso they'll know the script to do it?18:47
SpamapSalso will the mass copy process just ignore anything that has already diverged in precise?18:47
SpamapSI asssume yes18:47
james_wSpamapS, https://wiki.canonical.com/InformationInfrastructure/OSA/LPHowTo/BranchUbuntu?highlight=%28branch%29|%28distro%2918:54
james_wthat's the script we use for Ubuntu18:54
james_wI don't know how it handles existing branches though18:54
james_wit looks like it might not handle it all that well18:56
bacabentley, i just saw this commit message of yours and had to laugh:  "There's no j in Launchpad."20:10
abentleybac: :-)20:10
=== gmb changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 4*10^2
=== matsubara is now known as matsubara-afk
=== lan3y is now known as Laney
=== Laney is now known as Guest91745
=== Guest91745 is now known as Laney

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!