Class: Webrick::VCR
- Inherits:
-
Object
- Object
- Webrick::VCR
- Defined in:
- lib/nitro/adapter/webrick/vcr.rb
Overview
VCR functionality, typically used for proxy based regression testing.
Class Method Summary collapse
-
.playback(filename = 'session.yaml') ⇒ Object
Playback a recorded session.
-
.record(filename = 'session.yaml') ⇒ Object
Enables session recording.
Class Method Details
.playback(filename = 'session.yaml') ⇒ Object
Playback a recorded session. Typically used for testing.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/nitro/adapter/webrick/vcr.rb', line 44 def playback(filename = 'session.yaml') Logger.info "Playing back application server session from '#{filename}'." $playback_session = YAML.load_file(filename) $playback_exception_count = 0 WEBrick::HTTPServer.class_eval %{ def start(&block) run(nil) end def run(sock) while true delta, req, res = $playback_session.shift if delta sleep(delta) begin service(req, res) rescue Object => ex $playback_exception_count += 1 p '---', ex end else return end end end } at_exit do puts "\n\n" puts "Playback raised #$playback_exception_count exceptions.\n" puts "\n" end end |
.record(filename = 'session.yaml') ⇒ Object
Enables session recording. The recorded data can be used for automatic app testing by means of the playback mode.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/nitro/adapter/webrick/vcr.rb', line 15 def record(filename = 'session.yaml') Logger.info "Recording application server session to '#{filename}'." require 'facets/core/file/self/create' $record_session = [] $last_record_time = Time.now Nitro::WebrickAdapter.class_eval %{ def do_GET(req, res) record_context(req, res) handle(req, res) end alias_method :do_POST, :do_GET def record_context(req, res) delta = Time.now - $last_record_time $last_record_time = Time.now $record_session << [delta, req, res] end } at_exit do File.create(filename, YAML.dump($record_session)) end end |