Save time series strategies: add max deduplication interval validation
This commit is contained in:
		
							parent
							
								
									e009967fa7
								
							
						
					
					
						commit
						a2095636a0
					
				@ -28,14 +28,16 @@ import java.util.UUID;
 | 
			
		||||
final class DeduplicatePersistenceStrategy implements PersistenceStrategy {
 | 
			
		||||
 | 
			
		||||
    private static final int MIN_DEDUPLICATION_INTERVAL_SECS = 1;
 | 
			
		||||
    private static final int MAX_DEDUPLICATION_INTERVAL_SECS = (int) Duration.ofDays(1L).toSeconds();
 | 
			
		||||
 | 
			
		||||
    private final long deduplicationIntervalMillis;
 | 
			
		||||
    private final LoadingCache<Long, Set<UUID>> deduplicationCache;
 | 
			
		||||
 | 
			
		||||
    @JsonCreator
 | 
			
		||||
    public DeduplicatePersistenceStrategy(@JsonProperty("deduplicationIntervalSecs") int deduplicationIntervalSecs) {
 | 
			
		||||
        if (deduplicationIntervalSecs < MIN_DEDUPLICATION_INTERVAL_SECS) {
 | 
			
		||||
            throw new IllegalArgumentException("Deduplication interval must be at least " + MIN_DEDUPLICATION_INTERVAL_SECS + " second(s), was " + deduplicationIntervalSecs + " second(s)");
 | 
			
		||||
        if (deduplicationIntervalSecs < MIN_DEDUPLICATION_INTERVAL_SECS || deduplicationIntervalSecs > MAX_DEDUPLICATION_INTERVAL_SECS) {
 | 
			
		||||
            throw new IllegalArgumentException("Deduplication interval must be at least " + MIN_DEDUPLICATION_INTERVAL_SECS + " second(s) " +
 | 
			
		||||
                    "and at most " + MAX_DEDUPLICATION_INTERVAL_SECS + " second(s), was " + deduplicationIntervalSecs + " second(s)");
 | 
			
		||||
        }
 | 
			
		||||
        deduplicationIntervalMillis = Duration.ofSeconds(deduplicationIntervalSecs).toMillis();
 | 
			
		||||
        deduplicationCache = Caffeine.newBuilder()
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,14 @@ class DeduplicatePersistenceStrategyTest {
 | 
			
		||||
    void shouldThrowWhenDeduplicationIntervalIsLessThanOneSecond() {
 | 
			
		||||
        assertThatThrownBy(() -> new DeduplicatePersistenceStrategy(0))
 | 
			
		||||
                .isInstanceOf(IllegalArgumentException.class)
 | 
			
		||||
                .hasMessageContaining("Deduplication interval must be at least 1 second(s), was 0 second(s)");
 | 
			
		||||
                .hasMessageContaining("Deduplication interval must be at least 1 second(s) and at most 86400 second(s), was 0 second(s)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void shouldThrowWhenDeduplicationIntervalIsMoreThan24Hours() {
 | 
			
		||||
        assertThatThrownBy(() -> new DeduplicatePersistenceStrategy(86401))
 | 
			
		||||
                .isInstanceOf(IllegalArgumentException.class)
 | 
			
		||||
                .hasMessageContaining("Deduplication interval must be at least 1 second(s) and at most 86400 second(s), was 86401 second(s)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user