Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
Kieker-TeeTime-Stages
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
TeeTime
Kieker-TeeTime-Stages
Merge requests
!4
Monitoring record logger filter
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Monitoring record logger filter
MonitoringRecordLoggerFilter
into
master
Overview
0
Commits
6
Pipelines
0
Changes
Merged
Ghost User
requested to merge
MonitoringRecordLoggerFilter
into
master
10 years ago
Overview
0
Commits
6
Pipelines
0
Changes
-
Expand
#9
0
0
Merge request reports
Compare
master
master (base)
and
latest version
latest version
2a633317
6 commits,
10 years ago
+
209
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
Search (e.g. *.vue) (Ctrl+P)
src/main/java/teetime/stage/logReplayer/filter/MonitoringRecordLoggerFilter.java
0 → 100644
+
126
−
0
Options
/***************************************************************************
* Copyright 2014 Kieker Project (http://kieker-monitoring.net)
*
* Licensed 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 teetime.stage.logReplayer.filter;
import teetime.framework.AbstractConsumerStage;
import teetime.framework.OutputPort;
import kieker.common.configuration.Configuration;
import kieker.common.record.IMonitoringRecord;
import kieker.monitoring.core.configuration.ConfigurationFactory;
import kieker.monitoring.core.controller.IMonitoringController;
import kieker.monitoring.core.controller.MonitoringController;
/**
* Passes {@link IMonitoringRecord}s received via its input port {@link #INPUT_PORT_NAME_RECORD} to its own {@link IMonitoringController} instance,
* which is created based on the {@link Configuration} file passed via the filter's property {@link #CONFIG_PROPERTY_NAME_MONITORING_PROPS_FN}.
* Additionally, incoming records are relayed via the output port {@link #OUTPUT_PORT_NAME_RELAYED_EVENTS}.
*
* @author Andre van Hoorn, Arne Jan Salveter
*
* @since 1.6
*/
public class MonitoringRecordLoggerFilter extends AbstractConsumerStage<IMonitoringRecord> {
/** Output port that delivering the MonitoringRecordLoggerFilters. */
private final OutputPort<IMonitoringRecord> outputPort = this.createOutputPort();
/** The {@link IMonitoringController} the records received via {@link #inputIMonitoringRecord(IMonitoringRecord)} are passed to. */
private final IMonitoringController monitoringController;
public static final String CONFIG_PROPERTY_NAME_MONITORING_PROPS_FN = "monitoringPropertiesFilename";
/** Used to cache the configuration. */
private final Configuration configuration;
public OutputPort<IMonitoringRecord> getOutputPort() {
return outputPort;
}
public IMonitoringController getMonitoringController() {
return monitoringController;
}
public static String getConfigPropertyNameMonitoringPropsFn() {
return CONFIG_PROPERTY_NAME_MONITORING_PROPS_FN;
}
/**
* {@inheritDoc}
*/
public Configuration getCurrentConfiguration() {
// clone again, so no one can change anything
return (Configuration) this.configuration.clone();
}
/** @return the configuration */
public Configuration getConfiguration() {
return configuration;
}
/**
* Creates a new instance of this class using the given parameters.
*
* @param configuration
* The configuration for this component.
* @param projectContext
* The project context for this component.
*
* @since 1.7
*/
public MonitoringRecordLoggerFilter(final Configuration configuration) {
final Configuration controllerConfiguration;
final String monitoringPropertiesFn = configuration.getPathProperty(CONFIG_PROPERTY_NAME_MONITORING_PROPS_FN);
if (monitoringPropertiesFn.length() > 0) {
controllerConfiguration = ConfigurationFactory.createConfigurationFromFile(monitoringPropertiesFn);
} else {
this.logger.info("No path to a 'monitoring.properties' file passed; using default configuration");
controllerConfiguration = ConfigurationFactory.createDefaultConfiguration();
}
// flatten submitted properties
final Configuration flatConfiguration = configuration.flatten();
// just remember this configuration without the added MonitoringController configuration
this.configuration = (Configuration) flatConfiguration.clone();
flatConfiguration.setDefaultConfiguration(controllerConfiguration);
this.monitoringController = MonitoringController.createInstance(flatConfiguration);
}
/**
* {@inheritDoc}
*/
@Override
public void onTerminating() throws Exception {
this.monitoringController.terminateMonitoring();
super.onTerminating();
}
/**
* The new records are send to the monitoring controller before they are delivered via the output port.
*
* @param record
* The next record.
*/
@Override
protected void execute(final IMonitoringRecord element) {
this.monitoringController.newMonitoringRecord(element);
this.outputPort.send(element);
}
}
Loading