forked from GithubBackups/healthchecks
Webhooks have timeout
This commit is contained in:
parent
d81555687e
commit
52c6beccef
@ -118,8 +118,13 @@ class Channel(models.Model):
|
||||
emails.alert(self.value, ctx)
|
||||
n.save()
|
||||
elif self.kind == "webhook" and check.status == "down":
|
||||
r = requests.get(self.value)
|
||||
n.status = r.status_code
|
||||
try:
|
||||
r = requests.get(self.value, timeout=5)
|
||||
n.status = r.status_code
|
||||
except requests.exceptions.Timeout:
|
||||
# Well, we tried
|
||||
pass
|
||||
|
||||
n.save()
|
||||
elif self.kind == "pd":
|
||||
if check.status == "down":
|
||||
|
@ -1,14 +1,15 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.test import TestCase
|
||||
from mock import patch
|
||||
from requests.exceptions import ReadTimeout
|
||||
|
||||
from hc.api.models import Channel, Check
|
||||
from hc.api.models import Channel, Check, Notification
|
||||
|
||||
|
||||
class NotifyTestCase(TestCase):
|
||||
|
||||
@patch("hc.api.models.requests")
|
||||
def test_webhook(self, mock_requests):
|
||||
@patch("hc.api.models.requests.get")
|
||||
def test_webhook(self, mock_get):
|
||||
alice = User(username="alice")
|
||||
alice.save()
|
||||
|
||||
@ -21,4 +22,21 @@ class NotifyTestCase(TestCase):
|
||||
channel.checks.add(check)
|
||||
|
||||
channel.notify(check)
|
||||
mock_requests.get.assert_called_with(u"http://example")
|
||||
mock_get.assert_called_with(u"http://example", timeout=5)
|
||||
|
||||
@patch("hc.api.models.requests.get", side_effect=ReadTimeout)
|
||||
def test_it_handles_requests_exceptions(self, mock_get):
|
||||
alice = User(username="alice")
|
||||
alice.save()
|
||||
|
||||
check = Check()
|
||||
check.status = "down"
|
||||
check.save()
|
||||
|
||||
channel = Channel(user=alice, kind="webhook", value="http://example")
|
||||
channel.save()
|
||||
channel.checks.add(check)
|
||||
|
||||
channel.notify(check)
|
||||
|
||||
assert Notification.objects.count() == 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user