-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Analytics] Suivi de l'Apdex et des requêtes non abouties (Sentry) #5162
base: master
Are you sure you want to change the base?
Conversation
63d738d
to
9da79db
Compare
9da79db
to
f63200c
Compare
f63200c
to
3a07f6c
Compare
3a07f6c
to
0d644fb
Compare
tests/analytics/conftest.py
Outdated
@pytest.fixture | ||
def sentry_respx_mock(respx_mock): | ||
url = f"{settings.API_SENTRY_BASE_URL}/organizations/{settings.API_SENTRY_ORG_NAME}/events/" | ||
respx_mock.get(url).mock(return_value=httpx.Response(200, json=_events_for_metrics_endpoint_json_response())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Peut-être juste renvoyer respx_mock.get(url)
et laisser les tests explicitement définir ce que renvoie l'API ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 pour retourner la Route
créée par respx, ça permettra à chaque test de surcharger le retour si besoin.
Après sur le fait de mettre un retour par défaut, je dirais que ça dépend du nombre de test qui ont un intérêt à utiliser la valeur par défaut et/ou si celle-ci est assez large/correcte pour être utilisée par défaut.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seuls trois tests utilisent cette fixture et toujours avec ce payload-là. Le répéter dans chaque test me semble un peu en avance de phase. Il sera toujours possible de changer par la suite si le besoin s'en fait sentir.
tests/analytics/conftest.py
Outdated
@pytest.fixture | ||
def sentry_respx_mock(respx_mock): | ||
url = f"{settings.API_SENTRY_BASE_URL}/organizations/{settings.API_SENTRY_ORG_NAME}/events/" | ||
respx_mock.get(url).mock(return_value=httpx.Response(200, json=_events_for_metrics_endpoint_json_response())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 pour retourner la Route
créée par respx, ça permettra à chaque test de surcharger le retour si besoin.
Après sur le fait de mettre un retour par défaut, je dirais que ça dépend du nombre de test qui ont un intérêt à utiliser la valeur par défaut et/ou si celle-ci est assez large/correcte pour être utilisée par défaut.
tests/utils/apis/test_sentry_api.py
Outdated
def test_request(respx_mock): | ||
url = f"{settings.API_SENTRY_BASE_URL}/organizations/{settings.API_SENTRY_ORG_NAME}/events/" | ||
respx_mock.get(url).mock(return_value=httpx.Response(200, json=_events_for_metrics_endpoint_json_response())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est pas équivalent à ce que fait sentry_respx_mock
? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si mais je n'arrive pas à réutiliser la fixture car elle a été définie dans le module analytics
et non au global. Ça m'ennuyait de polluer le conftest.py global pour trois petits tests et les quelques solutions que j'ai pu trouver sur les internets me semblent vraiment compliquées pour pas grand chose.
Mais je suis preneuse de toute bonne idée car moi aussi ça me gêne ! 💡
assert settings.API_SENTRY_STATS_TOKEN in response.request.headers["authorization"] | ||
assert urllib.parse.quote(start.isoformat()) in str(response.url) | ||
assert urllib.parse.quote(end.isoformat()) in str(response.url) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PI, respx permet de ne créer une route qui ne répond que quand certain prédicat sont vrai, par exemple un paramètre GET ou un header, ça permet ensuite de choper les oublis via assert_all_called ou assert_all_mocked ;). #CeintureBretelles
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai fait une proposition dans le dernier commit.
0d644fb
to
80c4fcd
Compare
Afin de suivre l'impact technique de nos actions, nous récoltons l'apdex et le taux de requêtes en échec de Sentry et les conservons dans l'app Analytics.
cf #5162