/srv/irclogs.ubuntu.com/2010/05/26/#launchpad-reviews.txt

gary_postermwhudson: ping?01:02
mwhudsongary_poster: hi01:02
gary_posterhey mwhudson .  mars asked me to review a branch in lieu of a domain expert.  Do you feel domain expert-y about process groups and various signal processing?  If not, I'm happy to crack open my UNIX programming tome and pretend to be a domain expert.  Branch is https://code.edge.launchpad.net/~mars/launchpad/fix-test_on_merge-578886/+merge/25981 fwiw.01:05
mwhudsongary_poster: maybe a little bit01:05
gary_postermwhudson: :-)01:05
mwhudson(also, i'm currently using APUE as a monitor stand :)01:06
* mwhudson looks at the branch01:06
gary_posterLOL01:06
gary_posterthank you very much for looking at it mwhudson!  If you don't get around to it, no worries.  I'll pick it up tomorrow.01:07
=== Ursinha is now known as Ursinha-afk
mwhudsongary_poster: i reviewed the branch02:27
marsmwhudson, I used the Windows 2000 System Administrator's guide at my last job.  two books, 4 inches thick - perfect for two cubicle monitor stands.02:56
marsmwhudson, thanks for the review02:56
mwhudsonmars: i use two books, the other one is "xUnit test patterns"02:57
marsthat's on my to-read list02:58
marsreading Release It! right now02:58
mwhudsonmars: if i'd ever owned any windows system administrator's manuals, i'd have gotten rid of them when i moved to nz :)02:58
mwhudson(as i did for /most/ of my books)02:58
marsmwhudson, have a sec for a question about that review?02:59
marsjust want to be clear on the process group leader problem you mentioned03:00
mwhudsonmars: sure03:01
marsmwhudson, ok, so you are worried about line 58, "assert original_process_group != os.getpid()", right?03:02
mwhudsonmars: yes03:02
marsok03:02
mwhudsonmars: in your branch if you execute ./test_on_merge.py in a shell, it will build the schema, then fail on that assert03:02
marsmwhudson, so I don't understand the usePTY=True bit.  What is that setting, and what would it do?03:03
mwhudsonmars: it's a buildbot thing03:03
mwhudsonif you use it buildbot runs your subprocess with a pseudo tty attached03:03
mwhudsonand, thanks to a twisted api oddity, in a new session (in the setsid() sense of session)03:04
mwhudsonwhich implies creating a process group03:04
marswow, that's arcane03:04
mwhudsonyeah, it is a bit03:04
marshow did you find that out?03:04
mwhudsongoogle03:04
mwhudsonspecifically http://permalink.gmane.org/gmane.comp.python.buildbot.devel/568003:05
marsI think I meant "what prompted you to discover this particular arcane bit of knowledge" :)03:05
mwhudsonmars: review paranoia ... "i wonder if buildbot starts processes in their own process group"03:06
mars"Also, there's the obscure case where buildbot runs a process that processes that fiddle with their process group, and that would this feature"03:06
mwhudsonmars: i thought there was a chance it would do it always03:07
marswell, guess what make -> test_on_merge.py -> bin/test were doing before!03:07
mwhudsonoh right03:07
mwhudsonyes03:07
mwhudsoni think the shell use case is more compelling tbh03:07
marssorry?03:07
mwhudsoni think not being able to type ./test_on_merge.py in a shell would be bad03:08
marsI can't say for sure on that one.  How would the python paths get set up if you did not use bin/py to start it?03:08
mars_pythonpath is supposed to be a bridge [hack]03:09
mwhudsonmars: well, ./bin/py test_on_merge.py fails too03:09
marsoh.  Eww.03:09
mwhudsonmars: the reexec could be done with bin/py i guess03:09
mwhudsoni guess you could fork() and have the parent just waitpid on the child, that would have the same effect i guess03:10
marsmwhudson, so what would the re-exec do?03:10
marsyes, fork() would work nicely too03:11
mwhudsonmars: get us into a situation where we're not the process group leader03:11
marsgives you the new PID you need for the process group swapping03:11
mwhudsonperhaps fork would be cleaner03:12
mwhudson(man unix is crazy)03:12
marswindows is not fun either.  Unix is just layers from different eras (System V, BSD, X, Free Desktop).  Windows is a new revolution every 5 years that obsoletes everything you learned before.03:15
marsat least, that has been my experience with writing application software03:16
marsmwhudson, interesting idea, but I think the fork() may be more understandable.  I find that spawnl() line suspicious.  What if you used bin/py?  Then you don't want the "-S" argument.03:18
mwhudsoni don't know that there is much excuse for job control to have invaded the unix kernel as much as it did03:19
mwhudsonmars: i think fork() would be preferable too, it hadn't occurred to me when i wrote my version03:20
marsI wondered why I have to do this at all.  Python has no way to pull the process tree without running 'ps' and parsing the output.  Otherwise I would have just walked and killed the tree myself :/03:20
mwhudsonmars: although, sys.executable will never be ./bin/py so that particular objection isn't actually valid03:21
mwhudsonmars: i think that kind of thing is one of those horrible unportable unix things isn't it?03:21
mwhudsonthough these days just supporting linux and os x would be fine03:22
marsmwhudson, so you run it with bin/py, then it re-execs itself with sys.executable without your permission... that could be annoying.03:22
marsthat is another reason to prefer fork()03:23
marsmwhudson, is there anything that has to be done when executing the fork() beyond... os.fork(), check if child?03:24
mwhudsonmars: bin/py ends by execing with its sys.executable03:24
marsah03:24
mwhudsonbut this is all silly, fork() is better03:24
mwhudsonmars: no, i don't think so, pid = os.fork(); if pid != 0: os.waitpid(os.P_WAIT, pid)03:25
mwhudsoni think?03:25
marsno messing with TTYs or streams or whatever?  Just remembering the hassle to correctly fork a daemon...03:25
marsmaybe File descriptors - daemonizing requires you to mess with file descriptors03:26
mwhudsoni think because the parent process isn't doing anything we're ok03:27
mwhudsonit would be worth checking that control-c still stops the test run03:27
mwhudson(but i think it will, that much worked with the spawnl version)03:28
marshmm, that is something else I did not check03:28
marshow EINTR is handled in my script03:28
mwhudsoni guess we could close stdin in the parent, but if ./test_on_merge tries to read from stdin the situation is kinda messed up anyway03:29
mars:D03:29
marsmwhudson, so should it fork always, just for simplicity's sake?03:31
marsI like simplicity here03:31
mwhudsonyes that makes sense03:31
marsactually that makes is much simpler03:31
marsno more shenanigans then03:31
marsjust os.fork(), os.setpgrp()03:32
marsoh, wait03:32
marsnope03:32
marsstill need the shenanigans03:32
marsmwhudson, the problem before was that bin/test would lead the process group.  test_on_merge.py would kill the entire process group of it's child process, and that worked up until xvfb got stuck in between03:33
marsmwhudson, xvfb shares test_on_merge's process group, so os.killpg(9) ....03:33
marswell, we'll see what looks nicer.  I could rewrite the code either way, with the forked child or the main thread doing the group cleanup.03:37
marsmwhudson, thanks for the review.  I'll write some code.03:37
mwhudsonmars: i don't know _why_ control-c ing test_on_merge works in my branch, only that it does :)03:40
marstry using a test harness that ignores SIGTERM, then you might see the problem03:41
mwhudsonmars: backtracking a bit,03:41
mwhudson<mars> just os.fork(), os.setpgrp()03:41
mwhudsonis precisely not what we want: it's what the shell did03:41
mwhudsonand we don03:41
mwhudson't want to follow the fork with a setpgrp(), that's the point03:42
marsbut wasn't the point of forking to get a new PID, so you could do the process-group swapping trick and use that new PID for the child process's process group?03:44
marss/"child process's group"/xvfb-run prcoess group/03:44
mwhudsonmars: the process that invokes xvfb-run needs to not be the process group leader, so it can switch to being process group leader and back again03:46
mwhudsoni think?03:46
marsmwhudson, correct.03:47
marsmwhudson, well, technically, the process that invokes xvfb-run needs to switch it's process group to something safe, start xvfb-run, then switch back.  Since the only convention for creating a new process group is to use our own PID, then our own PID must not already be in use (in use because we are already the group leader)03:53
mwhudsonmars: right03:53
thumpermars, mwhudson: can one of you approve this one ? https://code.edge.launchpad.net/~thumper/launchpad/send-mail-job-logging/+merge/2593904:05
marsthumper, doing PDR, maybe mwhudson can take it?04:05
marsit is already really late here04:06
mwhudsonthumper: done04:09
thumperta04:09
stubhttps://code.edge.launchpad.net/~stub/launchpad/page-performance-report/+merge/26017 <- should be a quick one08:35
noodles775Hi stub, I'm about to test my (somewhat large) db-patch on dogfood, but just had a question about contingency for the patch if you've time to comment: https://code.edge.launchpad.net/~michael.nelson/launchpad/db-changes-build-generalisation-new/+merge/2559409:56
stubnoodles775: Your testing on dogfood so we don't need contingency patches.10:00
noodles775stub: well, we'd like to get df back to its normal state afterwards (without having to re-import the whole db), but I was wondering more whether for production there is any way back.10:02
stubNot really - once it is in production, the old data becomes out of date.10:02
stubAnd it won't be there anyway, as the table will be dropped by the upgrade procedure :)10:03
noodles775OK, the last point was the bit I was after (or whether it's worth having a patch that will re-create the old table from the new).10:03
=== noodles775 changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [stub, noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== jtv changed the topic of #launchpad-reviews to: On Call: jtv || reviewing: - || queue: [stub, noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== jtv changed the topic of #launchpad-reviews to: On Call: jtv || reviewing: stub || queue: [noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
jtvstub: might as well drop the "set the pageid in the WSGI environment" comment to the request.setInWSGIEnvironment('launchpad.pageid', pageid) comment.  Bit redundant.  :)10:33
stubk10:34
jtvstub: And at the very end of the diff, where you parse a '-' record, I'd extract a function so you don't obscure the elif block.  This is pretty close to the code structure that broke the worldwide AT&T network in 1992.  :-)10:40
jtv(That was a "break" that used to be in a loop suddenly breaking out of a "switch" instead—in this code the equivalent is a "continue" in an "elif" sequence)10:42
stubk. I can extract it to a local function so I can still access the same scope.10:42
jtvYes, require_args could be a bit painful.  Frankly I don't see the value of making it local.10:43
stubI think the new version is less readable10:47
stubI can get rid of the continue if you don't like it using two if's instead of one (if record_type == '-' and len(args) == 1 etc.)10:48
stubThat seems to work and is clearer anyway10:50
stubAnd the extension record parsing breaks out nicer too10:54
stubOh poo... mixed it up with uncommitted changes10:58
jtvstub: sorry, distractions... back in a bit10:58
jtvstub: whatever works...  though I do feel that break/continue should never be separated from the loop primitive by anything other than a surrounding "if" and possibly a preceding block of "if foo: break/continue" clauses.  Anything beyond that and you're probably simulating a return from a smaller function.11:05
jtvThe nice thing about "return" is that all flows of control come back together so unambiguously.11:06
stubPushing new version now. I think this meets all your criteria11:06
jtv diff still updating...11:08
stubjtv: Done11:09
jtvstub: welcome back... looks like we both got cut off despite different providers.11:32
jtvstub: I was just asking about tests.11:32
stubThere aren't any11:33
jtvYes, that part was clear to me.  :)11:33
stubRationalization is that we don't know what the report looks like yet11:33
jtvThat'd make things harder, yes.  Would it be possible at least to feed a few bits of text into the parser to illustrate bits and pieces, and make sure the parser doesn't just bomb out completely?11:35
jtvBeyond that, we don't want to chase after performance problems that are reporting artifacts, like the weather networks have been dropping the occasional minus from temperatures.  :-)11:36
* jtv is over-using smileys to hide a mean mood.11:37
stubMaybe tomorrow. That branch went up 'as is' as something more urgent came up. Looks simpler than I thought so I might get that finished today though.11:38
jtvCool.  I'll make a note.11:38
=== jtv changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== gmb changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [noodles775, gmb(http://is.gd/cpL9M)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== mrevell is now known as mrevell-lunch
=== matsubara-afk is now known as matsubara
=== salgado-afk is now known as salgado
danilosadiroiban, btw, we'll have to change property names on bug 525371 at least13:24
mupBug #525371: API for reading POTemplates attributes <api> <Launchpad Translations:In Progress by adiroiban> <https://launchpad.net/bugs/525371>13:24
=== gmb changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
adiroibandanilos: what are the new names ? :)13:25
danilosadiroiban, i.e. things like "all_potemplates" should be "translation_templates", and "all_pofiles" should be "translation_files"13:25
danilosadiroiban, "potemplate" name is a "gettextism" and we are gradually getting rid of those13:25
adiroibandanilos: ok. I was using the other properties like „all_milestones”13:25
adiroibanas guidelines for naming13:25
danilosadiroiban, not at all :) the problem is that I haven't had enough time to properly consider all this13:26
adiroibanok13:26
danilosadiroiban, you are coding too fast :P13:26
adiroibanthen „all_translation_templates” ?13:26
danilosadiroiban, no, not "all"13:26
adiroibanok13:26
danilosadiroiban, what I don't like either is that we are getting a mixture of unclear interfaces that our objects implement, and that's something we should fix13:27
danilosadiroiban, it's not something that can be done without a full picture of where we are going, so I have to pause a bit and reconsider what we have today and what we want to have13:28
adiroibandanilos: ok.13:28
adiroibandanilos: then I will stop the work on the API and will wait further orders13:29
danilosadiroiban, no, that's ok, we should be able to push this one forward, and that will give us a better idea of where we want to go13:30
adiroibandanilos: since I am new to Rosetta developement and I new little about your future plans13:30
adiroibanit is hard for me to go allong and implement exactly what you want13:30
danilosadiroiban, not to worry :)13:30
adiroibandanilos: so what do you suggest I should do next ? (beside getting rid of gettext like names )13:31
danilosadiroiban, it's not your fault at all: I did a review of your branch, but I did it badly... for instance, why do we need both "getTranslationTemplates" and "all_translation_templates"?13:31
danilosadiroiban, we are simply introducing a lot more inconsistency, and we should not let that to happen; so, we should go over the interfaces one by one13:32
adiroibandanilos: getTranslationsTemplates was the old interface attribute13:32
adiroibandanilos: but lazr.restful can not export a method as an attribute13:32
danilosadiroiban, right, no reason to not drop it, I guess? if it's not really used anywhere13:32
adiroibandanilos: this is why I had to add a new property to export that method13:32
danilosadiroiban, right, but that taints the interface unnecessarily: if it can be a property, it should be a property13:33
danilosadiroiban, if it can't be a property it should be a method (both exported and internal)13:33
danilosadiroiban, some reasons behind some of these interfaces are performance, and they are sometimes harder to grasp13:34
adiroibandanilos: ok. then I will have to file a bug for each such property13:34
danilosadiroiban, well, why do you believe this shouldn't be exported as a method?13:34
adiroibandanilos: for example IRosettaStats is full of messageCount(self, langauge=None)13:34
danilosadiroiban, IRosettaStats needs serious refactoring13:35
danilosadiroiban, it's totally, utter, crack13:35
adiroibandanilos: and in most cases the that method just returns the cached data from the table13:35
danilosadiroiban, which is exactly what we want most of the time13:35
danilosadiroiban, but, the problem with IRosettaStats is that it represents two different interfaces (language=None? wtf?)13:36
danilosadiroiban, the names of the properties are totally outdated on it as well13:36
danilosadiroiban, but anyway, I don't want to dwell on IRosettaStats in particular13:36
danilosadiroiban, it's an interface that needs to go out, basically13:36
adiroibandanilos: yes, IRosettaStats is a mess and that language=None is only implemened by IPOTemplate in a very strange way13:37
danilosadiroiban, that strange way is called "broken" way :)13:37
adiroibandanilos: the idea is that by exporting a data as an API attribute, we can get all attribute in one go13:37
danilosadiroiban, not sure what you mean? you can't do that with a method?13:38
adiroibandanilos: otherwise, it will require many API method calls that will just return cached data... and that data is already available (no need for intense queries)13:38
danilosadiroiban, API should *always* return cached data13:38
adiroibandanilos: for API attributes, or for both data returned by attributes and methods13:39
danilosadiroiban, for anything that's expensive to calculate, if we have cached data, that's what we should return13:40
adiroibandanilos: ah. but if we don't have cached data ? should we generate a  cache for the API, or generate the data on the fly ?13:40
danilosadiroiban, if we don't have cached data, we should calculate it if it's cheap; if it's not cheap, we should think twice before exporting it13:41
adiroibandanilos: ok :) back to IPOTemplate13:41
danilosadiroiban, right :)13:42
danilosadiroiban, so, calculating a list of templates is a relatively cheap operation on the database side; it's probably not that cheap on storm side13:42
adiroibandanilos: so you suggest that instead of calling „ubuntu/hoary/translation_templates” we should implement it as a method and call „ubuntu/hoary?ws.op=getAllTemplates” ?13:42
danilosadiroiban, it does make more sense, doesn't it? i.e. you'd be able to change the parent object in the script and call the same method13:43
=== mrevell-lunch is now known as mrevell
danilosadiroiban, sure, the same holds for the property, but there's no reason to introduce two things which basically do the same thing13:43
adiroibandanilos: you can change the parrent and call the same attribute13:44
danilosadiroiban, the important thing that I don't know an answer to is how does API support slicing13:44
=== bigjools changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [noodles775, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
adiroibandanilos: from what I noticed in the other exported API data, if a full list is exported using the API, then it is exported as an attribute13:47
adiroibandanilos: if you want to export a subset, then a method is used13:47
danilosadiroiban, the examples on https://dev.launchpad.net/API/ImplementingAPIs for collections are pretty good13:47
danilosadiroiban, not really, the example in the above page talks about active_members which is a subset of all members, and that's a property13:48
danilosadiroiban, I think that "full" vs "subset" isn't, and shouldn't be a criterion to decide upon13:48
danilosadiroiban, it should be the sanity of API13:48
adiroibandanilos: like ubuntu/hoary/milestone will return a list of all milestones, while ubuntu/hoary?ws.op=getMilestiones&name=SEARCH_TEXT will return the milestones mathching that name13:49
danilosadiroiban, so, my take is: if what we usually need is all translation_templates, then that should be exported as "translation_templates"; but if what we usually need is current translation templates, that should be exported as translation_templates13:49
danilosadiroiban, one example is not conclusive, it's just an example13:50
danilosadiroiban, "adminmembers" on ITeam is a counter-example13:50
adiroibandanilos: true.13:52
danilosadiroiban, also, we should seriously consider not snapshooting such big exports13:52
danilosadiroiban, (I am worried about ~1500 templates on ubuntu distroseries being snapshotted)13:52
adiroibandanilos: so how you do you suggest we should export the templates attached to a series(entity) ?13:52
danilosadiroiban, I am not totally sure13:53
danilosadiroiban, properties are nicer because we don't have to add person parameter :)13:53
adiroibandanilos: how can we avoid snapshoting those 1500 templates. Just asking as I don't know exact why and how this snapshoting mecanism works13:53
danilosadiroiban, well, snapshotting can be disabled by the use of doNotSnapshot, and what it does otherwise is fetch all objects from the database and serializes them13:54
adiroibandanilos: and if we use doNotSnapshot, it will just get the total count of entires and a batch/slice of them (like 50 or 300 templates)13:55
adiroiban?13:55
danilosadiroiban, I don't know :)13:56
danilosadiroiban, that's what I am wondering as well13:56
=== Ursinha-afk is now known as Ursinha
adiroibandanilos: ok. I could not find anything regarding „snapshot” on dev.lp.net, but I will look into the source code13:56
adiroibandanilos: we had the same problem with snapshot when we exported all languages from Launchpad13:57
danilosadiroiban, I am pretty sure what it does is instead return only links to objects which you have to load then13:57
danilosadiroiban, but, it's more interesting to know if it batches or not13:57
adiroibandanilos: do I guess we should also inform the API to not create a snapshot for the templates... as it looks like the implicit behaviour is to serialize all the results13:57
adiroibans/do/so/13:58
danilosadiroiban, i.e. if default batch size for collections is 150 (as wiki page suggests), then saving on serialization of other 1300 is a nice enough win13:58
danilosadiroiban, yeah, most likely, though that will make API harder to use: i.e. what we actually care about the templates is their stats directly, so perhaps we could snapshot those at least13:58
danilosadiroiban, i.e. doing a single query to get all templates and then walking over each one separately is going to be very slow13:59
danilosadiroiban, but, we'd have to think about what's the best way out of it13:59
danilosadiroiban, anyway, first thing first: decide on a single approach: why do we need all templates in that attribute (why include obsolete ones), and then decide whether to use a property or a method14:00
adiroibandanilos: i guess that we should try to see if a direct export of template will work... otherwise we should add a getTemplateStats method14:00
danilosadiroiban, well, what we'd probably want is "getStatsForTemplates" instead (to get a bunch of them together)14:01
danilosadiroiban, if you are planning to collate those, use it for reporting and such14:01
adiroibandanilos: if we don't export all templates, then we will have to add a new method getAllTemplates14:02
danilosadiroiban, there is already such a method14:02
adiroibandanilos: and will add one more call into the API...14:02
danilosadiroiban, it's called getTranslationTemplates14:02
adiroibandanilos: so exporting all templates at once should make the API simpler14:02
danilosadiroiban, if that's what we are going to be accessing templates for14:02
danilosadiroiban, so, what are the use cases? if most of the time you'll be looping over current templates (you don't care about disabled templates for statistics, do you?), it'll make everybody else using the API write more code to ignore obsolete templates14:03
danilosadiroiban, that sounds like a bad API decision to me, even if it keeps our API "simpler" (and soon enough people will ask for "getCurrentTemplates" to be exported as well, so it won't really be simpler :)14:04
adiroibandanilos: yes. we can have an API exporting simple things, or and API that is simple to use :)14:08
adiroibandanilos: the use case for getCurrentTemplates is not to report statistics, but rather to provide an API for reading and managing POTemplates14:09
adiroibandanilos: like what template is linked to a gettext domain14:10
danilosadiroiban, I'd say "full templates list" is for managing templates (that's where you want to get obsolete ones as well)14:10
adiroibandanilos: or should allow UTC to batch process changes in the templates (ie. disable 20 templates in the last 2 series)14:11
adiroibandanilos: for getting translation statistics I have opened bug 583979 . And those data will be exported using methods14:12
danilosadiroiban, right, those are the methods that really rang a "bell" in my head: we are approaching all this in a totally unnatural order14:14
danilosadiroiban, i.e. we should not be needing any new methods at all14:14
danilosadiroiban, we should sanitize our interfaces a bit, sure, but this stuff is already possible and we should see what we need to do to export it14:15
adiroibandanilos: it does not need to be new method, only new exports for existing methods14:16
danilosadiroiban, sure, but we'd have to sanitize those interfaces first14:16
danilosadiroiban, the names they have today doesn't help them :)14:17
adiroibandanilos: ok, but getting back to the current IPOTemplate API branch.14:17
adiroibandanilos: should we stop landing it and go work on sanitizing the interfaces?14:18
danilosadiroiban, no, we just need to go over it a bit more carefully and make appropriate decisions for each of the parameters14:19
danilosadiroiban, I'll be sending you an email later today about what I propose we change some more, and then you can either complain or agree and then we can land it14:19
adiroibandanilos: ok :)14:19
danilosadiroiban, this particular branch shouldn't be a hostage to nice-to-do interface changes that we won't do this week14:20
danilosadiroiban, also, we should probably wait to land it after the release so there's plenty of time to QA it on edge and fix anything we need fixed14:21
adiroibandanilos: ok14:21
bigjoolsnoodles775: want to swap reviews?15:31
noodles775bigjools: sure15:31
bigjoolsunless you're about to give me a monster :)15:32
noodles775bigjools: nah, it's just 500lines of more test fixes after an ec2 run of the build gen. branch.15:32
bigjoolsnoodles775: talking of reviews, my +activereviews page tells me you've got a branch ready to land from a while ago15:33
bigjoolslp:~michael.nelson/lp-production-configs/dogfood-config-changes15:33
noodles775bigjools: Actually, I thought that the tom et al landed al lproduction config changes?15:35
noodles775bigjools: hence the 'community' next to your review.15:35
bigjoolsnoodles775: the branch scanner should have picked it up as merged I thought though? hmmm15:36
noodles775bigjools: I don't think it has landed... I just meant that I thought tom lands those (at least he has in the past).15:38
bigjoolsnoodles775: yep, he does those15:38
noodles775bigjools: nice... new unit tests :)15:39
bigjools\o/15:39
noodles775bigjools: why do you remove the proxy on the test case's instance var, rather than just when you need to set something that you normally wouldn't be able to?15:40
noodles775bigjools: also, you could use FakeMethod there if you wanted to... it would mean that you don't need to set slave_called on the builder, which would also mean you don't need removeSecurityProxy right?15:45
bigjoolsnoodles775: proxy is removed because...ummm I can't remember, let me try without it again since I've changed the code a bit since I added it (for good reason at the time)15:46
noodles775I'm guessing it's because you're setting builder.slave_called, which isn't a interface attribute (well, it's not an attribute at all except for your test is it?)15:47
bigjoolsindeed15:47
bigjoolsah, it's because I can't override slaveStatusSentence otherwise15:47
bigjoolswell, I suppose I could name it the same15:48
noodles775Could you do the following in setUp: removeSecurityProxy(self.builder).slaveStatusSentence = FakeMethod(...)15:49
noodles775Then your test could just check self.builder.slaveStatusSentence.call_count == 015:50
bigjoolsyeah, let me try it, I wasn't aware of FakeMethod15:50
noodles775OK, with that r=me15:51
bigjoolsnoodles775: can you make FakeMethod return what you need?15:52
bigjoolsresult= by the looks of it?15:52
noodles775bigjools: yup.15:52
bigjoolsniiiice15:53
bigjoolsnoodles775: ok that all works but I still need the rSP :)15:59
bigjoolsthanks for the review15:59
noodles775bigjools: yeah, I just meant moving it so it's only used to set the one property, rather than storing the un-proxied version. NP.16:00
bigjoolsSince the test doesn't need to care about security, I figured it would be better to unproxy it for everything16:01
=== matsubara is now known as matsubara-lunch
bigjoolsnoodles775: line 42 of the diff: + self.obj.source_package_release.sourcepackagename,16:14
bigjoolsone of my fears realised about inconsistent _ usage :(16:15
noodles775bigjools: yes, I've only updated self.obj - the BinaryPackageBuild... I've not renamed other items (in this case SPR)... and don't think we should as part of this branch?16:15
bigjoolsnoodles775: that's fine, as long as you're going to fix it soon I guess16:16
noodles775yep.16:16
bigjoolsIt's gonna take some effort to undo the muscle memory for typing Build and buildstate :)16:17
noodles775Yeah.16:18
=== salgado is now known as salgado-lunch
=== matsubara-lunch is now known as matsubara
=== noodles785 is now known as noodles775
=== salgado-lunch is now known as salgado
rockstarCan I get a quick review from someone for a small branch?18:44
rockstarabentley, hi, I was just about to start hunting for someone to do a review for me.18:54
rockstarabentley, could I get you to review https://code.edge.launchpad.net/~rockstar/launchpad/no-duplicate-recipe-names/+merge/26080 ?18:54
abentleyrockstar, sure.18:55
rockstarabentley, ta.18:56
=== noodles775 changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== gmb changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [gmb(http://is.gd/cpL9M)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== gmb changed the topic of #launchpad-reviews to: On Call: - || reviewing: - || queue: [gmb(http://is.gd/cqgOz)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
abentleyrockstar, mumble?19:11
rockstarabentley, sure, lemme see Mo off to school real quick.  5 mins tops.19:19
abentleyrockstar, okay.19:19
gary_postermars: ping?  Would like your review of one line change I mentioned yesterday: https://code.launchpad.net/~gary/launchpad/cookielib/+merge/2609220:25
gary_posterwho to bother...who to bother...20:53
gary_postersinzui: would you give me a review of http://cowboy00242.blogspot.com/2008/01/trivia-labs-dawn-breaks-over-marblehead.html ?  I think it should be extremely quick (it's an import fix to utilities/paste)20:55
gary_posterlol20:55
gary_posteror maybe https://code.launchpad.net/~gary/launchpad/cookielib/+merge/2609220:55
sinzuigary_poster, I can21:04
sinzuigary_poster, which do you want me to review first? The proposal or the article?21:04
gary_postersinzui: the propsal first please :-)21:06
sinzuir=me21:06
gary_posterthank you sinzui21:08
sinzui+1 on the article21:08
gary_posterlol21:08
=== matsubara is now known as matsubara-afk
=== salgado is now known as salgado-afk
=== Ursinha is now known as Ursinha-afk

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