You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2013/07/18 14:19:09 UTC
svn commit: r1504449 -
/jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java
Author: sebb
Date: Thu Jul 18 12:19:09 2013
New Revision: 1504449
URL: http://svn.apache.org/r1504449
Log:
Add test to compare versions in build.properties, eclipse.classpath and parent pom
Added:
jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java (with props)
Added: jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java?rev=1504449&view=auto
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java (added)
+++ jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java Thu Jul 18 12:19:09 2013
@@ -0,0 +1,167 @@
+/*
+ * 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;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.util.JMeterUtils;
+
+/**
+ * Check the eclipse and Maven version definitions against build.properties
+ */
+public class JMeterVersionTest extends JMeterTestCase {
+
+ // Convert between eclipse jar name and build.properties name
+ private static Map<String, String> JAR_TO_BUILD_PROP = new HashMap<String, String>();
+ static {
+ JAR_TO_BUILD_PROP.put("bsf", "apache-bsf");
+ JAR_TO_BUILD_PROP.put("bsh", "beanshell");
+ JAR_TO_BUILD_PROP.put("geronimo-jms_1.1_spec", "jms");
+ JAR_TO_BUILD_PROP.put("htmllexer", "htmlparser"); // two jars same version
+ JAR_TO_BUILD_PROP.put("httpmime", "httpclient"); // two jars same version
+ JAR_TO_BUILD_PROP.put("mail", "javamail");
+ JAR_TO_BUILD_PROP.put("oro", "jakarta-oro");
+ JAR_TO_BUILD_PROP.put("xercesImpl", "xerces");
+ JAR_TO_BUILD_PROP.put("xpp3_min", "xpp3");
+ }
+
+ private static final File JMETER_HOME = new File(JMeterUtils.getJMeterHome());
+
+ public JMeterVersionTest() {
+ super();
+ }
+
+ public JMeterVersionTest(String arg0) {
+ super(arg0);
+ }
+
+ private final Map<String, String> versions = new HashMap<String, String>();
+ private final Set<String> propNames = new HashSet<String>();
+
+ private File getFileFromHome(String relativeFile) {
+ return new File(JMETER_HOME, relativeFile);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ System.out.println();
+ final Properties buildProp = new Properties();
+ final FileInputStream bp = new FileInputStream(getFileFromHome("build.properties"));
+ buildProp.load(bp);
+ bp.close();
+ for (Entry<Object, Object> entry : buildProp.entrySet()) {
+ final String key = (String) entry.getKey();
+ if (key.endsWith(".version")) {
+ final String value = (String) entry.getValue();
+ final String jarprop = key.replace(".version","");
+ final String old = versions.put(jarprop, value);
+ propNames.add(jarprop);
+ if (old != null) {
+ fail("Already have entry for "+key);
+ }
+ }
+ }
+ // remove docs-only jars
+ propNames.remove("velocity");
+ propNames.remove("commons-lang");
+ }
+
+ public void testEclipse() throws Exception {
+ final BufferedReader eclipse = new BufferedReader(
+ new FileReader(getFileFromHome("eclipse.classpath"))); // assume default charset is OK here
+// <classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.1.1.jar"/>
+// <classpathentry kind="lib" path="lib/activation-1.1.1.jar"/>
+// <classpathentry kind="lib" path="lib/jtidy-r938.jar"/>
+ final Pattern p = Pattern.compile("\\s+<classpathentry kind=\"lib\" path=\"lib/(?:api/)?(.+)-([^-]+)\\.jar\"/>");
+ String line;
+ while((line=eclipse.readLine()) != null){
+ final Matcher m = p.matcher(line);
+ if (m.matches()) {
+ String jar = m.group(1);
+ String version = m.group(2);
+ if (jar.endsWith("-jdk15on")) { // special handling
+ jar=jar.replace("-jdk15on","");
+ } else if (jar.equals("commons-jexl") && version.startsWith("2")) { // special handling
+ jar="commons-jexl2";
+ } else {
+ String tmp = JAR_TO_BUILD_PROP.get(jar);
+ if (tmp != null) {
+ jar = tmp;
+ }
+ }
+ final String expected = versions.get(jar);
+ propNames.remove(jar);
+ if (expected == null) {
+ fail("Versions list does not contain: " + jar);
+ } else {
+ if (!version.equals(expected)) {
+ assertEquals(jar,expected,version);
+ }
+ }
+ }
+ }
+ eclipse.close();
+ if (propNames.size() > 0) {
+ fail("Should have no names left: "+Arrays.toString(propNames.toArray()));
+ }
+ }
+
+ public void testMaven() throws Exception {
+ final BufferedReader maven = new BufferedReader(
+ new FileReader(getFileFromHome("res/maven/ApacheJMeter_parent.pom"))); // assume default charset is OK here
+// <apache-bsf.version>2.4.0</apache-bsf.version>
+ final Pattern p = Pattern.compile("\\s+<([^\\.]+)\\.version>([^<]+)<.*");
+
+ String line;
+ while((line=maven.readLine()) != null){
+ final Matcher m = p.matcher(line);
+ if (m.matches()) {
+ String jar = m.group(1);
+ String version = m.group(2);
+ String expected = versions.get(jar);
+ propNames.remove(jar);
+ if (expected == null) {
+ fail("Versions list does not contain: " + jar);
+ } else {
+ if (!version.equals(expected)) {
+ assertEquals(jar,expected,version);
+ }
+ }
+ }
+ }
+ maven.close();
+ if (propNames.size() > 0) {
+ fail("Should have no names left: "+Arrays.toString(propNames.toArray()));
+ }
+ }
+
+}
Propchange: jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jmeter/trunk/test/src/org/apache/jmeter/JMeterVersionTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision