|
1 | 1 | import time |
2 | 2 | from datetime import datetime, timedelta, timezone |
3 | | -from typing import Any |
4 | 3 | from unittest import mock |
5 | 4 | from unittest.mock import ANY, MagicMock, patch |
6 | 5 |
|
@@ -1353,229 +1352,6 @@ def test_mobile_performance_calculate_score(default_project) -> None: |
1353 | 1352 | } |
1354 | 1353 |
|
1355 | 1354 |
|
1356 | | -@django_db_all |
1357 | | -@cell_silo_test |
1358 | | -@pytest.mark.parametrize("passive", [False, True]) |
1359 | | -def test_project_config_cardinality_limits( |
1360 | | - default_project: Project, insta_snapshot: InstaSnapshotter, passive: bool |
1361 | | -) -> None: |
1362 | | - options: dict[Any, Any] = { |
1363 | | - "relay.cardinality-limiter.mode": "enabled", |
1364 | | - "sentry-metrics.cardinality-limiter.limits.transactions.per-org": [ |
1365 | | - {"window_seconds": 1000, "granularity_seconds": 100, "limit": 10} |
1366 | | - ], |
1367 | | - "sentry-metrics.cardinality-limiter.limits.sessions.per-org": [ |
1368 | | - {"window_seconds": 2000, "granularity_seconds": 200, "limit": 20} |
1369 | | - ], |
1370 | | - "sentry-metrics.cardinality-limiter.limits.spans.per-org": [ |
1371 | | - {"window_seconds": 3000, "granularity_seconds": 300, "limit": 30} |
1372 | | - ], |
1373 | | - "sentry-metrics.cardinality-limiter.limits.custom.per-org": [ |
1374 | | - {"window_seconds": 4000, "granularity_seconds": 400, "limit": 40} |
1375 | | - ], |
1376 | | - "sentry-metrics.cardinality-limiter.limits.generic-metrics.per-org": [ |
1377 | | - {"window_seconds": 5000, "granularity_seconds": 500, "limit": 50} |
1378 | | - ], |
1379 | | - "sentry-metrics.cardinality-limiter.limits.profiles.per-org": [ |
1380 | | - {"window_seconds": 3600, "granularity_seconds": 600, "limit": 60} |
1381 | | - ], |
1382 | | - } |
1383 | | - |
1384 | | - if passive: |
1385 | | - options["relay.cardinality-limiter.passive-limits-by-org"] = { |
1386 | | - str(default_project.organization.id): [ |
1387 | | - "sessions", |
1388 | | - "transactions", |
1389 | | - "spans", |
1390 | | - "profiles", |
1391 | | - ] |
1392 | | - } |
1393 | | - |
1394 | | - options["relay.cardinality-limiter.limits"] = [ |
1395 | | - { |
1396 | | - "rollout_rate": 0, |
1397 | | - "limit": { |
1398 | | - "id": "test1", |
1399 | | - "window": {"windowSeconds": 7000, "granularitySeconds": 700}, |
1400 | | - "limit": 70, |
1401 | | - "scope": "name", |
1402 | | - }, |
1403 | | - }, |
1404 | | - { |
1405 | | - "rollout_rate": 1, |
1406 | | - "limit": { |
1407 | | - "id": "test2", |
1408 | | - "window": {"windowSeconds": 8000, "granularitySeconds": 800}, |
1409 | | - "limit": 80, |
1410 | | - "scope": "name", |
1411 | | - "report": True, |
1412 | | - }, |
1413 | | - }, |
1414 | | - ] |
1415 | | - |
1416 | | - default_project.update_option( |
1417 | | - "relay.cardinality-limiter.limits", |
1418 | | - [ |
1419 | | - { |
1420 | | - "limit": { |
1421 | | - "id": "test3", |
1422 | | - "window": {"windowSeconds": 9000, "granularitySeconds": 900}, |
1423 | | - "limit": 90, |
1424 | | - "scope": "name", |
1425 | | - } |
1426 | | - } |
1427 | | - ], |
1428 | | - ) |
1429 | | - |
1430 | | - default_project.organization.update_option( |
1431 | | - "relay.cardinality-limiter.limits", |
1432 | | - [ |
1433 | | - { |
1434 | | - "limit": { |
1435 | | - "id": "test4", |
1436 | | - "window": {"windowSeconds": 10000, "granularitySeconds": 1000}, |
1437 | | - "limit": 100, |
1438 | | - "scope": "name", |
1439 | | - } |
1440 | | - } |
1441 | | - ], |
1442 | | - ) |
1443 | | - |
1444 | | - with override_options(options): |
1445 | | - project_cfg = get_project_config(default_project) |
1446 | | - |
1447 | | - cfg = project_cfg.to_dict() |
1448 | | - _validate_project_config(cfg["config"]) |
1449 | | - |
1450 | | - insta_snapshot(cfg["config"]["metrics"]) |
1451 | | - |
1452 | | - |
1453 | | -@django_db_all |
1454 | | -@cell_silo_test |
1455 | | -def test_project_config_cardinality_limits_project_options_override_other_options( |
1456 | | - default_project, |
1457 | | -) -> None: |
1458 | | - options: dict[Any, Any] = { |
1459 | | - "relay.cardinality-limiter.mode": "enabled", |
1460 | | - "sentry-metrics.cardinality-limiter.limits.transactions.per-org": None, |
1461 | | - "sentry-metrics.cardinality-limiter.limits.sessions.per-org": None, |
1462 | | - "sentry-metrics.cardinality-limiter.limits.spans.per-org": None, |
1463 | | - "sentry-metrics.cardinality-limiter.limits.custom.per-org": None, |
1464 | | - "sentry-metrics.cardinality-limiter.limits.generic-metrics.per-org": None, |
1465 | | - "sentry-metrics.cardinality-limiter.limits.profiles.per-org": None, |
1466 | | - } |
1467 | | - |
1468 | | - options["relay.cardinality-limiter.limits"] = [ |
1469 | | - { |
1470 | | - "limit": { |
1471 | | - "id": "test1", |
1472 | | - "window": {"windowSeconds": 1000, "granularitySeconds": 100}, |
1473 | | - "limit": 10, |
1474 | | - "scope": "name", |
1475 | | - }, |
1476 | | - }, |
1477 | | - ] |
1478 | | - |
1479 | | - default_project.organization.update_option( |
1480 | | - "relay.cardinality-limiter.limits", |
1481 | | - [ |
1482 | | - { |
1483 | | - "limit": { |
1484 | | - "id": "test1", |
1485 | | - "window": {"windowSeconds": 2000, "granularitySeconds": 200}, |
1486 | | - "limit": 20, |
1487 | | - "scope": "name", |
1488 | | - } |
1489 | | - } |
1490 | | - ], |
1491 | | - ) |
1492 | | - |
1493 | | - default_project.update_option( |
1494 | | - "relay.cardinality-limiter.limits", |
1495 | | - [ |
1496 | | - { |
1497 | | - "limit": { |
1498 | | - "id": "test1", |
1499 | | - "window": {"windowSeconds": 3000, "granularitySeconds": 300}, |
1500 | | - "limit": 30, |
1501 | | - "scope": "project", |
1502 | | - } |
1503 | | - } |
1504 | | - ], |
1505 | | - ) |
1506 | | - |
1507 | | - with override_options(options): |
1508 | | - project_cfg = get_project_config(default_project) |
1509 | | - |
1510 | | - cfg = project_cfg.to_dict() |
1511 | | - _validate_project_config(cfg["config"]) |
1512 | | - |
1513 | | - assert cfg["config"]["metrics"]["cardinalityLimits"] == [ |
1514 | | - { |
1515 | | - "id": "test1", |
1516 | | - "window": {"windowSeconds": 3000, "granularitySeconds": 300}, |
1517 | | - "limit": 30, |
1518 | | - "scope": "project", |
1519 | | - } |
1520 | | - ] |
1521 | | - |
1522 | | - |
1523 | | -@django_db_all |
1524 | | -@cell_silo_test |
1525 | | -def test_project_config_cardinality_limits_organization_options_override_options( |
1526 | | - default_project, |
1527 | | -) -> None: |
1528 | | - options: dict[Any, Any] = { |
1529 | | - "relay.cardinality-limiter.mode": "enabled", |
1530 | | - "sentry-metrics.cardinality-limiter.limits.transactions.per-org": None, |
1531 | | - "sentry-metrics.cardinality-limiter.limits.sessions.per-org": None, |
1532 | | - "sentry-metrics.cardinality-limiter.limits.spans.per-org": None, |
1533 | | - "sentry-metrics.cardinality-limiter.limits.custom.per-org": None, |
1534 | | - "sentry-metrics.cardinality-limiter.limits.generic-metrics.per-org": None, |
1535 | | - "sentry-metrics.cardinality-limiter.limits.profiles.per-org": None, |
1536 | | - } |
1537 | | - |
1538 | | - options["relay.cardinality-limiter.limits"] = [ |
1539 | | - { |
1540 | | - "limit": { |
1541 | | - "id": "test1", |
1542 | | - "window": {"windowSeconds": 1000, "granularitySeconds": 100}, |
1543 | | - "limit": 10, |
1544 | | - "scope": "name", |
1545 | | - }, |
1546 | | - }, |
1547 | | - ] |
1548 | | - |
1549 | | - default_project.organization.update_option( |
1550 | | - "relay.cardinality-limiter.limits", |
1551 | | - [ |
1552 | | - { |
1553 | | - "limit": { |
1554 | | - "id": "test1", |
1555 | | - "window": {"windowSeconds": 2000, "granularitySeconds": 200}, |
1556 | | - "limit": 20, |
1557 | | - "scope": "project", |
1558 | | - } |
1559 | | - } |
1560 | | - ], |
1561 | | - ) |
1562 | | - |
1563 | | - with override_options(options): |
1564 | | - project_cfg = get_project_config(default_project) |
1565 | | - |
1566 | | - cfg = project_cfg.to_dict() |
1567 | | - _validate_project_config(cfg["config"]) |
1568 | | - |
1569 | | - assert cfg["config"]["metrics"]["cardinalityLimits"] == [ |
1570 | | - { |
1571 | | - "id": "test1", |
1572 | | - "window": {"windowSeconds": 2000, "granularitySeconds": 200}, |
1573 | | - "limit": 20, |
1574 | | - "scope": "project", |
1575 | | - } |
1576 | | - ] |
1577 | | - |
1578 | | - |
1579 | 1355 | @django_db_all |
1580 | 1356 | @cell_silo_test |
1581 | 1357 | def test_project_config_with_generic_filters(default_project) -> None: |
|
0 commit comments