Package org.stagemonitor.core.configuration

Source Code of org.stagemonitor.core.configuration.ConfigurationOptionTest

package org.stagemonitor.core.configuration;

import com.codahale.metrics.MetricRegistry;
import org.junit.Before;
import org.junit.Test;
import org.stagemonitor.core.CorePlugin;
import org.stagemonitor.core.StagemonitorPlugin;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class ConfigurationOptionTest {

  private final ConfigurationOption<Map<Pattern,String>> invalidPatternMap = ConfigurationOption.regexMapOption().key("invalidPatternMap").build();
  private final ConfigurationOption<List<Pattern>> invalidPatternSyntax = ConfigurationOption.regexListOption().key("invalidPatternSyntax").build();
  private final ConfigurationOption<Long> aLong = ConfigurationOption.longOption().key("long").build();
  private final ConfigurationOption<Long> invalidLong = ConfigurationOption.longOption().key("invalidLong").defaultValue(2L).build();
  private final ConfigurationOption<String> string = ConfigurationOption.stringOption().key("string").build();
  private final ConfigurationOption<Collection<String>> lowerStrings = ConfigurationOption.lowerStringsOption().key("lowerStrings").build();
  private final ConfigurationOption<Collection<String>> strings = ConfigurationOption.stringsOption().key("strings").build();
  private final ConfigurationOption<Boolean> booleanTrue = ConfigurationOption.booleanOption().key("boolean.true").build();
  private final ConfigurationOption<Boolean> booleanFalse = ConfigurationOption.booleanOption().key("boolean.false").build();
  private final ConfigurationOption<Boolean> booleanInvalid = ConfigurationOption.booleanOption().key("boolean.invalid").build();
  private final ConfigurationOption<String> testCaching = ConfigurationOption.stringOption().key("testCaching").dynamic(true).build();
  private Configuration configuration = new Configuration(StagemonitorPlugin.class);
  private CorePlugin corePlugin;
  private SimpleSource configSource = SimpleSource
      .forTest("invalidLong", "two")
      .add("stagemonitor.elasticsearch.url", "foo/")
      .add("invalidPatternMap", "(.*).js: *.js (.*).css:  *.css")
      .add("invalidPatternSyntax", "(.*.js")
      .add("long", "2")
      .add("string", "fooBar")
      .add("lowerStrings", "fooBar")
      .add("strings", "fooBar , barFoo")
      .add("boolean.true", "true")
      .add("boolean.false", "false")
      .add("boolean.invalid", "ture")
      .add("testCaching", "testCaching");

  @Before
  public void before() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
    corePlugin = configuration.getConfig(CorePlugin.class);
    configuration.addConfigurationSource(configSource);

    Method registerPluginConfiguration = Configuration.class.getDeclaredMethod("registerPluginConfiguration", ConfigurationOptionProvider.class);
    registerPluginConfiguration.setAccessible(true);
    registerPluginConfiguration.invoke(configuration, new StagemonitorPlugin() {
      public List<ConfigurationOption<?>> getConfigurationOptions() {
        return Arrays.<ConfigurationOption<?>>asList(invalidPatternMap, invalidPatternSyntax, aLong, invalidLong, string,
            lowerStrings, strings, booleanTrue, booleanFalse, booleanInvalid, testCaching);
      }

      public void initializePlugin(MetricRegistry metricRegistry, Configuration configuration) {
      }
    });
  }

  @Test
  public void testInvalidPatterns() {
    assertTrue(invalidPatternMap.getValue().isEmpty());
  }

  @Test
  public void testInvalidPatternSyntax() {
    assertTrue(invalidPatternSyntax.getValue().isEmpty());
  }

  @Test
  public void testGetInt() {
    assertEquals(Long.valueOf(2L), aLong.getValue());
  }

  @Test
  public void testGetInvalidLong() {
    assertEquals(Long.valueOf(2L), invalidLong.getValue());
  }

  @Test
  public void testGetString() {
    assertEquals("fooBar", string.getValue());
  }

  @Test
  public void testGetLowerStrings() {
    assertEquals(Collections.singleton("foobar"), lowerStrings.getValue());
  }

  @Test
  public void testCachingAndReload() {
    assertEquals("testCaching", testCaching.getValue());
    configSource.add("testCaching", "testCaching2");
    assertEquals("testCaching", testCaching.getValue());
    configuration.reload();
    assertEquals("testCaching2", testCaching.getValue());
  }

  @Test
  public void testGetBoolean() {
    assertTrue(booleanTrue.getValue());
    assertFalse(booleanFalse.getValue());
  }

  @Test
  public void testElasticsearchUrlTrailingSlash() {
    assertEquals("foo", corePlugin.getElasticsearchUrl());
  }

  @Test
  public void testDefaultValues() {
    assertEquals(60L, corePlugin.getConsoleReportingInterval());
    assertEquals(true, corePlugin.reportToJMX());
    assertEquals(60, corePlugin.getGraphiteReportingInterval());
    assertEquals(null, corePlugin.getGraphiteHostName());
    assertEquals(2003, corePlugin.getGraphitePort());
    assertEquals(null, corePlugin.getApplicationName());
    assertEquals(null, corePlugin.getInstanceName());
    assertEquals(Collections.<Pattern>emptyList(), corePlugin.getExcludedMetricsPatterns());
  }
}
TOP

Related Classes of org.stagemonitor.core.configuration.ConfigurationOptionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.