Package sample.driver

Source Code of sample.driver.WebDriver

/* 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
* http://www.sun.com/cddl/cddl.html or
* install_dir/legal/LICENSE
* 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 install_dir/legal/LICENSE.
* 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 sample.driver;

import com.sun.faban.driver.*;
import com.sun.faban.driver.util.Random;
import com.sun.faban.driver.util.ContentSizeStats;

import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
import java.util.logging.Logger;

/**
* Simple web driver example.
*/
@BenchmarkDefinition (
    name    = "Sample Web Workload 101",
    version = "0.2"
)
@BenchmarkDriver (
    name           = "WebDriver",
    threadPerScale    = 1,
    percentiles = { "90", "95th", "99.9th%"} // Show different supported formats
)
@MatrixMix (
    operations = {"MyOperation1", "MyOperation2", "MyOperation3"},
    mix = { @Row({  0, 70, 30 }),
            @Row({ 600, 40 }),
            @Row({ 50, 500 }) },
    deviation = 2
)
@NegativeExponential (
    cycleType = CycleType.CYCLETIME,
    cycleMean = 5000,
    cycleDeviation = 2
)
public class WebDriver {

    /** The driver context for this instance. */
    private DriverContext ctx;
    private HttpTransport http;
    private String url1, url2, url3;
    Logger logger;
    Random random;
    ContentSizeStats contentStats = null;

    /**
     * Constructs the web driver.
     * @throws XPathExpressionException An XPath error occurred
     */
    public WebDriver() throws XPathExpressionException {
        ctx = DriverContext.getContext();
        // HttpTransport.setProvider(
        //        "com.sun.faban.driver.transport.hc3.ApacheHC3Transport");
        http = HttpTransport.newInstance();
        logger = ctx.getLogger();
        random = ctx.getRandom();
        String host = ctx.getXPathValue("/webBenchmark/serverConfig/host");
        String port = ctx.getXPathValue("/webBenchmark/serverConfig/port");
        //String dbhost = ctx.getXPathValue("/webBenchmark/dbServer/fa:hostConfig/fa:host");
        String path1 = ctx.getProperty("path1");
        String path2 = ctx.getProperty("path2");
        String path3 = ctx.getProperty("path3");
        url1 = "http://" + host + ':' + port + '/' + path1;
        url2 = "http://" + host + ':' + port + '/' + path2;
        url3 = "http://" + host + ':' + port + '/' + path3;
        contentStats = new ContentSizeStats(ctx.getOperationCount());
        ctx.attachMetrics(contentStats);
    }

    /**
     * Tests the pre-run.
     */
    @OnceBefore
    public void testPreRun() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
        logger.info("Tested pre-run (sleep 5) done");
    }

    /**
     * Tests the post-run.
     */
    @OnceAfter
    public void testPostRun() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
        logger.info("Tested post-run (sleep 5) done");
    }

    /**
     * First operation.
     * @throws IOException An I/O or network error occurred.
     */
    @BenchmarkOperation (
        name    = "MyOperation1",
        percentileLimits = { 0, 1.75, 2 },
        timing  = Timing.AUTO
    )
    public void doMyOperation1() throws IOException {
        logger.finest("Accessing " + url1);
        http.fetchURL(url1);
        if (ctx.isTxSteadyState())
            contentStats.sumContentSize[ctx.getOperationId()] +=
                                                        http.getContentSize();
    }

    /**
     * Second operation.
     * @throws IOException An I/O or network error occurred.
     */
    @BenchmarkOperation (
        name    = "MyOperation2",
        percentileLimits = { 0, 1.75, 2 },
        timing  = Timing.AUTO
    )
    public void doMyOperation2() throws IOException {
        logger.finest("Accessing " + url2);
        http.fetchURL(url2);
        if (ctx.isTxSteadyState())
            contentStats.sumContentSize[ctx.getOperationId()] +=
                                                        http.getContentSize();
    }

    /**
     * Third operation.
     * @throws IOException An I/O or network error occurred.
     */
    @BenchmarkOperation (
        name    = "MyOperation3",
        percentileLimits = { 0, 0, 2 },
        timing  = Timing.AUTO
    )
    public void doMyOperation3() throws IOException {
        logger.finest("Accessing " + url3);
        http.fetchURL(url3);
        if (ctx.isTxSteadyState())
            contentStats.sumContentSize[ctx.getOperationId()] +=
                                                        http.getContentSize();
    }
}
TOP

Related Classes of sample.driver.WebDriver

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.