1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.hadoop.hbase.metrics;
20  
21  import junit.framework.Assert;
22  
23  import com.yammer.metrics.stats.ExponentiallyDecayingSample;
24  import com.yammer.metrics.stats.Snapshot;
25  
26  import org.apache.hadoop.hbase.SmallTests;
27  
28  import org.junit.Test;
29  import org.junit.experimental.categories.Category;
30  
31  @Category(SmallTests.class)
32  public class TestExponentiallyDecayingSample {
33    
34    @Test
35    public void testBasic() {
36        final ExponentiallyDecayingSample sample = 
37            new ExponentiallyDecayingSample(100, 0.99);
38        
39        for (int i = 0; i < 1000; i++) {
40            sample.update(i);
41        }
42        Assert.assertEquals(100, sample.size());
43        
44        final Snapshot snapshot = sample.getSnapshot();
45        Assert.assertEquals(100, snapshot.size());
46  
47        for (double i : snapshot.getValues()) {
48          Assert.assertTrue(i >= 0.0 && i < 1000.0);
49        }
50    }
51  
52    @Test
53    public void testTooBig() throws Exception {
54        final ExponentiallyDecayingSample sample = 
55            new ExponentiallyDecayingSample(100, 0.99);
56        for (int i = 0; i < 10; i++) {
57            sample.update(i);
58        }
59        Assert.assertEquals(10, sample.size());
60  
61        final Snapshot snapshot = sample.getSnapshot();
62        Assert.assertEquals(10, sample.size());
63  
64        for (double i : snapshot.getValues()) {
65          Assert.assertTrue(i >= 0.0 && i < 1000.0);
66        }
67    }
68  }