|
What this is
Other links
The source code
// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/PackageTest.java,v 1.8 2004/03/30 18:08:09 sebb Exp $
/*
* Copyright 2003-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.testbeans.gui;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Locale;
import java.util.ResourceBundle;
import org.apache.jmeter.junit.JMeterTestCase;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.reflect.ClassFinder;
import org.apache.log.Logger;
import junit.framework.Test;
//import junit.framework.TestCase;
import junit.framework.TestSuite;
/*
* Find all beans out there and check their resource property files:
* - Check that non-default property files don't have any extra keys.
* - Check all necessary properties are defined at least in the default property file,
* except for beans whose name contains "Experimental" or "Alpha".
* TODO: - Check property files don't have duplicate keys (is this important)
*
* @version $Revision: 1.8 $ updated on $Date: 2004/03/30 18:08:09 $
*/
public class PackageTest extends JMeterTestCase
{
private static Logger log = LoggingManager.getLoggerForClass();
private ResourceBundle defaultBundle;
private Class testBeanClass;
private String language;
private PackageTest(
Class testBeanClass, String language, ResourceBundle defaultBundle)
{
super(testBeanClass.getName()+" - "+language);
this.testBeanClass= testBeanClass;
this.language= language;
this.defaultBundle= defaultBundle;
}
BeanInfo beanInfo;
ResourceBundle bundle;
public void setUp()
{
JMeterUtils.setLocale(new Locale(language,""));
try
{
beanInfo= Introspector.getBeanInfo(testBeanClass);
bundle= (ResourceBundle) beanInfo
.getBeanDescriptor()
.getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE);
}
catch (IntrospectionException e)
{
log.error("Can't get beanInfo for "+testBeanClass.getName(),
e);
throw new Error(e.toString()); // Programming error. Don't continue.
}
if (bundle == null) throw new Error("This can't happen!");
}
public void tearDown()
{
JMeterUtils.setLocale(Locale.getDefault());
}
public void runTest()
{
if (bundle == defaultBundle) checkAllNecessaryKeysPresent();
else checkNoInventedKeys();
}
public void checkNoInventedKeys()
{
// Check that all keys in the bundle are also in the default bundle:
for (Enumeration keys= bundle.getKeys(); keys.hasMoreElements(); )
{
String key= (String)keys.nextElement();
defaultBundle.getString(key);
// Will throw MissingResourceException if key is not there.
}
}
public void checkAllNecessaryKeysPresent()
{
// Check that all necessary keys are there:
// displayName is always mandatory:
String dn= defaultBundle.getString("displayName").toLowerCase();
// Skip the rest of this test for alpha/experimental beans:
if (dn.indexOf("(ALPHA") != -1
|| dn.indexOf("(EXPERIMENTAL") != -1) return;
// Check for property- and group-related texts:
PropertyDescriptor[] descriptors= beanInfo.getPropertyDescriptors();
for (int i=0; i |
| ... 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.