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)
|
emails.alert(self.value, ctx)
|
||||||
n.save()
|
n.save()
|
||||||
elif self.kind == "webhook" and check.status == "down":
|
elif self.kind == "webhook" and check.status == "down":
|
||||||
r = requests.get(self.value)
|
try:
|
||||||
|
r = requests.get(self.value, timeout=5)
|
||||||
n.status = r.status_code
|
n.status = r.status_code
|
||||||
|
except requests.exceptions.Timeout:
|
||||||
|
# Well, we tried
|
||||||
|
pass
|
||||||
|
|
||||||
n.save()
|
n.save()
|
||||||
elif self.kind == "pd":
|
elif self.kind == "pd":
|
||||||
if check.status == "down":
|
if check.status == "down":
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from mock import patch
|
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):
|
class NotifyTestCase(TestCase):
|
||||||
|
|
||||||
@patch("hc.api.models.requests")
|
@patch("hc.api.models.requests.get")
|
||||||
def test_webhook(self, mock_requests):
|
def test_webhook(self, mock_get):
|
||||||
alice = User(username="alice")
|
alice = User(username="alice")
|
||||||
alice.save()
|
alice.save()
|
||||||
|
|
||||||
@ -21,4 +22,21 @@ class NotifyTestCase(TestCase):
|
|||||||
channel.checks.add(check)
|
channel.checks.add(check)
|
||||||
|
|
||||||
channel.notify(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