class ContextManager

Constants

VARNISHTEST_FILE

Attributes

expected_cache_hits[W]

Server level expectations

expected_cache_misses[W]
expected_passed_requests[W]
expected_piped_requests[W]
expected_request_count[W]

Public Class Methods

instance() click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 13
def self.instance()
  # Get instance from class
  @instance ||= self.new()
end
reset!() click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 18
def self.reset!
  # Clear out the instance, start fresh
  @instance = nil
end

Public Instance Methods

client_expect(attribute, value) click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 33
def client_expect(attribute, value)
  @client_expectations ||= {}
  @client_expectations[attribute] = value
end
request(path, method) click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 28
def request(path, method)
  @requests ||= []
  @requests << VarnishtestRequest.new(path, method)
end
test!() click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 70
def test!
  File.open(VARNISHTEST_FILE, 'w') do |file|
    file.write(varnishtest_conf)
  end
  output = `varnishtest #{VARNISHTEST_FILE}`
  result = $? == 0

  File.open('varnishtest.out', 'w') do |file|
    file.write(output)
  end

  raise [
    output.split("\n").select{|line| line.match("---- v1")},
    "See #{VARNISHTEST_FILE} and varnishtest.err debuggin'"
  ].join("\n\n\n\n") unless result
end
varnishtest_conf() click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 38
  def varnishtest_conf
    return <<-eos
    varnishtest "This is my first test"

    server s1 {
      #{@requests.map{"rxreq\ntxresp -body \"hello world\""}.join("\naccept\n\n")}
    } -start

    varnish v1 -vcl {
      #{File.read(@vcl_file)}
    } -start

    client c1 {
      #{
        (@requests || []).map{|req| req.to_varnishtest}.join("\n\n")
      }

      #{
        (@client_expectations || []).map do |attribute, value|
          "expect #{attribute} == #{value}"
        end.join("\n")
      }
    } -run

    #{@expected_cache_hits.nil? ? "" : "varnish v1 -expect cache_hit == #{@expected_cache_hits}"}
    #{@expected_cache_misses.nil? ? "" : "varnish v1 -expect cache_miss == #{@expected_cache_misses}"}
    #{@expected_request_count.nil? ? "" : "varnish v1 -expect client_req == #{@expected_request_count}"}
    #{@expected_piped_requests.nil? ? "" : "varnish v1 -expect s_pipe == #{@expected_piped_requests}"}
    #{@expected_passed_requests.nil? ? "" : "varnish v1 -expect s_pass == #{@expected_passed_requests}"}
    eos
  end
vcl_file=(vcl_file) click to toggle source
# File lib/cucumber/varnishtest/context_manager.rb, line 23
def vcl_file=(vcl_file)
  @vcl_file = vcl_file
  raise "VCL file '#{vcl_file}' not found." unless File.exist?(vcl_file)
end