View Javadoc

1   /***
2    *  Copyright 2003-2010 Terracotta, Inc.
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  
17  package net.sf.ehcache.config;
18  
19  import org.junit.Test;
20  import org.slf4j.Logger;
21  import org.slf4j.LoggerFactory;
22  
23  import static org.junit.Assert.assertEquals;
24  
25  /***
26   * Tests for CacheWriterConfiguration
27   *
28   * @version $Id $
29   */
30  public class CacheWriterConfigurationTest {
31      private static final Logger LOG = LoggerFactory.getLogger(CacheWriterConfigurationTest.class.getName());
32  
33      @Test
34      public void testInstantiation() {
35          CacheWriterConfiguration config = new CacheWriterConfiguration();
36          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_MODE, config.getWriteMode());
37          assertEquals(CacheWriterConfiguration.DEFAULT_NOTIFY_LISTENERS_ON_EXCEPTION, config.getNotifyListenersOnException());
38          assertEquals(CacheWriterConfiguration.DEFAULT_MIN_WRITE_DELAY, config.getMinWriteDelay());
39          assertEquals(CacheWriterConfiguration.DEFAULT_MAX_WRITE_DELAY, config.getMaxWriteDelay());
40          assertEquals(CacheWriterConfiguration.DEFAULT_RATE_LIMIT_PER_SECOND, config.getRateLimitPerSecond());
41          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_COALESCING, config.getWriteCoalescing());
42          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_BATCHING, config.getWriteBatching());
43          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_BATCH_SIZE, config.getWriteBatchSize());
44          assertEquals(CacheWriterConfiguration.DEFAULT_RETRY_ATTEMPTS, config.getRetryAttempts());
45          assertEquals(CacheWriterConfiguration.DEFAULT_RETRY_ATTEMPT_DELAY_SECONDS, config.getRetryAttemptDelaySeconds());
46          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_BEHIND_CONCURRENCY, config.getWriteBehindConcurrency());
47          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_BEHIND_MAX_QUEUE_SIZE, config.getWriteBehindMaxQueueSize());
48      }
49  
50      @Test
51      public void testZeros() {
52          CacheWriterConfiguration config = new CacheWriterConfiguration()
53                  .minWriteDelay(0)
54                  .maxWriteDelay(0)
55                  .rateLimitPerSecond(0)
56                  .writeBatchSize(0)
57                  .retryAttempts(0)
58                  .retryAttemptDelaySeconds(0)
59                  .writeBehindConcurrency(0)
60                  .writeBehindMaxQueueSize(0);
61          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_MODE, config.getWriteMode());
62          assertEquals(0, config.getMinWriteDelay());
63          assertEquals(0, config.getMaxWriteDelay());
64          assertEquals(0, config.getRateLimitPerSecond());
65          assertEquals(1, config.getWriteBatchSize());
66          assertEquals(0, config.getRetryAttempts());
67          assertEquals(0, config.getRetryAttemptDelaySeconds());
68          assertEquals(1, config.getWriteBehindConcurrency());
69          assertEquals(0, config.getWriteBehindMaxQueueSize());
70      }
71  
72      @Test
73      public void testInvalidValues() {
74          CacheWriterConfiguration config = new CacheWriterConfiguration()
75                  .minWriteDelay(-20)
76                  .maxWriteDelay(-10)
77                  .rateLimitPerSecond(-30)
78                  .writeBatchSize(-40)
79                  .retryAttempts(-50)
80                  .retryAttemptDelaySeconds(-1)
81                  .writeBehindConcurrency(-345)
82                  .writeBehindMaxQueueSize(-1);
83          assertEquals(CacheWriterConfiguration.DEFAULT_WRITE_MODE, config.getWriteMode());
84          assertEquals(0, config.getMinWriteDelay());
85          assertEquals(0, config.getMaxWriteDelay());
86          assertEquals(0, config.getRateLimitPerSecond());
87          assertEquals(1, config.getWriteBatchSize());
88          assertEquals(0, config.getRetryAttempts());
89          assertEquals(0, config.getRetryAttemptDelaySeconds());
90          assertEquals(1, config.getWriteBehindConcurrency());
91          assertEquals(0, config.getWriteBehindMaxQueueSize());
92      }
93  
94      @Test(expected = IllegalArgumentException.class)
95      public void testNullWriteMode() {
96          CacheWriterConfiguration config = new CacheWriterConfiguration()
97                  .writeMode((CacheWriterConfiguration.WriteMode) null);
98      }
99  
100     @Test(expected = IllegalArgumentException.class)
101     public void testInvalidWriteMode() {
102         CacheWriterConfiguration config = new CacheWriterConfiguration()
103                 .writeMode("invalid");
104     }
105 
106     @Test
107     public void testConfiguration() {
108         CacheWriterConfiguration config = new CacheWriterConfiguration()
109                 .writeMode(CacheWriterConfiguration.WriteMode.WRITE_BEHIND)
110                 .notifyListenersOnException(true)
111                 .minWriteDelay(2)
112                 .maxWriteDelay(3)
113                 .rateLimitPerSecond(4)
114                 .writeCoalescing(true)
115                 .writeBatching(true)
116                 .writeBatchSize(5)
117                 .retryAttempts(6)
118                 .retryAttemptDelaySeconds(7)
119                 .writeBehindConcurrency(4)
120                 .writeBehindMaxQueueSize(125);
121         assertEquals(CacheWriterConfiguration.WriteMode.WRITE_BEHIND, config.getWriteMode());
122         assertEquals(true, config.getNotifyListenersOnException());
123         assertEquals(2, config.getMinWriteDelay());
124         assertEquals(3, config.getMaxWriteDelay());
125         assertEquals(4, config.getRateLimitPerSecond());
126         assertEquals(true, config.getWriteCoalescing());
127         assertEquals(true, config.getWriteBatching());
128         assertEquals(5, config.getWriteBatchSize());
129         assertEquals(6, config.getRetryAttempts());
130         assertEquals(7, config.getRetryAttemptDelaySeconds());
131         assertEquals(4, config.getWriteBehindConcurrency());
132         assertEquals(125, config.getWriteBehindMaxQueueSize());
133     }
134 }