/srv/irclogs.ubuntu.com/2013/03/21/#juju-gui.txt

frankbanmorning rogpeppe: could you please review https://codereview.appspot.com/7644043/ ?10:04
rogpeppefrankban: will do, after i've finished the review i'm currently on10:05
frankbanthanks rogpeppe 10:05
rogpeppefrankban: LGTM10:44
frankbanrogpeppe: great, thanks10:44
frankbanrogpeppe: I am trying to add retries to setAnnotations, in order to avoid possible race conditions. could you ping me when you have a minute?11:59
rogpeppefrankban: now's good12:00
frankbancool rogpeppe, thanks: this is a prototype, not sure if it makes sense: http://pastebin.ubuntu.com/5633877/12:01
rogpeppefrankban: looking12:02
rogpeppefrankban: that looks good, although i think i'd use a slightly higher iteration count12:04
rogpeppefrankban: in fact, that makes me think12:04
* BradCrittenden reboots12:04
benjiman, lately my email has exceeded even the hights of the Launchpad firehose12:04
rogpeppefrankban: maybe... we should never remove values12:04
rogpeppefrankban: because removed values are the main thing that can cause contention here.12:05
rogpeppefrankban: and, honestly, do we care about a little garbage left over from blank values?12:05
rogpeppefrankban: what do you think?12:05
frankbanrogpeppe: contention can be caused also by DocMissing/DocExists interaction, right?12:06
rogpeppefrankban: yes, but that automatically resolves itself after one iteration, because we don't remove the doc when it's empty AFAICS12:07
rogpeppefrankban: but if two things are both trying to set an attribute, one to "x" and the other to "", they can iterate forever AFAICS12:07
rogpeppefrankban: well, i may be exaggerating there - i haven't properly gone through it.12:08
frankbanrogpeppe: why do you expect them to iterate? doesn't the second just win?12:08
frankbanrogpeppe: i.e. isn't ErrAborted returned only if one of the assertions fail?12:09
rogpeppefrankban: the point is that if we never remove an attribute, then there can *never* be more than two iterations, regardless of what anyone else is doing, AFAICS12:09
frankbanrogpeppe: confused, how to calculate the number of required iterations is the first of my questions, the second one being: how am I supposed to test contention. I supposed that, since both updates and removals assert the same thing (DocExist), they would never interact in a way that causes the transaction to abort.12:16
rogpeppefrankban: currently we don't test contention anywhere. i'm not sure how to do so reliably, because it inherently relies on a race, but i think we should definitely think more about that12:18
rogpeppeupdates and removals *can* cause the transaction to abort12:18
rogpeppefrankban: because removal removes the doc, and update is checking that the doc exists.12:19
frankbanrogpeppe: AFAICT removals removes key/value pairs from the doc, not the doc itself12:20
frankbans/removes/remove12:20
rogpeppefrankban: that's a bloody good point, and one i hadn't realised.12:20
rogpeppefrankban: so... i think all's good12:20
frankbanrogpeppe: cool, so, about the number of retries, should I just decrease them to 2?12:21
rogpeppefrankban: yes, i think so, and add a comment why that's the right number12:22
frankbanrogpeppe: cool, thanks12:22
rogpeppefrankban: one thing occurs to me:12:23
rogpeppefrankban: could you do the $set and the $unset within the same Op?12:23
rogpeppefrankban: so it would look like: Update: D{{"$unset", toRemove}, {"$set", toUpdate}}12:24
frankbanrogpeppe: aha, good point, that way we always have a single op12:24
rogpeppefrankban: yeah12:24
frankbanrogpeppe: and I can rename the helper function to setAnnotationsOp. I'll try this12:25
rogpeppefrankban: yeah, sounds good12:25
rogpeppefrankban: one other thing: i'm not sure quite what you're trying to do with hasAnnotations there. perhaps you could explain it?12:26
frankbanrogpeppe: eh, that was another question, I was reading the draft from William, and he wrote someting like "if mongodb is already in a state consistent with the transaction having already been run -- which is *always* possible -- you should return immediately without error."12:29
frankbanrogpeppe: I am thinking at the case when a client tries to set the same annotations simultaneously two times and the doc is missing12:31
rogpeppefrankban: i think that'll just work.12:31
frankbanrogpeppe: yes, I agree, we write two times the same pairs in mongo and that just works. So, no need to avoid the second transaction?12:33
rogpeppefrankban: yeah12:34
rogpeppefrankban: i think there's no need for another round trip12:34
rogpeppefrankban: if the transaction fails the first time, it can only be because the document does not exist, so we run it again, and then we know we're ok12:35
frankbanrogpeppe: ok, last thing: should we check that the entity still exists? if, e.g., a service is destroyed, we can have a race (the document no longer exists)12:36
rogpeppefrankban: yes, i think so, for precisely that reason.12:36
rogpeppefrankban: although...12:37
rogpeppefrankban: i don't know if any harm will come if we don't check that12:37
rogpeppefrankban: the only problem might come if a service is destroyed and then immediately recreated with the same name12:37
frankbanrogpeppe: in that case, it is possible that we update annotations on the new service, is it so bad?12:40
rogpeppefrankban: well, if someone is constantly adding and removing a service with the same name, we could go more than 2 iterations around the loop...12:41
rogpeppefrankban: i think that in the future, we'll hopefully move towards having a unique id for everything, so this issue will go way12:42
rogpeppes/way/away/12:42
frankbanrogpeppe: yes12:42
rogpeppefrankban: i think let's not worry about it for now12:42
rogpeppefrankban: though fwereade__ may well call us out on it :-)12:42
frankbanrogpeppe: ok12:43
rogpeppefrankban: anyway, it's trivial to fix either way (increase iter count / add DocExists assertion)12:43
frankbanrogpeppe:  add DocExists assertion? 12:44
rogpeppefrankban: currently there's a DocExists assertion for the $set/$unset ops. i'm not sure it's needed.12:44
rogpeppefrankban: if you're changing annotations on a service which has been destroyed, i think it's fine to drop them on the ground.12:45
frankbanrogpeppe: I was thinking about: after two retries, if there's still an ErrAborted, we call Annotator(name) to check if the entity exists. If it exists, return ErrExcessiveContention, otherwise, return another error message12:48
rogpeppefrankban: that sounds great.12:49
rogpeppefrankban: except i'd probably use Count rather than calling Annotator12:49
frankbanrogpeppe: if this makes sense, then we still need  DocExists on updates/removals12:50
rogpeppefrankban: yeah, true.12:50
rogpeppefrankban: sounds good.12:50
frankbanrogpeppe: re Count, yes, better12:50
frankbanrogpeppe: and the custom error is something like "entity $entityname no longer exists"12:51
rogpeppefrankban: yeah, or actually, just "$entityname no longer exists"12:51
rogpeppefrankban: given that entity names are fairly self-describin12:52
rogpeppeg12:52
frankbanrogpeppe: cool12:52
* frankban lunches13:23
benjiheh, "a runtime error occured in hr-self-service application"14:05
hatcha runtime error heh - I haven't seen one of those in a long time14:15
gary_posterjujugui call in 114:28
* benji hopes the Google Talk plugin spirits smile upon him.14:29
gary_posterrick_h_ starting14:30
hatchhey rick_h_ I saw your tweet (at least I think it was you) I use an aeron char14:41
hatchand I love it14:42
hatchworth every penny14:42
rick_h_goodspud: cool I see it on my calendar but don't recall seeing hte email. Is there anything I need to prep for it?14:42
rick_h_hatch: cool, yea I think I'm settling on the ergohuman v2 but want it with the headrest as I'm told it's more useful than you'd think. 14:42
rick_h_but looking for one to order still14:43
goodspudrick_h_, we are wanting to understand what information you need from us to work on the "make it look pretty" side of things (match the visual design)14:43
hatchahh yeah the headrests can be nice14:43
goodspudrick_h_, and the best format for that information14:44
hatchgary_poster: so I'm going to do the _nsRouter ticket now but then I'm out of thinks on my list - anything specific you need completed or should I Just spin around in my chair and pick one at random? :)14:44
rick_h_goodspud: ok cool. see you in 15 then14:44
gary_posterhatch, spinning around in your chair until you induce nausea might be fun.14:45
hatchbest.....job.....ever!14:45
hatchweeeeee14:45
gary_posterlol. hatch, do you have any kind of tablet?14:45
hatchN714:45
gary_posterhatch, maybe a good task for you would be to connect with Makyo about his old touch branch and see what you can do to (a) identify touch issues that need to be addressed, divided by technical issues and design issues; and (b) resolve some of the low hanging fruit.14:47
gary_posterwdyt?14:47
hatchsure thing - I checked it out the other day with hazmat and found some interesting things across platforms and browsers14:47
gary_postercool, hatch, thanks.  I have another task I can put you on next week, if you solve all problems and/or want to switch gears14:48
gary_poster(it would be to contribute to the in-browser-memory juju stuff I've been starting, that you reviewed a branch of yesterday_)14:49
hatchsounds good14:49
hazmathatch, another datapoint to add works fine on an ipad2/chrome.. current staging doesn't load for me on iphone5 (although it has in the past with more minimal content est)14:49
hazmatset14:49
hatchhazmat: interesting - especially considering ios chrome is just a wrapper around webview heh14:50
hazmatindeed. though this is hardware delta iphone 5 vs ipad2.. 14:50
hatchtrue - do you -ever- get script running to long errors on ios safari?14:51
hatchI have never seen one14:51
gary_posterI've never seen them14:51
hatchso I was thinking maybe it's squashed and just kills it14:51
gary_posterheh maybe so14:51
hatchiunno this is just speculation :)14:51
hazmathatch, hmm.. actually it just loaded on the iphone5 after a reload (chrome).14:52
hazmatbut no.. never seen any error dialogs when it doesn't load14:52
hatchand on my phone it gave me a script running too long error and asked if I wanted to continue - then loaded properly14:52
hatchiunno just an idea14:52
hatchwill take some testing14:52
hatchI have an iphone 3g which I can test on too if we want to support that far back14:53
gary_postertablet chrome is all we want atm.  hopefully more later.14:54
gary_posterlike second half of year kind of thing14:54
hatchcool - tablet firefox works better right now ;)14:54
hatchactually for the phone it does too14:54
gary_posterhatch, interesting.14:54
hatchI just found it funny because it worked better and was faster and gave a warning that it's not supported hehe14:55
gary_poster:-)14:55
gary_posterwe can remove that warning for FF once CI tests are up, IMO14:55
hatchyeah I'd agree - lately it looks like FF has been closer to the spec than chrome14:56
hatchor maybe mozilla just has a better marketing department14:56
hatch:D14:56
gary_posterheh14:57
hatchrick_h_ also if you come across any odd path/route issues plz let me know - I tried to account for all the typical use cases but it's entirely possible that i miss one14:59
rick_h_hatch: rgr14:59
hatchrick_h_ do you have any idea when you might have a subapp with multiple functional routes? I'd like to demo this namespace stuff but it doesn't really show it's coolness untill there are two functional apps. Do you think in a couple weeks?15:06
hatchno rush or anything i'm just curious15:07
frankbanrogpeppe: hi, I have to handle this case: I have a function returning a txn.Op and an error. Sometimes, even without errors, there is no Op to be performed (so a zero value txn.Op is returned). The caller must check if it needs to run the Op. I see 4 possible solutions: 1) check that one field is not the zero value 2) the function returns a slice of operations (even if that slice will contain only zero or one ops)15:14
frankban and the caller check len(ops) 3) the function returns a *txn.Op and the caller check != nil 4) the function returns (op.txn.Op, required bool, error)15:14
rogpeppefrankban: one other possibility: define var errNoOperationRequired = errors.New("no operation required") and check for that explicitly15:15
rogpeppefrankban: when is there no op to be performed?15:16
rick_h_hatch: well, I've got two views that 'render' right now and this branch I'm trying to get up today. 15:16
rick_h_hatch: so in theory if I bind a click event you can swap between two views this week15:16
frankbanrogpeppe: aha! when the document is missing and the request contains only removals15:16
hatchoh very cool - ok cool I'll make a note for next week15:17
rick_h_gary_poster: is there a staging besides uistage that's got a more recent deploy of trunk? /me isn't sure how staging/etc is working.15:17
hatchI want to demo it for the YUI Round Table15:17
rick_h_hatch: hah, well....as I just showed goodspud "it ain't pretty" 15:17
hatchoh haha15:17
gary_posterrick_h_, uistage used to be updated every half hour from trunk.  checking.  otherwise, I or you can spin up a charm15:18
rogpeppefrankban: i wonder if you could create the document in that case anyway (with an empty set of annotations)15:18
rick_h_gary_poster: ah ok. Yea my url/route isn't working on it but it works locally. I figured it was just out of date. Maybe there's a bug I didn't know of in production then15:18
rogpeppefrankban: then we preserve the invariant that if you call SetAnnotations, the document must exist afterwards.15:19
rick_h_gary_poster: ah nvm, it's got hatch's changes so it's down below15:19
gary_posterrick_h_, oh ok cool15:19
rick_h_and mousewheel scrolling fooled me15:19
hatchlol15:19
rick_h_goodspud: so yea, you can see the stuff load under the environment at http://uistage.jujucharms.com:8080/bws/sidebar and http://uistage.jujucharms.com:8080/bws/fullscreen15:19
rick_h_goodspud: it's just off the page15:19
frankbanrogpeppe: it's doable, but do we care about that invariant?15:20
rogpeppefrankban: doesn't it make the code a little simpler? you then don't need to worry about returning no ops15:20
rogpeppefrankban: and though strictly a little less efficient, i can't see that it matters.15:21
gary_posterrick_h_, (it is every half hour still fwiw)15:21
rick_h_gary_poster: thanks, yep ignore me. it's just working better than I thought :)15:22
gary_poster:-) cool15:22
goodspudrick_h_, cheers buddy15:22
frankbanrogpeppe: +1, it's achievable just removing an "if"15:23
rogpeppefrankban: thought so15:23
frankbanrogpeppe: thanks. anyway, it's nice to know how to handle similar situations using a custom error15:26
rogpeppefrankban: yeah, it's a useful technique15:26
hatchif anyone has a few minutes to review https://codereview.appspot.com/7946043 trivial attribute namechange15:36
benjihatch: I'll take a look.  Is there a card on the board I should tag?15:37
hatchyup in the top row15:39
benjidone and done15:39
hatchthank you!15:39
benjiI don't like the "LGTM" bit.  I need to write up an RFC that codifies +/- 1/0 then we can all file bugs when apps don't "comply with the standard".15:41
benjiheh, I just noticed that our board has a "Story 1" and a "Story A".  I approve.15:42
gary_poster:-)15:42
hatchinside joke?15:43
hatchoooookk one more reviewer for https://codereview.appspot.com/7946043   going.....going.....15:50
MakyoGone.15:50
hatch^515:50
MakyoNeed a micro-review or two (hatch did one, think it's an LGTM? Not sure) - https://codereview.appspot.com/7884044/16:03
hatchyes sorry - I just didn't want to put LGTM if that was a typo16:04
MakyoNo worries.  Units just work a little differently.16:05
gary_posterbcsaller_, new Jenkins failures are worse: they never get past "subprocess.CalledProcessError: Command '['juju', 'status', '--environment', 'juju-gui-testing', '--format', 'json']' returned non-zero exit "16:22
bcsaller_gary_poster: yeah, its no longer even building an environment from shell on the machine, I've been looking into it16:22
gary_posterok thanks16:22
gary_posterhatch give the man (==Makyo, on https://codereview.appspot.com/7884044/) a LGTM :-)16:26
gary_poster(or not, if there's an issue)16:27
hatchoops :) done16:27
hatchhmm I don't think this current UI is going to work on a 7" tablet16:28
gary_posterhatch, that goes in the "design issues" category then :-)16:30
rogpeppefrankban: you have a revieew16:30
rogpeppereview, even!16:30
hatch:) ok so what I'll do is create a google doc with the issues for chrome and ff on this tablet16:30
hatchthen we can generate tasks from that16:31
gary_postercool hatch thanks16:31
frankbanrogpeppe: thanks, nice comment suggestion!16:31
rogpeppefrankban: np16:31
rogpeppegary_poster: i've got the CL in review that adds annotations to the StateWatcher. you might want to have a look, as it defines the format you'll see on the wire. https://codereview.appspot.com/794804317:05
gary_posterack, thanks rogpeppe.  benji ^^^17:05
gary_posterrogpeppe, "arble":"" == deletion, I assume?17:07
rogpeppegary_poster: hmm, good point. that shouldn't be possible in practice - a bad test case.17:07
gary_posterrogpeppe, cool.  So each annotation change always sends us all values, AIUI, right?  So we should replace any previous values, and so a deletion semantic is unnecessary.17:09
rogpeppegary_poster: yes17:09
gary_postercool17:09
gary_posterLGTM rogpeppe thanks17:09
rogpeppegary_poster: thanks!17:09
rick_h_hatch: I thought that only the defined ATTRS would be set from an initializer(cfg) but it looks like anything in cfg is getting an ATTR created for it?17:23
hatchyep17:27
hatchhowever - I consider it bad practice to not define the ATTR - else the code is referencing undocumented attributes17:28
rick_h_hatch: ok, yea I just got through chasing down wtf views were getting their this.get('db') from and threw me for a loop17:29
hatchsorry, bad practice to not define an ATTR that you're using17:29
hatchyep I just dealt with the same thing....."where the heck is his attribute coming from" hehe17:29
rick_h_all good, now that I realize they still work not being defined it'll be easier. 17:29
rick_h_stop looking in this file, find the calling piont17:29
hatchI have always had an issue with that because of the performance implications17:30
hatchbut whatever17:30
hatchI belive as long asyou don't define a value it'll be lazily created17:30
hatchI can't remember the exact sequence though17:30
rick_h_yea, but I guess the assumption is normally you pass fewer iterations through cfg than exist on an object in ATTRS17:30
hatchyeah - I have always had a small issue with it because all values passed to the initializer end up as attributes17:35
hatchimho the initializer should split them off into attributes and properties17:35
rick_h_ok, after I figured out self.db the notification thing is sweet. Nice and easy to way to get a popup like that. :)17:51
hatch:)17:51
gary_posterbcsaller_, frankban ^^^ :-)17:51
bcsaller_:)17:52
frankbancool17:53
hatch72km winds right now....I'd probably kill myself if I went kiting haha17:54
rick_h_great, the rest of us have "what docs do you have in case you're hit by a bus" and for hatch it's "what docs have you left in case you fly a kite?"17:54
hatchhaha17:54
hatchmy kite is only rated to 40kph by the manufacturer - so I'm not even sure it would be able to be controlled :D17:55
rogpeppebenji, gary_poster: here's a CL that adds a field to Service, by way of an introductory example of how to add more info to the AllWatcher: https://codereview.appspot.com/7950044/18:11
benjicool18:12
benji(the whole fancy spacing thing is irritating in diffs, especially when you can't control the whitespace sensitivty of the diff-producer)18:13
rogpeppebenji: agreed. i would have been happy with no field alignment, but there y'go.18:15
rogpeppebenji: turning off ws sensitivity is problematic for other reasons, unless you have a diff that's knows about lang specific quoting rules.18:16
rogpeppethat brings me neatly to eod; g'night all18:17
benji'night rogpeppe 18:17
gary_posternight18:25
=== deryck is now known as deryck[lunch]
hatchMakyo: are you around?18:38
hatchto talk about mobile18:38
Makyohatch, making lunch now. Will be around to type in a few, hangout after.  Unless you want to watch me eat noodles or something.18:39
hatchhaha it's ok I pmd you some lunch reading18:39
hatch:)18:39
hatchlemme know when you're done lunch, no rush18:40
Makyohatch, cool, thanks.18:40
Makyohatch, ping19:06
hatchyo19:06
hatchguichat?19:06
Makyohatch, yep, on my way.19:06
=== deryck[lunch] is now known as deryck
hatchfyi all - it looks like node and npm have been updated to fix the error we were seeing20:09
bcsaller_ahh, good20:10
hatchso someone can update that...or I can later20:13
hatch:)20:13
hatchany idea which mailing list I should ask about which browser ubuntu phone uses?20:21
hatchubuntu tech?20:21
hatchOnline I am seeing showshoe and webkit20:21
hatchalthough snowshoe IS webkit I think20:21
rick_h_hatch: good ? I was wondering about the browser on there. I've ping'd aquarius about it but he's EU so might not hear back until tomorrow. 20:25
hatchahh ok - I can wait20:26
hatchI am trying to figure out what sets the height of the environment20:26
hatchbcsaller_: are we defining the height of the environment somewhere?20:27
bcsaller_hatch: the viewport module handles that stuff20:28
hatchah hah20:28
hatchof course the only one I haden't looked in yet20:28
hatch:D20:28
rick_h_hatch: so told you want to chat with osomon about the browser. 20:30
rick_h_and let me know what you find out as I'm very curious :)20:30
hatchsure thing - doesn't look like he is online right now20:31
rick_h_hatch: yep, spain so have to catch tomorrow20:31
hatchgood news is that I have it so you can actually use most of the gui in FF already20:31
hatchin horizontal view20:32
hatchwe aren't setup for vertical view20:32
rick_h_yea, wouldn't expect it20:32
rick_h_hatch: jcsackett https://codereview.appspot.com/7947045 for your consideration if you guys get time. Know it's late so maybe tomorrow. 20:44
hatchyep I can do it now20:44
hatchit's only 2:$4 here20:44
hatch2:4420:44
rick_h_hatch: oh, well 2hrs ahead here so I'll be heading out soon :)20:44
hatchdoes this need qa or just code review?20:44
rick_h_hatch: I think just review. It doesn't effect anyone else. 20:45
hatchalrighty20:45
rick_h_hatch: if you QA it I need to check the status of the charmworld staging to make sure it's got the update for the ajax requests to pass20:45
hatchit's alright20:45
hatch:)20:45
rick_h_which I will do tomorrow though. Next branch I'll wire up the button to swap between sidebar/full screen view and get that landed so it can be loaded with a button that does something :)20:46
hatchkewl20:46
hatchdo you know when we should expect the yui responsive grid change?20:47
rick_h_hatch: no...honestly had hoped to have it yesterday, then today, now hoping tomorrow. 20:47
hatchalright no problem - was just making css changes for this mobile stuff so I'm not sure if they will still be there come the changeover :)20:48
rick_h_yea, I'm going to guess it'll be a mess to merge. I imagine his branch is going to be lots of little edits all over20:48
rick_h_hatch: https://code.launchpad.net/~huwshimi/juju-gui/replace-with-yui-grids looks like his branch pushed up yesterday20:49
rick_h_for an idea20:49
hatchoh cool I'll check that out20:49
jcsackettrick_h_: i'm looking now as well.20:49
rick_h_yea, always good to know you can go do http://code.lp.net/~username and see what branches they've got ;)20:49
rick_h_thanks jcsackett 20:50
rick_h_heh, actually the branch is smaller than I would have thought hatch 20:51
rick_h_well I'm out. Have fun guys. 20:51
hatchcya20:52
hatchI think I'm going to write a plugin for the linter which doesn't allow my_var :P20:54
rick_h_hatch: now careful, I happened to look at things in config-debug/prod and I see a bunch of my_var :P20:57
rick_h_so look around before you knock it, I might be keeping with 'convention' for the thing at hand 20:57
hatchI'm pretty sure the convention was changed to be camelCase20:57
hatchto match javascript in the rest of the world :P20:57
hatchso there is a lot of legacy my_var20:58
rick_h_ok, just saying I did go through and look through my code to try to make it camelHappy... :P20:58
hatchI think you missed a few files when you went through it :)20:58
rick_h_hatch: ok, that's possible then as well ;)20:59
hatchhaha - don't worry I'm not going to write 'camelCase' at every instance20:59
hatchjust in the notes :P20:59
hatchdid you use writeOnce because it could be set multiple times by accident?21:00
hatchor just as a precaution?21:00
rick_h_hatch: no, honestly I don't think it's true of 99% of the attrs21:00
rick_h_but it's on every single other attr so I added it along with it21:01
hatchok I'm pretty sure there is a performance hit setting them to writeOnce21:01
rick_h_yea, I'm on board with wiping that off the face of the models tbh21:01
rick_h_just noise 21:01
hatchhaha ok I'll make a note in the review21:01
hatchI just wanted to ask first :)21:01
rick_h_no, it's because the models are created from api data but there's no 'save' back to the store21:02
rick_h_so none of those attributes from the model should be 'writable' but I think we can just ack it and move along vs writeOnce on each attr21:02
rick_h_doh, I said I was gone...really am this time lol21:02
hatchhaha21:03
hatchcya21:03
gary_posterhatch and Makyo, or whomever is still around, https://codereview.appspot.com/7896045 is available for review.22:44
Makyogary_poster, on it.22:44
gary_posterthank you very much Makyo 22:44
hatchokee22:45
gary_posterthank you22:45
hatchthere should be a warning at the end of that url22:46
hatchlol22:46
hatchgary_poster: have you ran these tests?22:57
gary_posterhatch, yes, locally and in ie1022:57
hatchand a follow-up does it have the new:gui: namespace stuff in this branch22:58
hatch?22:58
hatchThe init of the juju app now looks for an element in the index.html file which isn't there right now22:59
gary_posterhatch, yes, the diff is from when I branched, which was from before your branch.  Did I add a test that will conflict with your changes?  I could merge trunk preemptively and check22:59
hatchso this test should fail22:59
gary_posterah ok.  I'll merge trunk and look, thanks22:59
gary_posterthat will mess up the future diff but hopefully that is ok22:59
hatchwell23:00
hatchI could give you the line to fix it23:00
gary_postersure, that would help!  thanks. :-) I'll still need to manually merge though23:00
hatchhttp://bazaar.launchpad.net/~juju-gui/juju-gui/trunk/view/head:/test/test_notifications.js#L7623:01
hatchyeah23:01
hatchI don't really like this - this is going to happen every time we instantiate app now23:02
hatchI'll create a ticket for me to find a better place to attach that listener in app.js which is causing the issue23:02
gary_posterhatch, tests passed23:02
gary_postertrying again with lots of refreshing...23:02
hatchreally...interesting23:03
hatchhttp://bazaar.launchpad.net/~juju-gui/juju-gui/trunk/view/head:/app/app.js#L38923:03
hatchthat should cause it to fail without that element on the page23:03
gary_posteragreed.  dunno.  will put a break point in test23:04
gary_posteroh weird23:04
gary_postertest fails in isolation but passes together.  Something is not isolated properly. :-/23:05
hatchahh darn23:05
hatchmy guess is that element is hanging around - I must have screwed up and forgot to destroy it after one of the previous tests23:05
gary_posterwelll...23:06
gary_posterah, hatch, yes23:06
gary_posterand hatch, I could make it fail by changing line 389 to this.get('container').one('#nav-brand-env').on ...23:07
gary_posteroh...23:07
gary_posterbut that is not supposed to be in the container is it23:07
gary_posterback in a few23:07
hatchnope it's outside of the container23:08
gary_posterback23:23
hatchSo the purpose behind that event listener is to make sure that we capture any clicks to that logo so that we can display the environment view properly23:25
hatchunfortunately that element is always on the page because it's in the index not in a template23:25
hatchso maybe we could move it into a rendered template?23:25
hatchand then it woudln't break our tests23:25
hatchbrb in 1523:33
gary_posterwe could also simply conditionally test for that element. <shrug>23:37
hatchyeah we COULD do that23:53
gary_posterhatch I'm removing the nav-brand-env after each test to see what passes then...23:53
gary_posterooh, bunches23:54
gary_posterhatch, how do you want to resolve this?23:55
hatchcould you edit the app.js file to put a conditional around that event listener?23:55
hatchthat probably makes the most sense else every time we create a new instance of app we'll have to make sure that it's in the dom23:56
gary_posteryeah, that's what I was gonig to try next.  Then I would rip out the test addition, because you don't seem to look at23:56
gary_posterit in the test23:56
hatchyeah sorry about that23:56
hatchtonight I'm going to set up remote debugging for my tablet in hopes I can solve that click issue in the environment tomorrow23:57
gary_posterawesome.  Then you can show me how to do that later :-)23:58
gary_posterthat change makes all tests pass23:58
hatchhaha can do!23:59

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