/* * Copyright 2017 LinkedIn Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package azkaban.metrics; import static org.assertj.core.api.Assertions.assertThat; import azkaban.execapp.metric.ProjectCacheHitRatio; import org.junit.Test; public class ProjectCacheHitRatioTest { @Test public void testProjectCacheZeroHit() { //given final ProjectCacheHitRatio hitRatio = new ProjectCacheHitRatio(); //when zero hit and zero miss then assertThat(hitRatio.getRatio().getValue()).isEqualTo(Double.NaN); //when hitRatio.markMiss(); //then assertThat(hitRatio.getRatio().getValue()).isEqualTo(0); } @Test public void testProjectCacheMetricsHit() { //given final ProjectCacheHitRatio hitRatio = new ProjectCacheHitRatio(); //when one hit hitRatio.markHit(); //then assertThat(hitRatio.getRatio().getValue()).isEqualTo(1); //when one miss hitRatio.markMiss(); //then assertThat(hitRatio.getRatio().getValue()).isEqualTo(0.5); } @Test public void testProjectCacheAccessWindowSize() { //given final ProjectCacheHitRatio hitRatio = new ProjectCacheHitRatio(); //when all hits for (int i = 0; i < ProjectCacheHitRatio.WINDOW_SIZE; i++) { hitRatio.markHit(); } //then assertThat(hitRatio.getRatio().getValue()).isEqualTo(1); //when the 101th access is miss hitRatio.markMiss(); //then assertThat(hitRatio.getRatio().getValue()).isEqualTo(0.99); //when the 102th access is miss hitRatio.markMiss(); assertThat(hitRatio.getRatio().getValue()).isEqualTo(0.98); } }