| career | drupal | java | mac | mysql | perl | scala | uml | unix  

JMeter example source code file (

This example JMeter source code file ( is included in the "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - JMeter tags/keywords

assertionresult, assertionresult, cannot, cannot, io, jdomexception, new_line, new_line, saxbuilder, saxbuilder, serializable, string, stringreader, threadlocal, xmlassertion

The JMeter 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
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.

package org.apache.jmeter.assertions;


import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

 * Checks if the result is a well-formed XML content using jdom
public class XMLAssertion extends AbstractTestElement implements Serializable, Assertion {
    private static final Logger log = LoggingManager.getLoggerForClass();

    private static final long serialVersionUID = 240L;

    private static final char NEW_LINE = '\n'; // $NON-NLS-1$

    // one builder for all requests in a thread
    private static final ThreadLocal<SAXBuilder> myBuilder = new ThreadLocal() {
        protected SAXBuilder initialValue() {
            return new SAXBuilder();

     * Returns the result of the Assertion. Here it checks wether the Sample
     * took to long to be considered successful. If so an AssertionResult
     * containing a FailureMessage will be returned. Otherwise the returned
     * AssertionResult will reflect the success of the Sample.
    public AssertionResult getResult(SampleResult response) {
        // no error as default
        AssertionResult result = new AssertionResult(getName());
        byte[] responseData = response.getResponseData();
        if (responseData.length == 0) {
            return result.setResultForNull();

        // the result data
        String resultData = new String(getResultBody(responseData)); // TODO - charset?

        SAXBuilder builder = myBuilder.get();

        try {
        } catch (JDOMException e) {
            log.debug("Cannot parse result content", e); // may well happen
        } catch (IOException e) {
            log.error("Cannot read result content", e); // should never happen

        return result;

     * Return the body of the http return.
    private byte[] getResultBody(byte[] resultData) {
        for (int i = 0; i < (resultData.length - 1); i++) {
            if (resultData[i] == NEW_LINE && resultData[i + 1] == NEW_LINE) {
                return getByteArraySlice(resultData, (i + 2), resultData.length - 1);
        return resultData;

     * Return a slice of a byte array
    private byte[] getByteArraySlice(byte[] array, int begin, int end) {
        byte[] slice = new byte[(end - begin + 1)];
        int count = 0;
        for (int i = begin; i <= end; i++) {
            slice[count] = array[i];

        return slice;

Other JMeter examples (source code examples)

Here is a short list of links related to this JMeter source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller


new blog posts


Copyright 1998-2021 Alvin Alexander,
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.