|
| 1 | +from faker import Faker |
| 2 | +from importlib import reload |
| 3 | +from datetime import datetime, timedelta |
1 | 4 | import pytest
|
2 | 5 | import math
|
3 | 6 | import random
|
4 |
| -from aws_embedded_metrics import constants |
| 7 | +from aws_embedded_metrics import constants, utils |
5 | 8 | from aws_embedded_metrics.unit import Unit
|
6 | 9 | from aws_embedded_metrics.storage_resolution import StorageResolution
|
7 | 10 | from aws_embedded_metrics import config
|
8 | 11 | from aws_embedded_metrics.logger.metrics_context import MetricsContext
|
9 |
| -from aws_embedded_metrics.constants import DEFAULT_NAMESPACE |
| 12 | +from aws_embedded_metrics.constants import DEFAULT_NAMESPACE, MAX_TIMESTAMP_FUTURE_AGE, MAX_TIMESTAMP_PAST_AGE |
10 | 13 | from aws_embedded_metrics.exceptions import DimensionSetExceededError, InvalidDimensionError, InvalidMetricError
|
11 |
| -from importlib import reload |
12 |
| -from faker import Faker |
| 14 | +from aws_embedded_metrics.exceptions import InvalidTimestampError |
13 | 15 |
|
14 | 16 | fake = Faker()
|
15 | 17 |
|
@@ -458,6 +460,44 @@ def test_cannot_put_more_than_30_dimensions():
|
458 | 460 | context.put_dimensions(dimension_set)
|
459 | 461 |
|
460 | 462 |
|
| 463 | +@pytest.mark.parametrize( |
| 464 | + "timestamp", |
| 465 | + [ |
| 466 | + datetime.now(), |
| 467 | + datetime.now() - timedelta(milliseconds=MAX_TIMESTAMP_PAST_AGE - 5000), |
| 468 | + datetime.now() + timedelta(milliseconds=MAX_TIMESTAMP_FUTURE_AGE - 5000) |
| 469 | + ] |
| 470 | +) |
| 471 | +def test_set_valid_timestamp_verify_timestamp(timestamp: datetime): |
| 472 | + context = MetricsContext() |
| 473 | + |
| 474 | + context.set_timestamp(timestamp) |
| 475 | + |
| 476 | + assert context.meta[constants.TIMESTAMP] == utils.convert_to_milliseconds(timestamp) |
| 477 | + |
| 478 | + |
| 479 | +@pytest.mark.parametrize( |
| 480 | + "timestamp", |
| 481 | + [ |
| 482 | + None, |
| 483 | + datetime.min, |
| 484 | + datetime(1970, 1, 1, 0, 0, 0), |
| 485 | + datetime.max, |
| 486 | + datetime(9999, 12, 31, 23, 59, 59, 999999), |
| 487 | + datetime(1, 1, 1, 0, 0, 0, 0, None), |
| 488 | + datetime(1, 1, 1), |
| 489 | + datetime(1, 1, 1, 0, 0), |
| 490 | + datetime.now() - timedelta(milliseconds=MAX_TIMESTAMP_PAST_AGE + 1), |
| 491 | + datetime.now() + timedelta(milliseconds=MAX_TIMESTAMP_FUTURE_AGE + 5000) |
| 492 | + ] |
| 493 | +) |
| 494 | +def test_set_invalid_timestamp_raises_exception(timestamp: datetime): |
| 495 | + context = MetricsContext() |
| 496 | + |
| 497 | + with pytest.raises(InvalidTimestampError): |
| 498 | + context.set_timestamp(timestamp) |
| 499 | + |
| 500 | + |
461 | 501 | # Test utility method
|
462 | 502 |
|
463 | 503 |
|
|
0 commit comments