Class: EventMachine::HttpTest::TestRunner

Inherits:
Object
  • Object
show all
Includes:
EM::Deferrable
Defined in:
lib/em-http-test/test-runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(f) ⇒ TestRunner

Returns a new instance of TestRunner.



14
15
16
17
18
19
# File 'lib/em-http-test/test-runner.rb', line 14

def initialize(f)
	@fiber = f
	@testreq = @fiber.resume # first call, so no data to test
	@running = true
	process
end

Instance Method Details

#abortObject



21
22
23
# File 'lib/em-http-test/test-runner.rb', line 21

def abort
	@running = false
end

#handleResponse(r) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/em-http-test/test-runner.rb', line 40

def handleResponse(r)
	if r.response_header.status >= 400
		self.fail("HTTP error #{r.response_header.status} calling #{r.last_effective_url}")
		return
	end
	
	begin
		@testreq = @fiber.resume r
		case when @testreq.nil?
			self.succeed("Test is done")
		else
			self.process
		end
	rescue TestFailure => e
		self.fail(e.message)
	end
end

#processObject

Run a step of the test by calling the test generated URL and submitting the results to be processed



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/em-http-test/test-runner.rb', line 27

def process
	unless @fiber.alive? and @running
		# if the fiber has completed, then we succeeded
		self.succeed()
		return
	end
	
	# do another run
	request = @testreq.toRequest
	request.errback { |r| self.handleResponse(r) }
	request.callback { |r| self.handleResponse(r) }
end