Package com.sun.faban.driver.util

Source Code of com.sun.faban.driver.util.ContentSizeStats

/* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* https://faban.dev.java.net/public/CDDLv1.0.html or
* install_dir/license.txt
* See the License for the specific language governing
* permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at faban/src/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* $Id$
*
* Copyright 2005-2009 Sun Microsystems Inc. All Rights Reserved
*/
package com.sun.faban.driver.util;

import com.sun.faban.driver.CustomMetrics;
import com.sun.faban.driver.Result;

/**
* The ContentSizeStats collects the content size metrics for the FabanHTTPBench
* or othe standard Http drivers.
*
* @author Akara Sucharitakul
*/
public class ContentSizeStats implements CustomMetrics {

    /** The sum of content sizes. */
    public long[] sumContentSize;

    /**
     * Constructs the ContentSizeStats for the given number of operations.
     * @param opCount The number of operations.
     */
    public ContentSizeStats(int opCount) {
        sumContentSize = new long[opCount];
    }

    /**
     * Aggregates the ContentSizeStats from another source or thread with
     * the current one.
     * @param other The stats from another source
     */
    public void add(CustomMetrics other) {
        ContentSizeStats o = (ContentSizeStats) other;
        for (int i = 0; i < sumContentSize.length; i++)
            sumContentSize[i] += o.sumContentSize[i];
    }

    /**
     * The metrics need to be cloneable and not throw any exceptions.
     * @return The ContentSizeStats clone
     */
    public Object clone() {
        ContentSizeStats o = new ContentSizeStats(sumContentSize.length);
        for (int i = 0; i < sumContentSize.length; i++)
            o.sumContentSize[i] = sumContentSize[i];
        return o;
    }

    /**
     * Obtains the results of this ContentSizeStats as to be reported.
     * @return The result elements for each metric.
     */
    public Element[] getResults() {
        Element[] e = new Element[sumContentSize.length];
        Result r = Result.getInstance();
        String[] opsNames = r.getOpsNames();
        int[] counts = r.getOpsCountSteady();
        for (int i = 0; i < e.length; i++) {
            e[i] = new Element();
            e[i].description = "Average Content Size for " + opsNames[i];
            if (counts[i] != 0)
                e[i].result = String.format("%.2f",
                                sumContentSize[i] / (double) counts[i]);
            else
                e[i].result = "N/A";
        }
        return e;
    }
}
TOP

Related Classes of com.sun.faban.driver.util.ContentSizeStats

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.