blob: 48bf864130f141def571834c0093f1a1b8be38de [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.sling.commons.scheduler.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.lang.annotation.Annotation;
import java.util.Vector;
import org.junit.Test;
public class MetricsHelperTest {
class T1{ }
class T2{ }
class Tother{ }
private final class QSC implements QuartzSchedulerConfiguration {
private Class<? extends Annotation> annotationType;
private int slowThresholdMillis;
private boolean useleaderforsingle;
private String poolName;
private String[] metrics_filters;
private String[] allowedPoolNames;
@Override
public Class<? extends Annotation> annotationType() {
return annotationType;
}
@Override
public int slowThresholdMillis() {
return slowThresholdMillis;
}
@Override
public boolean scheduler_useleaderforsingle() {
return useleaderforsingle;
}
@Override
public String poolName() {
return poolName;
}
@Override
public String[] metrics_filters() {
return metrics_filters;
}
@Override
public String[] allowedPoolNames() {
return allowedPoolNames;
}
}
@Test
public void testAsMetricsSuffix_NullValues() throws Exception {
assertEquals(MetricsHelper.UNKNOWN_JOBNAME_SUFFIX ,MetricsHelper.asMetricsSuffix(null));
}
@Test
public void testAsMetricsSuffix_Suffixes() throws Exception {
assertEquals("bar", MetricsHelper.asMetricsSuffix("bar"));
assertEquals("foo.1", MetricsHelper.asMetricsSuffix("foo.1"));
assertEquals("abc.d.1", MetricsHelper.asMetricsSuffix("asd.bas.cdf.d.1"));
assertEquals("abcd.ex.1", MetricsHelper.asMetricsSuffix("asd.bas.cdf.d.ex.1"));
assertEquals("abcde.f.1", MetricsHelper.asMetricsSuffix("a.b.c.d.e.f.1"));
assertEquals("abcdef..1", MetricsHelper.asMetricsSuffix("a.b.c.d.e...f....1..."));
assertEquals("abcdef..1", MetricsHelper.asMetricsSuffix("a.b.c.d.e.f....1..."));
assertEquals("abcdef..1", MetricsHelper.asMetricsSuffix("a.b.c.d.e.f.....1"));
assertEquals("abcde.f.1", MetricsHelper.asMetricsSuffix("a.b.c.d.e.f.1...."));
assertEquals("abcde.f.1", MetricsHelper.asMetricsSuffix("a.b...c..d.e......f.1"));
}
@Test
public void testDeriveFilterName_NullValues() throws Exception {
assertNull(MetricsHelper.deriveFilterName(null, null));
assertNull(MetricsHelper.deriveFilterName(null, "a"));
final QSC config = new QSC();
ConfigHolder configHolder = new ConfigHolder(config);
assertNull(MetricsHelper.deriveFilterName(configHolder, null));
assertNull(MetricsHelper.deriveFilterName(configHolder, "a"));
config.metrics_filters = new String[0];
configHolder = new ConfigHolder(config);
assertNull(MetricsHelper.deriveFilterName(configHolder, null));
assertNull(MetricsHelper.deriveFilterName(configHolder, "a"));
config.metrics_filters = new String[] {"unrelated", "foo.bar.Class"};
configHolder = new ConfigHolder(config);
assertNull(MetricsHelper.deriveFilterName(configHolder, null));
assertNull(MetricsHelper.deriveFilterName(configHolder, "a"));
}
@Test
public void testDeriveFilterName_FilterVariations() throws Exception {
final QSC config = new QSC();
config.metrics_filters = new String[] {
"filter1=org.apache.sling.commons.scheduler.impl.MetricsHelperTest",
"filter2=org.apache.sling.commons.scheduler.impl.QuartzSchedulerTest",
"filter3=org.apache.sling.commons.scheduler.impl.Tunused",
"filter4=java.lang.String"
};
final ConfigHolder configHolder = new ConfigHolder(config);
assertEquals("filter1", MetricsHelper.deriveFilterName(configHolder, new MetricsHelperTest()));
assertEquals("filter1", MetricsHelper.deriveFilterName(configHolder, new T1()));
assertEquals("filter1", MetricsHelper.deriveFilterName(configHolder, new T2()));
assertEquals("filter1", MetricsHelper.deriveFilterName(configHolder, new Tother()));
assertEquals("filter2", MetricsHelper.deriveFilterName(configHolder, new QuartzSchedulerTest()));
assertEquals("filter4", MetricsHelper.deriveFilterName(configHolder, new String()));
assertEquals(null, MetricsHelper.deriveFilterName(configHolder, new StringBuffer()));
assertEquals(null, MetricsHelper.deriveFilterName(configHolder, new TopologyHandlerTest()));
assertEquals(null, MetricsHelper.deriveFilterName(configHolder, new Vector<Object>()));
assertEquals(null, MetricsHelper.deriveFilterName(configHolder, null));
}
@Test
public void testConfigHolder() throws Exception {
final QSC config = new QSC();
config.metrics_filters = new String[] {
"filter1=org.apache.sling.commons.scheduler.impl.MetricsHelperTest",
"filter2=org.apache.sling.commons.scheduler.impl.QuartzSchedulerTest",
"filter3=org.apache.sling.commons.scheduler.impl.Tunused",
"filter4=java.lang.String",
"wrongFilter5=java.foo.Wrong$1",
"wrongFilter6=java.bar.Wrong*",
"wrongFilter7=java.zet.Wrong?"
};
final ConfigHolder configHolder = new ConfigHolder(config);
assertTrue(configHolder.getFilterDefinitions().containsKey("java.lang"));
assertTrue(configHolder.getFilterDefinitions().containsKey("org.apache.sling.commons.scheduler.impl"));
assertEquals(2, configHolder.getFilterDefinitions().size());
assertEquals(3, configHolder.getFilterDefinitions().get("org.apache.sling.commons.scheduler.impl").size());
}
}