Skip to content

Instantly share code, notes, and snippets.

@dlecocq
Last active December 17, 2015 11:29
Show Gist options
  • Save dlecocq/5602157 to your computer and use it in GitHub Desktop.
Save dlecocq/5602157 to your computer and use it in GitHub Desktop.
PATH
remote: .
specs:
qless (0.9.2)
redis (>= 2.2)
GEM
remote: http://rubygems.org/
specs:
addressable (2.3.4)
capybara (1.1.4)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (~> 2.0)
xpath (~> 0.1.4)
childprocess (0.3.9)
ffi (~> 1.0, >= 1.0.11)
columnize (0.3.6)
daemons (1.1.9)
debugger (1.5.0)
columnize (>= 0.3.1)
debugger-linecache (~> 1.2.0)
debugger-ruby_core_source (~> 1.2.0)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.2.0)
diff-lcs (1.2.4)
eventmachine (1.0.3)
faraday (0.8.7)
multipart-post (~> 1.1)
faye-websocket (0.5.0)
eventmachine (>= 0.12.0)
websocket-driver
ffi (1.8.1)
hashie (2.0.4)
http_parser.rb (0.5.3)
launchy (2.1.2)
addressable (~> 2.3)
mime-types (1.23)
multi_json (1.7.3)
multipart-post (1.2.0)
nokogiri (1.5.9)
poltergeist (1.0.2)
capybara (~> 1.1)
childprocess (~> 0.3)
faye-websocket (~> 0.4, >= 0.4.4)
http_parser.rb (~> 0.5.3)
multi_json (~> 1.0)
rack (1.5.2)
rack-protection (1.5.0)
rack
rack-test (0.6.2)
rack (>= 1.0)
rake (10.0.4)
redis (3.0.4)
rspec (2.13.0)
rspec-core (~> 2.13.0)
rspec-expectations (~> 2.13.0)
rspec-mocks (~> 2.13.0)
rspec-core (2.13.1)
rspec-expectations (2.13.0)
diff-lcs (>= 1.1.3, < 2.0)
rspec-fire (1.1.3)
rspec (~> 2.11)
rspec-mocks (2.13.1)
rubyzip (0.9.9)
selenium-webdriver (2.32.1)
childprocess (>= 0.2.5)
multi_json (~> 1.0)
rubyzip
websocket (~> 1.0.4)
sentry-raven (0.4.6)
faraday (>= 0.7.6)
hashie
multi_json (~> 1.0)
uuidtools
simplecov (0.6.4)
multi_json (~> 1.0)
simplecov-html (~> 0.5.3)
simplecov-html (0.5.3)
sinatra (1.3.6)
rack (~> 1.4)
rack-protection (~> 1.3)
tilt (~> 1.3, >= 1.3.3)
thin (1.5.1)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
tilt (1.4.0)
uuidtools (2.1.4)
vegas (0.1.11)
rack (>= 1.0.0)
websocket (1.0.7)
websocket-driver (0.1.0)
xpath (0.1.4)
nokogiri (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
capybara (~> 1.1.2)
debugger
launchy (~> 2.1.0)
poltergeist (~> 1.0)
qless!
rake (~> 10.0)
rspec (~> 2.12)
rspec-fire (~> 1.1)
sentry-raven (~> 0.4)
simplecov (~> 0.6.2)
sinatra (~> 1.3.2)
thin
vegas (~> 0.1.11)
5) Qless::Server can track a job
Failure/Error: visit '/track'
NoMethodError:
undefined method `parser' for Faye::WebSocket:Class
# ./spec/integration/server_spec.rb:260:in `block (2 levels) in <module:Qless>'
6) Qless::Server can retry a single job
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:291:in `block (2 levels) in <module:Qless>'
7) Qless::Server can display, cancel, move recurring jobs
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:675:in `block (2 levels) in <module:Qless>'
8) Qless::Server can visit the tracked page
Failure/Error: visit '/track'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:162:in `block (2 levels) in <module:Qless>'
9) Qless::Server can visit the failed page
Failure/Error: visit '/failed'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:379:in `block (2 levels) in <module:Qless>'
10) Qless::Server can sort failed groupings by the number of affected jobs
Failure/Error: visit "/"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:585:in `block (2 levels) in <module:Qless>'
11) Qless::Server can see the root-level summary
Failure/Error: visit '/'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:110:in `block (2 levels) in <module:Qless>'
12) Qless::Server can visit each top-nav tab
Failure/Error: visit '/'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:35:in `block (2 levels) in <module:Qless>'
13) Qless::Server can add tags to a recurring job
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:718:in `block (2 levels) in <module:Qless>'
14) Qless::Server can cancel a single job
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:307:in `block (2 levels) in <module:Qless>'
15) Qless::Server can move a job
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:273:in `block (2 levels) in <module:Qless>'
16) Qless::Server can change a job's priority
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:484:in `block (2 levels) in <module:Qless>'
17) Qless::Server can change recurring job priorities
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:701:in `block (2 levels) in <module:Qless>'
18) Qless::Server can remove tags it has just added
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:547:in `block (2 levels) in <module:Qless>'
19) Qless::Server can search by tag
Failure/Error: visit '/tag?tag=foo'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:346:in `block (2 levels) in <module:Qless>'
20) Qless::Server can visit the various /queues/* endpoints
Failure/Error: visit '/queues/testing/waiting'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:605:in `block (2 levels) in <module:Qless>'
21) Qless::Server can paginate jobs on a state filter tab
Failure/Error: visit "/queues/#{q.name}/depends"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:104:in `block (2 levels) in <module:Qless>'
22) Qless::Server can paginate the failed jobs page
Failure/Error: visit '/failed/group'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:91:in `block (2 levels) in <module:Qless>'
23) Qless::Server can retry a group of failed jobs
Failure/Error: visit '/failed'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:406:in `block (2 levels) in <module:Qless>'
24) Qless::Server can remove tags
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:530:in `block (2 levels) in <module:Qless>'
25) Qless::Server can display the correct buttons for jobs
Failure/Error: visit "/jobs/#{job.jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:214:in `block (2 levels) in <module:Qless>'
26) Qless::Server can cancel a group of failed jobs
Failure/Error: visit '/failed'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:446:in `block (2 levels) in <module:Qless>'
27) Qless::Server can add tags to a job
Failure/Error: visit "/jobs/#{jid}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:501:in `block (2 levels) in <module:Qless>'
28) Qless::Server can visit the configuration
Failure/Error: visit '/config'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:326:in `block (2 levels) in <module:Qless>'
29) Qless::Server shows the state of tracked jobs in the overview
Failure/Error: visit '/'
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:632:in `block (2 levels) in <module:Qless>'
30) Qless::Server can display tags and priorities for jobs
Failure/Error: visit "/jobs/#{q.put(Qless::Job, {})}"
NoMethodError:
undefined method `encode' for nil:NilClass
# ./spec/integration/server_spec.rb:240:in `block (2 levels) in <module:Qless>'
@myronmarston
Copy link

I pulled your latest, and now I get all green for the server specs:

Qless::Server
  can retry a single job
  can add tags to a job
  can add tags to a recurring job
  can display, cancel, move recurring jobs
  can display the correct buttons for jobs
  can change recurring job priorities
  can visit each top-nav tab
  can cancel a group of failed jobs
  can visit the tracked page
  can remove tags
  can track a job
  can visit the page for a specific job
  can visit the various /queues/* endpoints
  can retry a group of failed jobs
  can cancel a single job
  can visit the configuration
  can move a job
  can visit the failed page
  can display tags and priorities for jobs
  can paginate a group of tagged jobs
  shows the state of tracked jobs in the overview
  can paginate the failed jobs page
  can see the root-level summary
  can search by tag
  can change a job's priority
  can remove tags it has just added
  can paginate jobs on a state filter tab
  can sort failed groupings by the number of affected jobs

Rack Tests
  can access the JSON endpoints for queue sizes
  can access the JSON endpoint for failures

Finished in 11.5 seconds
30 examples, 0 failures

However, when I run everything with bin/rake I get 10 failures (but none from the server spec):

➜  qless git:(unified) ✗ bin/rake
/Users/myron/.rvm/rubies/ruby-1.9.3-p327/bin/ruby -Ispec -rsimplecov_setup -S rspec ./spec/integration/lua_script_spec.rb ./spec/integration/qless_spec.rb ./spec/integration/server_spec.rb ./spec/integration/worker_spec.rb ./spec/unit/job_reservers/ordered_spec.rb ./spec/unit/job_reservers/round_robin_spec.rb ./spec/unit/job_reservers/shuffled_round_robin_spec.rb ./spec/unit/job_spec.rb ./spec/unit/middleware/redis_reconnect_spec.rb ./spec/unit/middleware/retry_exceptions_spec.rb ./spec/unit/middleware/sentry_spec.rb ./spec/unit/qless_spec.rb ./spec/unit/queue_spec.rb ./spec/unit/worker_spec.rb --profile --format progress
Run options: include {:f=>true}

All examples were filtered out; ignoring {:f=>true}
....................................................F..F....F......F.......F......F.............................................................................................................................................FFFF........................................................................

Failures:

  1) Qless::Job#retry does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  2) Qless::Job#retry does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  3) Qless::Job#move does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  4) Qless::Job#complete does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  5) Qless::Job#cancel does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  6) Qless::Job#fail does not update #state_changed? if there is a redis connection error
     Failure/Error: expect {
       expected Qless::MyCustomError but nothing was raised
     # ./spec/unit/job_spec.rb:124:in `block (4 levels) in <module:Qless>'

  7) Worker integration when a job times out fails the job with an error containing the job backtrace
     Failure/Error: expect(job.state).to eq("failed")

       expected: "failed"
            got: "complete"

       (compared using ==)
     # ./spec/integration/worker_spec.rb:135:in `block (3 levels) in <top (required)>'

  8) Worker integration when a job times out gracefully handles it if the child process dies before returning a backtrace
     Failure/Error: expect(job.state).to eq("failed")

       expected: "failed"
            got: "complete"

       (compared using ==)
     # ./spec/integration/worker_spec.rb:155:in `block (3 levels) in <top (required)>'

  9) Worker integration when a job times out gracefully handles it if the child process is not listening to know to return the backtrace
     Failure/Error: expect(job.state).to eq("failed")

       expected: "failed"
            got: "complete"

       (compared using ==)
     # ./spec/integration/worker_spec.rb:145:in `block (3 levels) in <top (required)>'

  10) Worker integration when a job times out kills the child process
     Failure/Error: expect(client.redis.get("slow_job_completed")).to be_nil
       expected: nil
            got: "true"
     # ./spec/integration/worker_spec.rb:128:in `block (3 levels) in <top (required)>'

Finished in 39.39 seconds
300 examples, 10 failures

Failed examples:

rspec ./spec/unit/job_spec.rb:120 # Qless::Job#retry does not update #state_changed? if there is a redis connection error
rspec ./spec/unit/job_spec.rb:120 # Qless::Job#retry does not update #state_changed? if there is a redis connection error
rspec ./spec/unit/job_spec.rb:120 # Qless::Job#move does not update #state_changed? if there is a redis connection error
rspec ./spec/unit/job_spec.rb:120 # Qless::Job#complete does not update #state_changed? if there is a redis connection error
rspec ./spec/unit/job_spec.rb:120 # Qless::Job#cancel does not update #state_changed? if there is a redis connection error
rspec ./spec/unit/job_spec.rb:120 # Qless::Job#fail does not update #state_changed? if there is a redis connection error
rspec ./spec/integration/worker_spec.rb:131 # Worker integration when a job times out fails the job with an error containing the job backtrace
rspec ./spec/integration/worker_spec.rb:149 # Worker integration when a job times out gracefully handles it if the child process dies before returning a backtrace
rspec ./spec/integration/worker_spec.rb:140 # Worker integration when a job times out gracefully handles it if the child process is not listening to know to return the backtrace
rspec ./spec/integration/worker_spec.rb:126 # Worker integration when a job times out kills the child process

Randomized with seed 42606

Coverage report generated for RSpec to /Users/myron/code/qless/coverage. 857 / 960 LOC (89.27%) covered.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment