def _setup_no_status(self):
     """Set up to mock lab status as unavailable."""
     global_config.global_config.get_config_value(
         'SERVER', 'hostname').AndReturn('cautotest')
     global_config.global_config.get_config_value(
         'CROS', 'lab_status_url').AndReturn(_FAKE_URL)
     site_utils._get_lab_status(_FAKE_URL).AndReturn(None)
    def _setup_lab_status(self, json_string):
        """Set up to mock a given lab status.

        @param json_string JSON string for the JSON object to return
                           from `_get_lab_status()`.

        """
        global_config.global_config.get_config_value(
            'SERVER', 'hostname').AndReturn('cautotest')
        global_config.global_config.get_config_value(
            'CROS', 'lab_status_url').AndReturn(_FAKE_URL)
        json_value = json.loads(json_string)
        site_utils._get_lab_status(_FAKE_URL).AndReturn(json_value)
 def test_success(self):
     """Test that successful calls to urlopen() succeed."""
     json_string = _OPEN_STATUS_VALUES[0]
     json_value = json.loads(json_string)
     urllib2.urlopen(mox.IgnoreArg()).AndReturn(
         _FakeURLResponse(200, json_string))
     self.mox.ReplayAll()
     result = site_utils._get_lab_status(_FAKE_URL)
     self.mox.VerifyAll()
     self.assertEqual(json_value, result)
 def test_failure_http_internal_error(self):
     """Test that there's a failure for a permanent HTTP error."""
     json_string = _OPEN_STATUS_VALUES[0]
     json_value = json.loads(json_string)
     for _ in range(site_utils._MAX_LAB_STATUS_ATTEMPTS):
         urllib2.urlopen(mox.IgnoreArg()).AndReturn(
             _FakeURLResponse(404, 'Not here, never gonna be'))
         time.sleep(mox.IgnoreArg()).InAnyOrder().AndReturn(None)
     self.mox.ReplayAll()
     result = site_utils._get_lab_status(_FAKE_URL)
     self.mox.VerifyAll()
     self.assertEqual(None, result)
 def test_failure_ioerror(self):
     """Test that there's a failure if urlopen() never succeeds."""
     json_string = _OPEN_STATUS_VALUES[0]
     json_value = json.loads(json_string)
     for _ in range(site_utils._MAX_LAB_STATUS_ATTEMPTS):
         urllib2.urlopen(mox.IgnoreArg()).AndRaise(
             IOError('Fake I/O error for a fake URL'))
         time.sleep(mox.IgnoreArg()).AndReturn(None)
     self.mox.ReplayAll()
     result = site_utils._get_lab_status(_FAKE_URL)
     self.mox.VerifyAll()
     self.assertEqual(None, result)
 def test_retry_http_internal_error(self):
     """Test that an HTTP error retries at least once."""
     json_string = _OPEN_STATUS_VALUES[0]
     json_value = json.loads(json_string)
     urllib2.urlopen(mox.IgnoreArg()).AndReturn(_FakeURLResponse(500, ''))
     time.sleep(mox.IgnoreArg()).AndReturn(None)
     urllib2.urlopen(mox.IgnoreArg()).AndReturn(
         _FakeURLResponse(200, json_string))
     self.mox.ReplayAll()
     result = site_utils._get_lab_status(_FAKE_URL)
     self.mox.VerifyAll()
     self.assertEqual(json_value, result)