Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 b5796290b -> cd20150a3


Metrics Cache test failing on trunk. (Aravindan Vijayan via swagle)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/cd20150a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/cd20150a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/cd20150a

Branch: refs/heads/branch-2.1
Commit: cd20150a301c477696ec7c19fd9e04fb4660f2b0
Parents: b579629
Author: Siddharth Wagle <swa...@hortonworks.com>
Authored: Tue Nov 10 17:29:24 2015 -0800
Committer: Siddharth Wagle <swa...@hortonworks.com>
Committed: Tue Nov 10 17:29:24 2015 -0800

----------------------------------------------------------------------
 .../cache/TimelineMetricCacheProvider.java      | 29 +++++----
 .../timeline/cache/TimelineMetricCacheTest.java | 63 +++++++++++++-------
 2 files changed, 60 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/cd20150a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheProvider.java
index 9f268b2..f447fc9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheProvider.java
@@ -83,6 +83,23 @@ public class TimelineMetricCacheProvider {
       configuration.getMetricCacheIdleSeconds());
 
     // Create a Cache specifying its configuration.
+    CacheConfiguration cacheConfiguration = createCacheConfiguration();
+    Cache cache = new Cache(cacheConfiguration);
+
+    // Decorate with UpdatingSelfPopulatingCache
+    timelineMetricsCache = new TimelineMetricCache(cache, cacheEntryFactory);
+
+    LOG.info("Registering metrics cache with provider: name = " +
+      cache.getName() + ", guid: " + cache.getGuid());
+
+    manager.addCache(timelineMetricsCache);
+
+    isCacheInitialized = true;
+  }
+
+  // Having this as a separate public method for testing/mocking purposes
+  public CacheConfiguration createCacheConfiguration() {
+
     CacheConfiguration cacheConfiguration = new CacheConfiguration()
       .name(TIMELINE_METRIC_CACHE_INSTANCE_NAME)
       .timeToLiveSeconds(configuration.getMetricCacheTTLSeconds()) // 1 hour
@@ -95,17 +112,7 @@ public class TimelineMetricCacheProvider {
       .persistence(new PersistenceConfiguration()
         .strategy(Strategy.NONE.name()));
 
-    Cache cache = new Cache(cacheConfiguration);
-
-    // Decorate with UpdatingSelfPopulatingCache
-    timelineMetricsCache = new TimelineMetricCache(cache, cacheEntryFactory);
-
-    LOG.info("Registering metrics cache with provider: name = " +
-      cache.getName() + ", guid: " + cache.getGuid());
-
-    manager.addCache(timelineMetricsCache);
-
-    isCacheInitialized = true;
+    return cacheConfiguration;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/cd20150a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheTest.java
index 0f727dd..53661fa 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/cache/TimelineMetricCacheTest.java
@@ -24,8 +24,12 @@ import com.google.inject.Module;
 import junit.framework.Assert;
 import net.sf.ehcache.Cache;
 import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.config.CacheConfiguration;
+import net.sf.ehcache.config.PersistenceConfiguration;
+import net.sf.ehcache.config.SizeOfPolicyConfiguration;
 import net.sf.ehcache.constructs.blocking.UpdatingCacheEntryFactory;
 import net.sf.ehcache.constructs.blocking.UpdatingSelfPopulatingCache;
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.internal.TemporalInfoImpl;
 import 
org.apache.ambari.server.controller.metrics.timeline.MetricsRequestHelper;
@@ -52,6 +56,7 @@ import java.util.TreeMap;
 
 import static 
org.apache.ambari.server.controller.metrics.timeline.cache.TimelineMetricCacheProvider.TIMELINE_METRIC_CACHE_INSTANCE_NAME;
 import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.createMockBuilder;
 import static org.easymock.EasyMock.createNiceMock;
@@ -63,21 +68,6 @@ import static org.easymock.EasyMock.verify;
 
 public class TimelineMetricCacheTest {
 
-  private TimelineMetricCacheProvider getMetricCacheProvider(
-      final Configuration configuration,
-      final TimelineMetricCacheEntryFactory cacheEntryFactory) {
-
-    Injector injector = Guice.createInjector(new Module() {
-      @Override
-      public void configure(Binder binder) {
-        binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
-        binder.bind(Configuration.class).toInstance(configuration);
-        
binder.bind(TimelineMetricCacheEntryFactory.class).toInstance(cacheEntryFactory);
-      }
-    });
-    return injector.getInstance(TimelineMetricCacheProvider.class);
-  }
-
   @After
   public void removeCacheInstance() {
     // Avoids Object Exists Exception on unit tests by adding a new cache for
@@ -124,12 +114,29 @@ public class TimelineMetricCacheTest {
     verify(cacheEntryFactory);
   }
 
+  private CacheConfiguration createTestCacheConfiguration(Configuration 
configuration) {
+
+    CacheConfiguration cacheConfiguration = new CacheConfiguration()
+      .name(TIMELINE_METRIC_CACHE_INSTANCE_NAME)
+      .timeToLiveSeconds(configuration.getMetricCacheTTLSeconds()) // 1 hour
+      .timeToIdleSeconds(configuration.getMetricCacheIdleSeconds()) // 5 
minutes
+      .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU)
+      .sizeOfPolicy(new SizeOfPolicyConfiguration() // Set sizeOf policy to 
continue on max depth reached - avoid OOM
+        .maxDepth(10000)
+        
.maxDepthExceededBehavior(SizeOfPolicyConfiguration.MaxDepthExceededBehavior.CONTINUE))
+      .eternal(false)
+      .persistence(new PersistenceConfiguration()
+        .strategy(PersistenceConfiguration.Strategy.NONE.name()));
+
+    cacheConfiguration.setMaxBytesLocalHeap(20*1024*1024l);
+    return cacheConfiguration;
+  }
   @Test
-  public void testTimlineMetricCacheProviderGets() throws Exception {
+  public void testTimelineMetricCacheProviderGets() throws Exception {
     Configuration configuration = createNiceMock(Configuration.class);
     expect(configuration.getMetricCacheTTLSeconds()).andReturn(3600);
     expect(configuration.getMetricCacheIdleSeconds()).andReturn(100);
-    expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%");
+    
expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%").anyTimes();
 
     replay(configuration);
 
@@ -168,7 +175,14 @@ public class TimelineMetricCacheTest {
 
     replay(cacheEntryFactory);
 
-    TimelineMetricCacheProvider cacheProvider = 
getMetricCacheProvider(configuration, cacheEntryFactory);
+    TimelineMetricCacheProvider cacheProvider = 
createMockBuilder(TimelineMetricCacheProvider.class)
+      .addMockedMethod("createCacheConfiguration")
+      .withConstructor(configuration, cacheEntryFactory)
+      .createNiceMock();
+
+    
expect(cacheProvider.createCacheConfiguration()).andReturn(createTestCacheConfiguration(configuration)).anyTimes();
+    replay(cacheProvider);
+
     TimelineMetricCache cache = cacheProvider.getTimelineMetricsCache();
 
     // call to get
@@ -400,7 +414,7 @@ public class TimelineMetricCacheTest {
     Configuration configuration = createNiceMock(Configuration.class);
     expect(configuration.getMetricCacheTTLSeconds()).andReturn(3600);
     expect(configuration.getMetricCacheIdleSeconds()).andReturn(100);
-    expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%");
+    
expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%").anyTimes();
     
expect(configuration.getMetricRequestBufferTimeCatchupInterval()).andReturn(1000l).anyTimes();
     replay(configuration);
 
@@ -481,7 +495,14 @@ public class TimelineMetricCacheTest {
 
     replay(cacheEntryFactory);
 
-    TimelineMetricCacheProvider cacheProvider = 
getMetricCacheProvider(configuration, cacheEntryFactory);
+    TimelineMetricCacheProvider cacheProvider = 
createMockBuilder(TimelineMetricCacheProvider.class)
+      .addMockedMethod("createCacheConfiguration")
+      .withConstructor(configuration, cacheEntryFactory)
+      .createNiceMock();
+
+    
expect(cacheProvider.createCacheConfiguration()).andReturn(createTestCacheConfiguration(configuration)).anyTimes();
+    replay(cacheProvider);
+
     TimelineMetricCache cache = cacheProvider.getTimelineMetricsCache();
 
     // call to get
@@ -499,7 +520,7 @@ public class TimelineMetricCacheTest {
     Assert.assertEquals(1, metricsList.size());
     Assert.assertEquals("cpu_user", metric.getMetricName());
     Assert.assertEquals("app1", metric.getAppId());
-    Assert.assertEquals(newMetricValues,metric.getMetricValues());
+    Assert.assertEquals(newMetricValues, metric.getMetricValues());
 
   }
 }

Reply via email to