/*
* 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 kg.apc.jmeter.listener;
import java.beans.PropertyDescriptor;
import org.apache.jmeter.testbeans.BeanInfoSupport;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
/**
* BeanInfo for {@link GraphsGeneratorListener}
*
* @since 1.1.3
*/
public class GraphsGeneratorListenerBeanInfo extends BeanInfoSupport {
private static final Logger LOGGER = LoggingManager.getLoggerForClass();
// These names must agree case-wise with the variable and property names
private static final String OUTPUT_BASE_FOLDER = "outputBaseFolder";
private static final String RESULTS_FILE_NAME = "resultsFileName";
private static final String FILE_PREFIX = "filePrefix";
private static final String EXPORT_MODE = "exportMode";
private static final String GRAPH_WIDTH = "graphWidth";
private static final String GRAPH_HEIGHT = "graphHeight";
private static final String PAINT_MARKERS = "paintMarkers";
private static final String PAINT_ZEROING = "paintZeroing";
private static final String PAINT_GRADIENT = "paintGradient";
private static final String PREVENT_OUTLIERS = "preventOutliers";
private static final String RELATIVE_TIMES = "relativeTimes";
private static final String AUTO_SCALE_ROWS = "autoScaleRows";
private static final String LIMIT_ROWS = "limitRows";
private static final String FORCE_Y = "forceY";
private static final String GRANULATION = "granulation";
private static final String LINE_WEIGHT = "lineWeight";
private static final String AGGREGATE_ROWS = "aggregateRows";
private static final String LOW_COUNT_LIMIT = "lowCountLimit";
private static final String SUCCESS_FILTER = "successFilter";
private static final String INCLUDE_LABELS = "includeLabels";
private static final String EXCLUDE_LABELS = "excludeLabels";
static final String[] FILTER_TAGS = new String[]{
"",
"True",
"False"
};
static final int FILTER_NONE = 0;
static final int FILTER_TRUE = 1;
static final int FILTER_FALSE = 2;
private static final String INCLUDE_SAMPLES_WITH_REGEX = "includeSamplesWithRegex";
private static final String EXCLUDE_SAMPLES_WITH_REGEX = "excludeSamplesWithRegex";
private static final String START_OFFSET = "startOffset";
private static final String END_OFFSET = "endOffset";
public GraphsGeneratorListenerBeanInfo() {
super(GraphsGeneratorListener.class);
try {
createPropertyGroup("output_config",
new String[]{OUTPUT_BASE_FOLDER, RESULTS_FILE_NAME, EXPORT_MODE, FILE_PREFIX});
PropertyDescriptor p = property(OUTPUT_BASE_FOLDER);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(RESULTS_FILE_NAME);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(EXPORT_MODE, GraphsGeneratorListener.ExportMode.class);
p.setValue(DEFAULT, GraphsGeneratorListener.ExportMode.PNG.ordinal());
p.setValue(NOT_UNDEFINED, Boolean.TRUE); // must be defined
p = property(FILE_PREFIX);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
createPropertyGroup("graphs_config",
new String[]{GRAPH_WIDTH, GRAPH_HEIGHT, PAINT_MARKERS, PAINT_ZEROING,
PAINT_GRADIENT, PREVENT_OUTLIERS, RELATIVE_TIMES, AUTO_SCALE_ROWS,
LIMIT_ROWS, FORCE_Y, GRANULATION, LINE_WEIGHT});
p = property(GRAPH_WIDTH);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "800");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(GRAPH_HEIGHT);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "600");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(PAINT_MARKERS);
p.setValue(NOT_UNDEFINED, Boolean.FALSE);
p.setValue(DEFAULT, "Undefined");
p.setValue(NOT_EXPRESSION, Boolean.TRUE);
p.setValue(NOT_OTHER, Boolean.FALSE);
p.setValue(TAGS, new String[]{"True", "False"});
p = property(PAINT_ZEROING);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.TRUE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(PAINT_GRADIENT);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.TRUE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(PREVENT_OUTLIERS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(RELATIVE_TIMES);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(AUTO_SCALE_ROWS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(LIMIT_ROWS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "150");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(FORCE_Y);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(GRANULATION);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "60000");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(LINE_WEIGHT);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
createPropertyGroup("filtering_config",
new String[]{AGGREGATE_ROWS, LOW_COUNT_LIMIT,
SUCCESS_FILTER, INCLUDE_SAMPLES_WITH_REGEX,
INCLUDE_LABELS, EXCLUDE_SAMPLES_WITH_REGEX,
EXCLUDE_LABELS, START_OFFSET, END_OFFSET});
p = property(AGGREGATE_ROWS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(LOW_COUNT_LIMIT);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(SUCCESS_FILTER);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, FILTER_TAGS[FILTER_NONE]);
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p.setValue(TAGS, FILTER_TAGS);
p.setValue(NOT_OTHER, Boolean.FALSE);
p = property(INCLUDE_SAMPLES_WITH_REGEX);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.TRUE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(INCLUDE_LABELS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(EXCLUDE_SAMPLES_WITH_REGEX);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.FALSE);
p.setValue(NOT_EXPRESSION, Boolean.TRUE);
p.setValue(NOT_OTHER, Boolean.TRUE);
p = property(EXCLUDE_LABELS);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(START_OFFSET);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
p = property(END_OFFSET);
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
p.setValue(NOT_EXPRESSION, Boolean.FALSE);
} catch (NoSuchMethodError e) {
LOGGER.error("Error initializing component GraphGeneratorListener due to missing method, if your version is lower than 2.10, this" +
"is expected to fail, if not check project dependencies");
}
}
}