All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.grinder.engine.process.WorkerProcessEntryPoint Maven / Gradle / Ivy

The newest version!
// Copyright (C) 2005 - 2011 Philip Aston
// All rights reserved.
//
// This file is part of The Grinder software distribution. Refer to
// the file LICENSE which is part of The Grinder distribution for
// licensing details. The Grinder distribution is available on the
// Internet at http://grinder.sourceforge.net/
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.

package net.grinder.engine.process;

import java.io.InputStream;

import net.grinder.communication.StreamReceiver;

import org.slf4j.LoggerFactory;
import org.slf4j.Logger;


/**
 * Entry point for processes launched by the agent.
 *
 * @author Philip Aston
 */
public class WorkerProcessEntryPoint {

  /**
   * Main method.
   *
   * 

* This is not intended to be used directly; you should always start The * Grinder by starting an agent process. If you're debugging, you might want * to use the single threaded mode if you want the worker "process" to be * launched in the same JVM as the agent. See the grinder.debug.singleprocess * property. *

* * @param args * Command line arguments. */ public static void main(final String[] args) { if (args.length > 1) { System.err.println("Usage: java " + GrinderProcess.class.getName()); System.exit(-1); } final int exitCode = new WorkerProcessEntryPoint().run(System.in); System.exit(exitCode); } /** * Create and run a process. * * @param agentCommunicationStream The agent communication stream. * @return Process exit code. */ public int run(InputStream agentCommunicationStream) { final Logger logger = LoggerFactory.getLogger("worker-bootstrap"); final GrinderProcess grinderProcess; try { grinderProcess = new GrinderProcess(new StreamReceiver(agentCommunicationStream)); } catch (Exception e) { logger.error("Error initialising worker process", e); return -2; } try { grinderProcess.run(); return 0; } catch (Exception e) { logger.error("Error running worker process", e); return -3; } catch (Error t) { logger.error("Error running worker process", t); throw t; } finally { grinderProcess.shutdown(agentCommunicationStream == System.in); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy