*** menesis has quit IRC | 01:27 | |
*** th1a has quit IRC | 01:33 | |
*** th1a has joined #schooltool | 02:34 | |
*** replaceafill has quit IRC | 03:06 | |
*** th1a has quit IRC | 03:49 | |
*** ignas__ has joined #schooltool | 04:45 | |
*** ignas__ is now known as ignas | 05:46 | |
*** ignas has quit IRC | 05:51 | |
*** aelkner has quit IRC | 07:08 | |
*** paulproteus has quit IRC | 07:17 | |
*** paulproteus has joined #schooltool | 07:22 | |
*** menesis has joined #schooltool | 11:17 | |
*** ignas has joined #schooltool | 14:56 | |
*** th1a has joined #schooltool | 16:39 | |
*** menesis has quit IRC | 16:53 | |
*** replaceafill has joined #schooltool | 17:09 | |
*** aelkner has joined #schooltool | 19:51 | |
*** ignas has quit IRC | 20:16 | |
*** ignas has joined #schooltool | 20:22 | |
replaceafill | th1a, zyt? | 20:23 |
---|---|---|
th1a | hi replaceafill. | 20:24 |
replaceafill | hey th1a quick question | 20:24 |
replaceafill | i changed the Sections accordion to use the jstree widget | 20:24 |
th1a | OK. | 20:24 |
replaceafill | should we change the Groups accordion too? | 20:24 |
th1a | Sure. | 20:24 |
replaceafill | kk | 20:24 |
th1a | Good thinking. | 20:24 |
*** ignas has quit IRC | 20:38 | |
*** paulproteus has quit IRC | 20:47 | |
*** paulproteus has joined #schooltool | 20:50 | |
th1a | replaceafill: Can you send me an invoice, please? | 21:24 |
replaceafill | th1a, ah ok | 21:25 |
aelkner | hey guys, are we meeting with welsh today? | 21:26 |
replaceafill | aelkner, no, we agreed i'd send him my updates by email | 21:26 |
th1a | HOw are you coming aelkner? | 21:27 |
aelkner | ah, ok, what about monday? | 21:27 |
aelkner | oh, never mind, i'll be there anyway | 21:27 |
replaceafill | aelkner, can you confirm an error in: schooltool/export/stests/export.txt | 21:28 |
aelkner | th1a, i'm working on the tertiary nav task, nothing to show you yet | 21:28 |
th1a | ok | 21:28 |
aelkner | perhaps in a couple of hours | 21:28 |
th1a | kk | 21:29 |
* replaceafill goes to get lunch, bb in ~ 1 h | 21:42 | |
aelkner | replaceafill, ayt? | 22:23 |
replaceafill | aelkner, i'm back | 22:29 |
aelkner | hey, i have a question about stests | 22:29 |
replaceafill | yes? | 22:30 |
aelkner | i tend to run them without the new silent feature that we have because i like to see them run | 22:30 |
aelkner | and in so doing, i've noticed that they are fast from screen to screen, but then they get | 22:30 |
aelkner | bogged down for, until now, typically half a minute when they do a query for something that is not | 22:31 |
replaceafill | right | 22:31 |
aelkner | found on the screen, as it is often easier to write a negative tests then think of a positive one | 22:32 |
aelkner | do you know why it gets so bogged down on negative tests? | 22:32 |
replaceafill | it's the implicit wait feature of selenium | 22:32 |
replaceafill | i remember yvl added a config for that | 22:32 |
replaceafill | let me look | 22:32 |
aelkner | selenium.implicit_wait = 3 | 22:33 |
aelkner | i found that in buildout.cfg | 22:34 |
replaceafill | that's the one | 22:34 |
aelkner | what is the 3 for, seconds? | 22:34 |
replaceafill | yes | 22:34 |
aelkner | but it's stalling for half a minute, then finally giving up and correctly yileding the negative result | 22:34 |
replaceafill | on what part? | 22:34 |
replaceafill | the gradebook for example | 22:35 |
aelkner | any negative test, we have them spread out in the various packages | 22:35 |
replaceafill | has several checks for every activity | 22:35 |
aelkner | how many of the checks are testing against a result set with nothing in it? | 22:36 |
aelkner | also, have you run it without silent much lately? | 22:36 |
replaceafill | in the gradebook they're not checks | 22:36 |
replaceafill | it's the printer helper | 22:36 |
replaceafill | that looks for inputs | 22:36 |
replaceafill | yes | 22:36 |
replaceafill | i use --selenium-headless a lot lately | 22:36 |
replaceafill | i hate chrome popping up | 22:37 |
aelkner | does it run faster? | 22:37 |
replaceafill | or changing my windows focus | 22:37 |
aelkner | yeah, i hate that too | 22:37 |
replaceafill | i'd say it's the same | 22:37 |
aelkner | and i know that i don't need to see it running every time, but it is how a caught the delay | 22:37 |
replaceafill | you should set the implicit wait to 1 | 22:38 |
replaceafill | that's what i do | 22:38 |
aelkner | man, something really weird is happening lately | 22:41 |
aelkner | it's not just stalling out for half a nimute anymore, it's locking all the way up, which it never does | 22:41 |
replaceafill | hhmm | 22:41 |
replaceafill | what test are you trying? | 22:41 |
replaceafill | the whole suite? | 22:41 |
aelkner | i'm just trying to fix tests that got broken by changes i made to the views | 22:42 |
aelkner | i'll need to push and merge what i have for you to see it though | 22:42 |
replaceafill | i can confirm if you want | 22:42 |
aelkner | but can you just run bin/test schooltool.cando anyway | 22:42 |
replaceafill | ok | 22:42 |
aelkner | for now i mean, and i'll push and merge it in the meantime | 22:42 |
aelkner | i'm sorry, i meant bin/test -vs schooltool.cando | 22:44 |
replaceafill | ah ok | 22:45 |
aelkner | if that runs successfully for you, that will be a helpful piece of data | 22:45 |
replaceafill | i remember the importer tests were broken | 22:45 |
replaceafill | let me get trunk | 22:45 |
aelkner | that's the test file | 22:45 |
aelkner | import_skills.txt | 22:45 |
aelkner | btw, i had to fix one test in the Carpentry container view that wasn't alphabetical in the test | 22:49 |
aelkner | so i swapped the order | 22:49 |
aelkner | but maybe you won't even get that broken test, it may be a unpredictable hash thing with an unsorted dict | 22:49 |
aelkner | but even after i corrected that, it locks up | 22:51 |
replaceafill | i'm getting the lock up in /skills | 22:51 |
replaceafill | File "/home/replaceafill/sandboxes/cando_tests/schooltool.cando/src/schooltool/cando/browser/stests/import_skills.txt", line 33, in import_skills.txt | 22:51 |
replaceafill | Failed example: | 22:52 |
replaceafill | manager.ui.import_global_skills(filename) | 22:52 |
replaceafill | well, it's a failure | 22:52 |
replaceafill | i think you need to update that helper | 22:52 |
replaceafill | i mean, browser extension | 22:52 |
replaceafill | the rest of the tests pass | 22:52 |
replaceafill | and they take 1 minut 25 secs | 22:52 |
replaceafill | minute* | 22:52 |
aelkner | how did you get to the rest of the tests if it locked up | 22:54 |
replaceafill | that's why i said "well, it's a failure" | 22:54 |
replaceafill | not a lock up | 22:54 |
replaceafill | NoSuchElementException: Message: u'The element could not be found' | 22:54 |
aelkner | ah, you only got a failure, what was it | 22:54 |
aelkner | above you stopped at the line that failed | 22:55 |
replaceafill | the Import Skill Data doesnt exist anymore | 22:55 |
aelkner | ah, it crashes | 22:55 |
replaceafill | correct | 22:55 |
aelkner | in the extension routine, ok | 22:55 |
replaceafill | yep | 22:55 |
aelkner | i already fixed that one on my side, you just need to get rid of the Skills click between clicking School | 22:56 |
aelkner | and Import Skill Data | 22:56 |
aelkner | but i don't want you to commit any change like that, because i already will be | 22:57 |
replaceafill | oops, i already committed it | 22:57 |
aelkner | but perhaps you could try that our and revert it just to see if you get all the way though | 22:57 |
replaceafill | (joking) ;) | 22:57 |
aelkner | oh, you got me there | 22:57 |
replaceafill | i know ;) | 22:57 |
replaceafill | nah, i'm working on dwelsh updates right now | 22:58 |
replaceafill | i'm not touching trunk | 22:58 |
aelkner | oh, i knew you weren't doing that | 22:58 |
replaceafill | i'll merge that until he says everything is ok | 22:58 |
aelkner | you're updating cando or virginia? | 22:58 |
replaceafill | cando | 22:58 |
aelkner | ok, let me just push my stuff to trunk, it works with manual tests anyway | 22:59 |
aelkner | replaceafill, i've merged and pushed to trunk, would you have a chance to marge and run the tests | 23:07 |
replaceafill | ok | 23:08 |
aelkner | it contains the fix for the import seleium extension | 23:10 |
replaceafill | running | 23:10 |
replaceafill | import_skills.txt is definitely taking lots of time | 23:13 |
replaceafill | it keeps running though | 23:13 |
replaceafill | i blame the printFormFields helper | 23:14 |
aelkner | could very well be | 23:15 |
replaceafill | to me, it's doing too many queries | 23:15 |
aelkner | it does queries in a loop, so that is computationally complex | 23:15 |
aelkner | but it doesn't like it could be an infinite loop | 23:16 |
aelkner | what do think about the following: | 23:16 |
replaceafill | tests pass at the end | 23:16 |
replaceafill | Total: 12 tests, 0 failures, 0 errors in 6 minutes 44.919 seconds. | 23:16 |
replaceafill | it's like 4 minutes more than the last time | 23:16 |
aelkner | while i was putting the finishing touches on my latest core import/export | 23:17 |
aelkner | ah, it finally timed out and passed | 23:17 |
aelkner | yeah, that won't do | 23:17 |
aelkner | anyway, as i was saying, i thought of a way to make these tests go faster | 23:17 |
aelkner | now that we have the ability to query the export xls file (thanks to yvl for that) | 23:18 |
aelkner | it can be much easier to just run the export and tests against it | 23:18 |
replaceafill | :| | 23:18 |
aelkner | when all you are doing is testing an import | 23:18 |
aelkner | i think that there should always be tests for the views themselves anyway | 23:19 |
aelkner | so there's no need to run though the views again, as i have been, | 23:19 |
aelkner | to test for whether the data has changed correctly | 23:19 |
aelkner | it makes more sense to use the export, don't you think? | 23:20 |
replaceafill | how would you know if the index view is broken? | 23:20 |
aelkner | how would you know if the data that has change results in the index view crashing? | 23:21 |
aelkner | is that what you're asking? | 23:21 |
replaceafill | if i understand you correctly you want to use the export *only* for importer tests | 23:22 |
aelkner | for now, i would say that is the only example of mass changes to the data that need to be verified | 23:23 |
aelkner | normally, when the ui is used to change data, it wold make sense to go look in the index to see it changed | 23:23 |
replaceafill | that sounds more like unit tests to me | 23:24 |
replaceafill | not functional ones | 23:24 |
replaceafill | imho, functional means clicking and *seeing* | 23:25 |
aelkner | yeah, but you don't need to overlap tests too much, it will needlessly add to the time spent | 23:26 |
aelkner | i mean, in theory, you could click every view, each time you do something in the ui to change data | 23:27 |
aelkner | 'just in case' that change broke data somewhere else that causes this view to crash | 23:27 |
aelkner | but one doesn't do that, they only look at the change where they expect it | 23:27 |
aelkner | the object is now in the index, or the object has change in it's index.html view | 23:28 |
aelkner | why is that enough, what if the edit view broke an entirely unrelated object, it could have | 23:29 |
replaceafill | then you run the full suite, right? | 23:29 |
replaceafill | if it broke and it wasn't caught, then you need a new test for the broken part | 23:29 |
aelkner | no i'm saying, when you test an edit Submit button click, we do it all over | 23:29 |
aelkner | at that point, each time, wy woldn't one go check all the other index views to see they are not broken? | 23:30 |
aelkner | because it doesn't make any sense to is why | 23:31 |
aelkner | you just assume the edit view only changed what you intended to change, and you prove it with the test | 23:32 |
replaceafill | right | 23:32 |
aelkner | so i'm just suggesting, in the case of importing, to tests that which we expect to change | 23:32 |
aelkner | namely, that which we can verify with a simple export tests | 23:32 |
aelkner | i keep saying tests, plural, when i mean test | 23:33 |
replaceafill | :) | 23:33 |
aelkner | but you see my point, if anything, it is a fnctional test of the importer as well as an additional one for the exporter | 23:33 |
aelkner | but not a waste of time, clicking and seeing and not finding and stalling, what have you | 23:34 |
aelkner | have i convinced you? :) | 23:36 |
replaceafill | i'm getting rid of the lagging helper :) | 23:36 |
replaceafill | in import_skills.txt | 23:36 |
aelkner | and replacing it with what? what do you have in mind? | 23:36 |
replaceafill | + >>> def format_row(row): | 23:37 |
replaceafill | + ... label = row.query.xpath('td[1]').text | 23:37 |
replaceafill | + ... value = row.query.xpath('td[2]').text | 23:37 |
replaceafill | + ... return '%s: %s' % (label, value) | 23:37 |
aelkner | and then calling format_row in a loop? | 23:38 |
replaceafill | correct | 23:38 |
aelkner | and the loop is derived from doing a query, rght? | 23:39 |
replaceafill | yes | 23:40 |
replaceafill | but not need of query_all inside query_all | 23:40 |
aelkner | ah, i see, so that's what was causing the biggest bump | 23:41 |
aelkner | so query_all * query is about the same as query * query_all | 23:41 |
aelkner | bit query_all * query_all is probably to big | 23:41 |
replaceafill | http://pastebin.com/WBRLtQw6 | 23:42 |
replaceafill | Total: 12 tests, 0 failures, 0 errors in 1 minutes 1.111 seconds. | 23:44 |
replaceafill | better :) | 23:44 |
replaceafill | pushed | 23:46 |
aelkner | pulling | 23:48 |
aelkner | ah, way better! thanks for figuring that out | 23:49 |
replaceafill | :) | 23:49 |
aelkner | i'll remember to avoid query_all * query_all in the future :) | 23:49 |
aelkner | Total: 12 tests, 0 failures, 0 errors in 46.469 seconds. | 23:51 |
aelkner | i'm faster than you are, nah, nah, nah-nah, nah | 23:51 |
replaceafill | :D | 23:51 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!