package org.spotter.ext.detection.continuousViolation; import java.util.HashSet; import java.util.Set; import org.lpe.common.config.ConfigParameterDescription; import org.lpe.common.util.LpeSupportedTypes; import org.spotter.core.detection.AbstractDetectionExtension; import org.spotter.core.detection.IDetectionController; import org.spotter.ext.detection.continuousViolation.util.AnalysisConfig; /** * Extensions for the detection of continuoous performance requirements * violation. * * @author Alexander Wert * */ public class ContinuousViolationExtension extends AbstractDetectionExtension { private static final String EXTENSION_DESCRIPTION = "Checks if performance requirements are " + "violated continuously under high load."; protected static final String VIOLATION_DETECTION_STRATEGY_KEY = "strategy"; protected static final String DBSCAN_STRATEGY = "DBSCAN analysis"; protected static final String PERCENTILE_STRATEGY = "moving percentile analysis"; protected static final String BUCKET_STRATEGY = "bucket analysis"; @Override public IDetectionController createExtensionArtifact() { return new ContinuousViolationController(this); } @Override public String getName() { return "Continuouos Violation"; } private ConfigParameterDescription createStrategyParameter() { ConfigParameterDescription scopeParameter = new ConfigParameterDescription(VIOLATION_DETECTION_STRATEGY_KEY, LpeSupportedTypes.String); Set<String> scopeOptions = new HashSet<>(); scopeOptions.add(DBSCAN_STRATEGY); scopeOptions.add(BUCKET_STRATEGY); scopeOptions.add(PERCENTILE_STRATEGY); scopeParameter.setOptions(scopeOptions); scopeParameter.setDefaultValue(DBSCAN_STRATEGY); scopeParameter.setDescription("This parameter determines the strategy, " + "used to analyse continuous violation of requirements."); return scopeParameter; } @Override protected void initializeConfigurationParameters() { addConfigParameter(ConfigParameterDescription.createExtensionDescription(EXTENSION_DESCRIPTION)); addConfigParameter(createStrategyParameter()); for (ConfigParameterDescription cpd : AnalysisConfig.getConfigurationParameters()) { addConfigParameter(cpd); } } }