|
What this is
Other links
The source code
// $Header: /home/cvs/jakarta-jmeter/src/monitor/components/org/apache/jmeter/visualizers/MonitorHealthVisualizer.java,v 1.6 2004/03/18 03:02:08 woolfel Exp $
/*
* Copyright 2004 The Apache Software Foundation.
*
* 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 org.apache.jmeter.visualizers;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.Image;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.samplers.Clearable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
/**
* For performance reasons, I am using tabs for the
* visualizers. Since a visualizer is heavy weight,
* I don not want to have two separate result
* collectors rather the same information. Instead,
* I would rather have the visualizer be the
* container for the data and simply pass the data
* to child JComponents. In the future, we may want
* to add email alerts as a third tab.
*/
public class MonitorHealthVisualizer extends AbstractVisualizer
implements ImageVisualizer, ItemListener, GraphListener, Clearable
{
private MonitorTabPane TABPANE;
private MonitorHealthPanel HEALTHPANE;
private MonitorPerformancePanel PERFPANE;
private MonitorAccumModel MODEL;
private MonitorGraph GRAPH;
public static final String BUFFER = "monitor.buffer.size";
/**
* Constructor for the GraphVisualizer object.
*/
public MonitorHealthVisualizer()
{
MODEL = new MonitorAccumModel();
GRAPH = new MonitorGraph(MODEL);
init();
MODEL.setBufferSize(JMeterUtils.getPropDefault(BUFFER,800));
}
public String getLabelResource()
{
return "monitor_health_title";
}
/**
* Because of the unique requirements of a monitor
* We have to handle the results differently than
* normal GUI components. A monitor should be able
* to run for a very long time without eating up
* all the memory.
*/
public void add(SampleResult res)
{
MODEL.addSample(res);
}
public Image getImage()
{
Image result = GRAPH.createImage(this.getWidth(),this.getHeight());
Graphics image = result.getGraphics();
GRAPH.paintComponent(image);
return result;
}
public void itemStateChanged(ItemEvent e)
{
}
public synchronized void updateGui()
{
this.repaint();
}
public synchronized void updateGui(Sample s)
{
this.repaint();
}
/**
* Initialize the GUI.
*/
private void init()
{
this.setLayout(new BorderLayout());
// MAIN PANEL
Border margin = new EmptyBorder(10, 10, 5, 10);
this.setBorder(margin);
// Add the main panel and the graph
this.add(this.makeTitlePanel(), BorderLayout.NORTH);
this.createTabs();
}
protected void createTabs(){
TABPANE = new MonitorTabPane();
createHealthPane(TABPANE);
createPerformancePane(TABPANE);
this.add(TABPANE, BorderLayout.CENTER);
}
/**
* Create the JPanel
* @param pane
*/
public void createHealthPane(MonitorTabPane pane){
HEALTHPANE = new MonitorHealthPanel(MODEL);
pane.addTab(JMeterUtils.getResString("monitor_health_tab_title"),
HEALTHPANE);
}
/**
* Create the JSplitPane for the performance history
* @param pane
*/
public void createPerformancePane(MonitorTabPane pane){
PERFPANE = new MonitorPerformancePanel(MODEL,GRAPH);
pane.addTab(JMeterUtils.getResString("monitor_performance_tab_title"),
PERFPANE);
}
protected Container makeTitlePanel()
{
VerticalPanel titlePanel = new VerticalPanel();
titlePanel.add(createTitleLabel());
titlePanel.add(getNamePanel());
return titlePanel;
}
/**
* Clear will clear the MonitorAccumModel and create a
* new instance.
*/
public void clear(){
this.MODEL.clear();
this.HEALTHPANE.clear();
this.PERFPANE.clear();
}
public TestElement createTestElement()
{
if (collector == null)
{
collector = new ResultCollector();
}
modifyTestElement(collector);
return (TestElement) collector.clone();
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.