Skip to content

Commit

Permalink
Merge pull request #245 from nolar/activity-ignore-errors
Browse files Browse the repository at this point in the history
Ignore errors marked for ignoring in the activities (auth piggybacking)
  • Loading branch information
nolar authored Nov 20, 2019
2 parents 977553b + bcee0d7 commit dc804e0
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 30 deletions.
2 changes: 1 addition & 1 deletion kopf/reactor/handling.py
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ async def _execute_handler(
except Exception as e:
if errors == registries.ErrorsMode.IGNORED:
logger.exception(f"Handler {handler.id!r} failed with an exception. Will ignore.")
return states.HandlerOutcome(final=True, exception=e)
return states.HandlerOutcome(final=True)
elif errors == registries.ErrorsMode.TEMPORARY:
logger.exception(f"Handler {handler.id!r} failed with an exception. Will retry.")
return states.HandlerOutcome(final=False, exception=e, delay=cooldown)
Expand Down
31 changes: 2 additions & 29 deletions tests/authentication/test_login.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
Remember: We do not test the clients, we assume they work when used properly.
We test our own functions here, and check if the clients were called.
"""
import pytest

import pykube
from kopf import login, LoginError

from kopf import login


def test_client_login_works_incluster(login_mocks, kubernetes):
Expand Down Expand Up @@ -85,29 +84,3 @@ def test_client_is_independent_of_pykube_viaconfig(login_mocks, no_pykube, kuber

assert login_mocks.client_in_cluster.called
assert login_mocks.client_from_file.called


# TODO: do we actually fail on every method failure? Or should we use another one?
def test_login_fails_on_errors_in_pykube(login_mocks, any_kubernetes):
login_mocks.pykube_in_cluster.side_effect = FileNotFoundError
login_mocks.pykube_from_file.side_effect = FileNotFoundError

with pytest.raises(LoginError):
login()

assert login_mocks.pykube_in_cluster.called
assert login_mocks.pykube_from_file.called


def test_login_fails_on_errors_in_client(login_mocks, kubernetes):
login_mocks.client_in_cluster.side_effect = kubernetes.config.ConfigException
login_mocks.client_from_file.side_effect = kubernetes.config.ConfigException

with pytest.raises(LoginError):
login()

assert login_mocks.pykube_in_cluster.called
assert not login_mocks.pykube_from_file.called

assert login_mocks.client_in_cluster.called
assert login_mocks.client_from_file.called
8 changes: 8 additions & 0 deletions tests/persistence/test_outcomes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
from kopf.reactor.states import HandlerOutcome


def test_creation_for_ignored_handlers():
outcome = HandlerOutcome(final=True)
assert outcome.final
assert outcome.delay is None
assert outcome.result is None
assert outcome.exception is None


def test_creation_for_results():
result = HandlerResult(object())
outcome = HandlerOutcome(final=True, result=result)
Expand Down

0 comments on commit dc804e0

Please sign in to comment.