Peter Amstutz [Wed, 1 Oct 2014 21:12:52 +0000 (17:12 -0400)]
3769: Add rate_limit with log throttling logic. Multiple configuration
parameters to throttle excessive logging by bytes, lines, logs table events,
and total logged output.
Tim Pierce [Wed, 1 Oct 2014 20:52:17 +0000 (16:52 -0400)]
3782: code review feedback
* Fixed whitespace, JavaScript style in _show_log.html.erb
* Removed unused bytecount variable from file_enumerator
* Changed the new job and collection fixtures to have the job uuid match
the uuid listed in the log.
Tim Pierce [Wed, 1 Oct 2014 18:28:38 +0000 (14:28 -0400)]
4000: tighten up functional test
Updated the test to ensure that a copied pipeline instance actually has
the expected script_parameters from both the source instance and source
template, respectively.
Tim Pierce [Wed, 1 Oct 2014 17:50:53 +0000 (13:50 -0400)]
3782: bugfix and added integration test
* Fixed bug where log viewer would always request partial log and receive
206, even when total log size is shorter than log_viewer_max_bytes.
* Added integration tests:
** set up KEEP_LOCAL_STORE with dummy log
** test retrieving full job log
** test retrieving partial job log
Peter Amstutz [Wed, 1 Oct 2014 16:00:25 +0000 (12:00 -0400)]
3769: Allow up to crunch_limit_log_event_throttle_rate per
crunch_limit_log_event_throttle_period, then silence the logs until the next
crunch_limit_log_event_throttle_period.
Peter Amstutz [Wed, 1 Oct 2014 15:23:37 +0000 (11:23 -0400)]
3859: Added AlreadyLockedError for job lock conflict. Added runningbarbaz
fixture so test "cancel someone else's visible job" is testing the right thing.
Tim Pierce [Tue, 30 Sep 2014 22:07:15 +0000 (18:07 -0400)]
4000: fix copying pipeline instances with newer templates
* When copying script parameters from a pipeline instance, check that
the component exists in the source instance before blindly
dereferencing it.
* Added tests for copying when components=use_latest and when
script=use_same (the two edge cases exposed by this bug)
Peter Amstutz [Tue, 30 Sep 2014 19:40:37 +0000 (15:40 -0400)]
4004: Rename "Compute status" to "Compute and job status". Added integration
tests for buttons. Reduced dashboard page rendering time by at least 25% by
batching certain API server requests (previously happing per-object),
Tim Pierce [Mon, 29 Sep 2014 22:25:36 +0000 (18:25 -0400)]
3782: check for Content-Range header in response
Change the logic for detecting whether the log has been truncated to:
* response status code is 206
* a Content-Range header is present with 'bytes 0-x/y'
* x + 1 < y
Add a "download full log" link that is present when the full log is
available to be viewed.
Tim Pierce [Tue, 30 Sep 2014 04:42:16 +0000 (00:42 -0400)]
3961: test creating subprojects under home with duplicate names
New tests:
* unprivileged user creating a subproject under their home project, with
an existing name, returns 422
* unprivileged user creating a subproject under their home project, with
an existing name, and ensure_unique_name=true, succeeds
Tim Pierce [Mon, 29 Sep 2014 21:55:17 +0000 (17:55 -0400)]
3782: keep log viewer code in _show_log.html.erb
Keep log-related restrictions in the log viewer and not in general
purpose workbench code:
* Add Rails.configuration.log_viewer_max_bytes to specify the maximum
number of log bytes to display
* The log viewer specifies a byte limit via the HTTP Range header. The
Content-Length of the response is set to the minimum of the 'size'
query parameter and the byte range. If the log appears to have been
truncated, the viewer reports it in the 'log_viewer_overview' pane.
* CollectionsController.FileStreamer either delivers the entire file
or exactly opts[:maxbytes] bytes, whichever comes first. It does not
add any log-specific message.
Brett Smith [Mon, 29 Sep 2014 20:07:55 +0000 (16:07 -0400)]
3866: PySDK KeepClient accommodates services with IPv6 addresses.
I thought there was going to be a nicer way to construct URLs than
this, but urllib.urlunparse is still expecting the host+port as a
single string, so this approach is easier. Closes #3866.
Brett Smith [Mon, 22 Sep 2014 20:45:19 +0000 (16:45 -0400)]
3848: Python packages build with git tag by default.
This moves the build logic that we currently encode in Jenkins into
our setup.py, and makes it easier for developers to have versions in
sync with real users.
Tim Pierce [Mon, 29 Sep 2014 15:06:49 +0000 (11:06 -0400)]
3961: reset object UUID when ensure_unique_name is set
When saving an object that has to be renamed with ensure_unique_name,
force @object.uuid to nil so that validate_uuid will not be confused
into thinking we are trying to reassign the uuid.
3889: add a new integration tester for users controller. Refactor code so that users functional and integration tests can reuse some of the helper methods.
Tim Pierce [Fri, 26 Sep 2014 19:38:45 +0000 (15:38 -0400)]
3782: restore default of no maxbytes
Use the 'size' query parameter to specify the limit of log bytes to
display for a job. If no 'size' parameter is present, the FileStreamer
class reads up to 2**16 bytes from the API server.
Peter Amstutz [Fri, 26 Sep 2014 20:06:28 +0000 (16:06 -0400)]
3871: Pass on UnicodeEncodeError. Don't return those entries in the directory
listing because the user won't be able to access them anyway. Add --encoding
parameter to command line to allow the user to specify desired filesystem
encoding.