|
JMeter example source code file (ServerPanel.java)
The JMeter ServerPanel.java source code
/*
* 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.jmeter.visualizers;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JLabel;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.monitor.util.Stats;
/**
* The purpose of ServerPanel is to display an unique server and its current
* status. The server label consist of the protocol, host and port. For example,
* a system with multiple Tomcat's running on different ports would be different
* ServerPanel.
*/
public class ServerPanel extends JPanel implements MonitorGuiListener {
private static final long serialVersionUID = 240L;
private JLabel serverField;
private JLabel timestampField;
/**
* Preference size for the health icon
*/
private Dimension prefsize = new Dimension(25, 75);
private JLabel healthIcon;
private JLabel loadIcon;
/**
* Health Icons
*/
private static final ImageIcon HEALTHY = JMeterUtils.getImage("monitor-healthy.gif");
private static final ImageIcon ACTIVE = JMeterUtils.getImage("monitor-active.gif");
private static final ImageIcon WARNING = JMeterUtils.getImage("monitor-warning.gif");
private static final ImageIcon DEAD = JMeterUtils.getImage("monitor-dead.gif");
/**
* Load Icons
*/
private static final ImageIcon LOAD_0 = JMeterUtils.getImage("monitor-load-0.gif");
private static final ImageIcon LOAD_1 = JMeterUtils.getImage("monitor-load-1.gif");
private static final ImageIcon LOAD_2 = JMeterUtils.getImage("monitor-load-2.gif");
private static final ImageIcon LOAD_3 = JMeterUtils.getImage("monitor-load-3.gif");
private static final ImageIcon LOAD_4 = JMeterUtils.getImage("monitor-load-4.gif");
private static final ImageIcon LOAD_5 = JMeterUtils.getImage("monitor-load-5.gif");
private static final ImageIcon LOAD_6 = JMeterUtils.getImage("monitor-load-6.gif");
private static final ImageIcon LOAD_7 = JMeterUtils.getImage("monitor-load-7.gif");
private static final ImageIcon LOAD_8 = JMeterUtils.getImage("monitor-load-8.gif");
private static final ImageIcon LOAD_9 = JMeterUtils.getImage("monitor-load-9.gif");
private static final ImageIcon LOAD_10 = JMeterUtils.getImage("monitor-load-10.gif");
// private MonitorModel DATA;
/**
*
*/
public ServerPanel(MonitorModel model) {
super();
// DATA = model;
init(model);
}
/**
*
* @deprecated Only for use in unit testing
*/
@Deprecated
public ServerPanel() {
// log.warn("Only for use in unit testing");
}
/**
* Init will create the JLabel widgets for the host, health, load and
* timestamp.
*
* @param model
*/
private void init(MonitorModel model) {
this.setLayout(new FlowLayout());
serverField = new JLabel(model.getURL());
this.add(serverField);
healthIcon = new JLabel(getHealthyImageIcon(model.getHealth()));
healthIcon.setPreferredSize(prefsize);
this.add(healthIcon);
loadIcon = new JLabel(getLoadImageIcon(model.getLoad()));
this.add(loadIcon);
timestampField = new JLabel(model.getTimestampString());
this.add(timestampField);
}
/**
* Static method for getting the right ImageIcon for the health.
*
* @param health
* @return image for the status
*/
private static ImageIcon getHealthyImageIcon(int health) {
ImageIcon i = null;
switch (health) {
case Stats.HEALTHY:
i = HEALTHY;
break;
case Stats.ACTIVE:
i = ACTIVE;
break;
case Stats.WARNING:
i = WARNING;
break;
case Stats.DEAD:
i = DEAD;
break;
}
return i;
}
/**
* Static method looks up the right ImageIcon from the load value.
*
* @param load
* @return image for the load
*/
private static ImageIcon getLoadImageIcon(int load) {
if (load == 0) {
return LOAD_0;
} else if (load > 0 && load <= 10) {
return LOAD_1;
} else if (load > 10 && load <= 20) {
return LOAD_2;
} else if (load > 20 && load <= 30) {
return LOAD_3;
} else if (load > 30 && load <= 40) {
return LOAD_4;
} else if (load > 40 && load <= 50) {
return LOAD_5;
} else if (load > 50 && load <= 60) {
return LOAD_6;
} else if (load > 60 && load <= 70) {
return LOAD_7;
} else if (load > 70 && load <= 80) {
return LOAD_8;
} else if (load > 80 && load <= 90) {
return LOAD_9;
} else {
return LOAD_10;
}
}
/**
* Method will update the ServerPanel's health, load, and timestamp. For
* efficiency, it uses the static method to lookup the images.
*/
public void updateGui(MonitorModel stat) {
// this.DATA = null;
// this.DATA = stat;
loadIcon.setIcon(getLoadImageIcon(stat.getLoad()));
healthIcon.setIcon(getHealthyImageIcon(stat.getHealth()));
timestampField.setText(stat.getTimestampString());
this.updateGui();
}
/**
* update the gui
*/
public void updateGui() {
this.repaint();
}
}
Other JMeter examples (source code examples)Here is a short list of links related to this JMeter ServerPanel.java source code file: |
| ... 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.