import pytest

import elastic
import watchdog as wd


def _post_results(dog, request):
    elastic.post(dog.seconds_blocked, request)


@pytest.fixture
def watchdog(request):
    dog = wd.Watchdog()
    dog_d = dog.start()
    request.addfinalizer(lambda: _post_results(dog, request))

    def _run(deferred_fun):
        deferred_fun().addCallback(lambda _: dog.stop())
        return dog_d
    return _run