Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: popcorn

Jul 18, 2012

  1. David Seifried

    Merge pull request #1 from dseif/t1207

    [#1207] Job names now using first 10 digits of commit sha
    authored July 18, 2012
  2. David Seifried

    [#1207] Fixed some styling issues

    authored July 18, 2012
  3. David Seifried

    Job names are now the first 10 digits of the commit sha

    Signed-off-by: David Seifried <david.c.seifried@gmail.com>
    authored July 18, 2012

Jul 16, 2012

  1. Christopher De Cairos

    Custom Changes for Popcorn and Butter TestSwarm

    authored July 16, 2012

Jul 09, 2012

  1. Timo Tijhof

    Security: Use tokens instead of sessions. Fixes #209.

    * Per #209: Don't allow actions to happen without tokens with just
      a GET or POST request (goes for both the API and the GUI).
    
      All authenticated actions now:
      - Require POST
      - Require authToken
      - Ignore the session / prevent CSRF
    
      This documented with the '@actionAuth: Yes' annotation.
    
      Centralized authentication logic and error handling in
      a new method Action::doRequireAuth(), which optionally takes
      a username parameter to additionally strict authentication not
      only to a valid pair, but also to a specific pair. For example,
      in actions Wiperun and Wipejob the authentication must match
      account that owns the relevant job. And in LogoutAction
      authentication must match the session (otherwise CSRF is still
      possible when the attacker sends his own credentials - in case
      the attacker is internal - muhahaha).
    
      Now that authorization is more structured, replacing error code
      'requires-auth' with a more precise one 'unauthorized'.
    
    * Updated front-end to send authUsername/authToken where needed.
     - job.js: wiperun
     - testswarm.js: logout-link.
       Although LogoutPage will build a form with the tokens as hidden
       inputs, for convenience a direct logout link should still be
       possible.
     - AddjobPage: Pre-fill authToken for logged-in users.
    
    * Issues:
     - fixes #209
    
    * Follows-up:
     - 2073672
    
    * Misc:
     - Clean up some older surrounding code, such as consistency in
       in using !count() and single quotes instead of count()===0 and
       double quotes.
     - Fix erroneous HTML ids in LoginPage.php. 'id="form-password"'
       got all mixed up to everywhere but the one line where it should
       be..
       And adding missing id form-username so that the <label for>
       works there as well.
    authored July 09, 2012
  2. Timo Tijhof

    Update calculateVersionInfo: Fix bug with slashes in head names.

    * Branch "foo/123/bar" was being shown as "bar" due to use of
      basename(). Instead using a regex for refs/heads/*, and falling
      back to the complete name.
    
    * Correcting property name from 'HEAD' to 'SHA1'.
      Updated usage of that property.
    authored July 09, 2012

Jul 08, 2012

  1. Timo Tijhof

    ResultPage: Fix comment typo from 0ac0fba.

    authored July 09, 2012

Jul 05, 2012

  1. Davit Barbakadze

    WipejobAction: Use tokens instead of sessions. Addresses #209.

    * Per #209: Don't allow actions to happen without tokens with just
      a GET or POST request (goes for both the API and the GUI).
    
      WipejobAction now requires a token to be passed and ignores the
      session.
    
    * Since we use the API in the GUI as well, we need the auth token
      in the webpage state. Exporting as SWARM.user.
      Not including in InfoAction since that might introduce a
      venerability in the API.
    
    * job.js: Wrapping event binding in an if statement for SWARM.user,
      other wise it would throw a TypeError when trying to access
      SWARM.user.authToken of undefined SWARM.user when clicking things
      without being logged in. This also naturally fixes #210.
    
      And now sending authUsername/authToken to action=wipejob
    
    * Issues:
     - makes progress on #209
     - closes #204
     - fixes #210
    authored June 29, 2012 Krinkle committed July 05, 2012

Jul 04, 2012

  1. Timo Tijhof

    .htacces-sample: Make the default sample setting match testswarm-samp…

    …le.json
    authored July 04, 2012
  2. Timo Tijhof

    Security: Implement clickjacking protection. Fixes #207.

    * The Page classs now has a method for setting the frameOptions.
      This will default to DENY.
    
    * From ResultPage, we send X-Frame-Options: SAMEORIGIN; to still
      allow it to be embedded within TestSwarm. We need this since
      we send the `report_html` snapshot to the user through an iframe.
    
      Note we can't use the Page class method here, since this raw
      response bypasses the Page class, it is a raw html response that is
      not build following the regular flow Page::output().
    
    * While at it, adding argument `true` to the header() call for
      Content-Type, which is for "replacing" for good measure.
    authored July 04, 2012
  3. Timo Tijhof

    UserAgents: +Chrome 20, update browserSets.currentDesktop

    authored July 04, 2012

Jul 02, 2012

  1. Timo Tijhof

    Revert "Replacing Chrome 17 with Chrome 20 (now stable)"

    This reverts commit ddb8637.
    authored July 02, 2012

Jun 30, 2012

  1. Jörn Zaefferer

    Replacing Chrome 17 with Chrome 20 (now stable)

    authored June 30, 2012

Jun 28, 2012

  1. Timo Tijhof

    CSS: .swarm-results should not wrap

    To maintain table readability with many browser columns.
    authored June 28, 2012

Jun 27, 2012

  1. Timo Tijhof

    README: Remove redundant ./; fix order; fix sample robots.txt name

    authored June 27, 2012

Jun 24, 2012

  1. Davit Barbakadze

    SignupPage: Prettify to look similar to LoginPage.

    Merges #200.
    authored June 24, 2012 Krinkle committed June 24, 2012

Jun 13, 2012

  1. Timo Tijhof

    update html for bootstrap v2.0.4 incompatibility

    * "badge-error" -> "badge-important"
       According to bootstrap release-notes the former was only a docs fix
       suggesting it never worked, but it did work. So fixing the class
       name in our code base.
    
    * Misc.:
     - Re-adding table-bordered on ResultPage, matching the JobPage.
     - quotes/whitespace
    authored June 13, 2012
  2. Timo Tijhof

    upstream: twitter/bootstrap v2.0.2 -> v2.0.4

    authored June 13, 2012
  3. Timo Tijhof

    ResultAction: Fix case where job has been deleted.

    * If job is deleted, 'job' and 'otherRuns' property are null.
      (instead of throwing a data-corrupt error).
    
    * Update ResultPage to handle this situation by falling back to
      a simple message in place of the job-navigation bar.
      The rest of the data can still be displayed fine.
    
    * Misc.: Remove old @todo comment that has been resolved.
    authored June 13, 2012

Jun 12, 2012

  1. Timo Tijhof

    SwarmstateAction: Expose activeRuns

    * With issue #180 being fixed by dc7bb99
      pendingRuns now no longer includes run already taken care of.
    
      However the testswarm-browserstack script uses this to determine
      whether it is okay to terminate a worker.
    
      This resulted in a situation shortly on swarm.jquery.org where any
      test taking longer than a minute while being the last run in a job,
      it would never complete because the worker was killed by
      testswarm-browserstack.run.sh since pendingRuns === 0.
    
      Introducing activeRuns, which is the statistic that script needs to
      fix this.
    
    * Misc.: Code conventions.
    authored June 13, 2012
  2. Timo Tijhof

    ProjectsAction: Fix job_latest_created field

    * MAX(jobs.created) selects the highest value of that column, which
      seems good, but actually isn't. Because it should instead get
      the created time for job_latest. Needs a separate query.
    
      It was showing the same timestamp for all projects.
    
    * Follows-up 57b101b
    
    * Misc.: Code conventions
    authored June 12, 2012
  3. Timo Tijhof

    Implement new results storage and pinging system

    * Drop redundant `run_useragent.runs` column.
      This was duplicating the role of `run_useragent.completed`.
    
      The purpose of the duplicate row was to keep track of runs that
      have finished running, but need (or don't need) additional re-runs.
    
      This is now done using the 'status' and completed/max columns.
    
      run_useragent.status: Re-defined.
    
    * Replace `run_client` table with `runresults` table.
    
      Main difference is that the `runresults` has its own identifier
      column which means it can be accessed directly.
    
      Also rows from this table are to be never removed, not even when
      a run is re-run, wiped, reset or cleaned up.
    
      A link to /result/123 is to be considered permanent.
    
      Of course they can be unlinked from the run_useragent table (i.e.
      when a job is reset, that field is NULLed, and if a better re-run
      is saved, it overwrites that link with the new one). But this data
      is preserved.
    
      This also improves performance in several places by not having to do
      a full table scan of run_client and client to find all entries for
      a certain user_agent (which was very slow).
    
      Uses a `store_token` to control ability to save results into the
      stub row. Previously clients could basically pass anything to
      SaverunAction, and screw up stats. This whole in the system is now
      fixed.
    
      Update dbUpdate.php: Use run_client as check for 1.0.0
      Although both `useragents` and `run_client` are good checks to
      detect pre-1.0.0, using the latter as a check allows testers of the
      alpha versions before this commit to be notified as well.
    
    * New `run_useragents.results_id` column.
      No longer "guess" which belongs to which (by looking up the run_id
      and all possible client_id's), but tie them together right there.
    
    * Implement ping system
     - Clients ping every (conf->client->pingTime) seconds through AJAX.
       We use this to determine whether the client is still alive.
       Up until now we used a combination of connectTime and "last time
       a run was saved" to determine client connection. Which means you
       couldn't consider a client to be "gone" without also requiring that
       runs may run for a very long time.
    
       Now the pingTime can be set to 30 seconds and the runTimeout
       (maximum execution time) to 5 minutes. And a run can perfectly be
       allowed to take 5 minutes, but if the client is gone after anywhere
       in less than 5 minutes (e.g. 2 seconds, 3 minutes whatever) the run
       can be reset earlier and the client considered "offline" much
       faster.
    
       This should speed up things on swarm.jquery.org in case there is a
       run causing a browser freeze of whatever. Because we can allow a
       run to run for 5 minutes while being able to assume "disconnection"
       much earlier than that.
    
    * Moved confUpdate from getrun/saverun to pingAction.
    
    * Removed properties:
     - JobAction: runRuns, runMax
       No longer relevant, don't exist any more.
    
    * New "Result" page which shows navigation to results from other
      browsers for the same run.
    
      As well as some generic data and the client ID / username.
      and displays runID/jobID pair as well.
      (previously this was next to impossible to extract after the run was
      saved).
    
      Now serving the runresults html through an iframe instead of
      directly to the client. Getting it directly is still possible
      through query parameter "?raw=".
    
      State constants are defined in ResultAction class as static
      members named ResultAction::$STATE_*. Using these in PHP instead of
      using the primitive number values directly
      (and ending up clarifying code with comments explaining the numbers,
      again, and again..)
    
      Updated logic to show a link to the Result report even if the test
      is still in progress or if it timed out (not just if it passed
      or completed with failures).
    
      We store the report either way, so we might as well show it.
    
      Previously this was quite annoying when the test was infinitely
      "in progress" or timed out, there was no link and nothing to see.
      Now it links to the report and at least shows the data we have,
      can help solving problems.
    authored June 11, 2012
  4. Timo Tijhof

    various code clean up

    * Variable names, whitespace, quotes, trailing new line at end of file
    
    * Code conventions:
      https://github.com/jquery/testswarm/wiki/Style-Guidelines
    
    * Rough JSHint pass
    authored June 12, 2012
  5. Timo Tijhof

    AddjobAction: Fix bug for job with invalid browserSets.

    * Needs a `return;` after the setError.
    
    * Must be before the INSER for the job row.
    authored June 12, 2012
  6. Timo Tijhof

    Preserve other window.onerror handlers (if there are any).

    * Notes:
     - Need to cast prevRet to boolean, because otherwise
       === false will return false which is wrong.
      QUnit, for example, returns (implied) undefined. Which should result
      in the default behavior, not a suppression (only with res
    
    * Issues:
     - fixes #191.
    authored June 12, 2012

Jun 11, 2012

  1. Timo Tijhof

    Merge pull request #188 from jquery/nginx

    Issue 174: Add NGINX support
    authored June 11, 2012
  2. Timo Tijhof

    CleanupAction: remove dead code, fix syntax error

    * swarm01: Error in doQuery: Unknown column 'useragent_id' in 'field list'
    
    * issue #185
    authored June 11, 2012
  3. Timo Tijhof

    Fix WebRequest::getBool (foo in &foo=&bar& should return true)

    * Removed WebRequest::hasKey which was used anywhere. getBool now
      works like hasKey.
    
    * Minor whitespace, documentation, messaging fixes
    authored June 11, 2012
  4. Timo Tijhof

    fix typo in HISTORY.md

    authored June 11, 2012

Jun 10, 2012

  1. Timo Tijhof

    Update job.js: Fix refresh bug

    Previously it only refreshed if there any cells in representing a run
    "in progress" or "scheduled".
    
    But there is 2 cases where this causes incorrect display:
    * The user is logged in and presses "Reset job".
    * The user is logged out and someone else does "Reset job" from another
      screen.
    
    In both situations does the table no longer refresh (because the job is
    completed), but the state has in fact changed.
    
    I considered moving the `if` to around the setTimeout invocation, but
    then the second case described above would still happen.
    authored June 10, 2012
  2. Timo Tijhof

    Slight refactor of getrun/saverun.

    * Issues:
     - fixes #189: Shouldn't distribute runs that are being run already
    
    * Misc.:
     - Remove redundant JOIN to `client` in CleanupAction. The client_id
       is right there in run_client, no need to filter or join.
       Presumably left from when it joined to client to get some other
       information.
       This will slightly improve performance of CleanupAction as well.
    authored June 10, 2012
  3. Timo Tijhof

    sql: index names should start with idx_

    All others do so already.
    authored June 10, 2012
  4. Timo Tijhof

    Merged README for NGINX into general one

    * Misc.:
     - EOF new line in nginx.conf
    authored June 10, 2012
  5. Timo Tijhof

    Merge branch 'master' of https://github.com/levidehaan/testswarm into…

    … levidehaan-master
    authored June 10, 2012
  6. Timo Tijhof

    Expose last ping time in UserAction

    * Also displayed on UserPage, naturally.
      Previously it was impossible to track how long a client has been
      idle (except that it is less than 5 minutes since other wise it would
      not be shown on the page at all and considered off line).
    
    * Misc.:
    - Re-order rows in testswarm.sql to be like the other tables
      (updated and created as last).
    authored June 10, 2012
Something went wrong with that request. Please try again.