text: import http.client as httplib
  import multiprocessing
  import pytest
  from xmlrpc.client import ServerProxy
  from xmlrpc.server import SimpleXMLRPCServer
  
  requests = pytest.importorskip("requests")
  
  import vcr  # NOQA
  
  
  def test_domain_redirect():
      """Ensure that redirects across domains are considered unique"""
      # In this example, seomoz.org redirects to moz.com, and if those
      # requests are considered identical, then we'll be stuck in a redirect
      # loop.
      url = "http://seomoz.org/"
      with vcr.use_cassette("tests/fixtures/wild/domain_redirect.yaml") as cass:
          requests.get(url, headers={"User-Agent": "vcrpy-test"})
          # Ensure that we've now served two responses. One for the original
          # redirect, and a second for the actual fetch
          assert len(cass) == 2
  
  
  def test_flickr_multipart_upload(httpbin, tmpdir):
      """
      The python-flickr-api project does a multipart
      upload that confuses vcrpy
      """
  
      def _pretend_to_be_flickr_library():
          content_type, body = "text/plain", "HELLO WORLD"
          h = httplib.HTTPConnection(httpbin.host, httpbin.port)
          headers = {"Content-Type": content_type, "content-length": str(len(body))}
          h.request("POST", "/post/", headers=headers)
          h.send(body)
          r = h.getresponse()
          data = r.read()
          h.close()
  
          return data
  
      testfile = str(tmpdir.join("flickr.yml"))
      with vcr.use_cassette(testfile) as cass:
          _pretend_to_be_flickr_library()
          assert len(cass) == 1
  
      with vcr.use_cassette(testfile) as cass:
          assert len(cass) == 1
          _pretend_to_be_flickr_library()
          assert cass.play_count == 1
  
  
  def test_flickr_should_respond_with_200(tmpdir):
      testfile = str(tmpdir.join("flickr.yml"))
      with vcr.use_cassette(testfile):
          r = requests.post("https://api.flickr.com/services/upload", verify=False)
          assert r.status_code == 200
  
  
  def test_cookies(tmpdir, httpbin):
      testfile = str(tmpdir.join("cookies.yml"))
      with vcr.use_cassette(testfile):
          s = requests.Session()
          s.get(httpbin.url + "/cookies/set?k1=v1&k2=v2")
  
          r2 = s.get(httpbin.url + "/cookies")
          assert len(r2.json()["cookies"]) == 2
  
  
  def test_amazon_doctype(tmpdir):
      # amazon gzips its homepage.  For some reason, in requests 2.7, it's not
      # getting gunzipped.
      with vcr.use_cassette(str(tmpdir.join("amz.yml"))):
          r = requests.get("http://www.amazon.com", verify=False)
      assert "html" in r.text
  
  
  def start_rpc_server(q):
      httpd = SimpleXMLRPCServer(("127.0.0.1", 0))
      httpd.register_function(pow)
      q.put("http://{}:{}".format(*httpd.server_address))
      httpd.serve_forever()
  
  
  @pytest.yield_fixture(scope="session")
  def rpc_server():
      q = multiprocessing.Queue()
      proxy_process = multiprocessing.Process(target=start_rpc_server, args=(q,))
      try:
          proxy_process.start()
          yield q.get()
      finally:
          proxy_process.terminate()
  
  
  def test_xmlrpclib(tmpdir, rpc_server):
      with vcr.use_cassette(str(tmpdir.join("xmlrpcvideo.yaml"))):
          roundup_server = ServerProxy(rpc_server, allow_none=True)
          original_schema = roundup_server.pow(2, 4)
  
      with vcr.use_cassette(str(tmpdir.join("xmlrpcvideo.yaml"))):
          roundup_server = ServerProxy(rpc_server, allow_none=True)
          second_schema = roundup_server.pow(2, 4)
  
      assert original_schema == second_schema
  