Sha256: 3827791a1e462b1386cffd99c8eb7b0f026880c9e4d827acbfe15bee02d0c50c
Contents?: true
Size: 1.86 KB
Versions: 3
Compression:
Stored size: 1.86 KB
Contents
require "net/http" module FakeSQS class TestIntegration attr_reader :options def initialize(options = {}) @options = options end def host option :sqs_endpoint end def port option :sqs_port end def start start! unless up? reset end def start! args = [ binfile, "-p", port.to_s, verbose, logging, "--database", database, { :out => out, :err => out } ].flatten.compact @pid = Process.spawn(*args) wait_until_up end def stop if @pid Process.kill("INT", @pid) Process.waitpid(@pid) @pid = nil else $stderr.puts "FakeSQS is not running" end end def reset connection.delete("/") end def expire connection.put("/", "") end def url "http://#{host}:#{port}" end def up? @pid && connection.get("/").code.to_s == "200" rescue Errno::ECONNREFUSED false end private def option(key) options.fetch(key) { AWS.config.public_send(key) } end def database options.fetch(:database) end def verbose if debug? "--verbose" else "--no-verbose" end end def logging if (file = ENV["SQS_LOG"] || options[:log]) [ "--log", file ] else [] end end def wait_until_up(deadline = Time.now + 2) fail "FakeSQS didn't start in time" if Time.now > deadline unless up? sleep 0.01 wait_until_up(deadline) end end def binfile File.expand_path("../../../bin/fake_sqs", __FILE__) end def out if debug? :out else "/dev/null" end end def connection @connection ||= Net::HTTP.new(host, port) end def debug? ENV["DEBUG"].to_s == "true" || options[:debug] end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fake_sqs-0.1.0 | lib/fake_sqs/test_integration.rb |
fake_sqs-0.0.11 | lib/fake_sqs/test_integration.rb |
fake_sqs-0.0.10 | lib/fake_sqs/test_integration.rb |