Package net.grinder.engine.common

Examples of net.grinder.engine.common.ScriptLocation


    m_fanOutStreamSender = new FanOutStreamSender(GrinderConstants.AGENT_FANOUT_STREAM_THREAD_COUNT);
    m_timer = new Timer(false);
    try {
      while (true) {
        m_logger.info(GrinderBuild.getName());
        ScriptLocation script = null;
        GrinderProperties properties;

        do {
          properties = createAndMergeProperties(grinderProperties,
              startMessage != null ? startMessage.getProperties() : null);
          properties.setProperty(GrinderProperties.CONSOLE_HOST, m_agentConfig.getControllerIP());
          m_agentIdentity.setName(m_agentConfig.getAgentHostID());
          final Connector connector = m_connectorFactory.create(properties);
          // We only reconnect if the connection details have changed.
          if (consoleCommunication != null && !consoleCommunication.getConnector().equals(connector)) {
            shutdownConsoleCommunication(consoleCommunication);
            consoleCommunication = null;
            // Accept any startMessage from previous console - see
            // bug 2092881.
          }

          if (consoleCommunication == null && connector != null) {
            try {
              consoleCommunication = new ConsoleCommunication(connector, grinderProperties.getProperty(
                  "grinder.user", "_default"));
              consoleCommunication.start();
              m_logger.info("Connect to console at {}", connector.getEndpointAsString());
            } catch (CommunicationException e) {
              if (m_proceedWithoutConsole) {
                m_logger.warn("{}, proceeding without the console; set "
                    + "grinder.useConsole=false to disable this warning.", e.getMessage());
              } else {
                m_logger.error(e.getMessage());
                return;
              }
            }
          }

          if (consoleCommunication != null && startMessage == null) {
            m_logger.info("Waiting for console signal");
            m_consoleListener.waitForMessage();

            if (m_consoleListener.received(ConsoleListener.START)) {
              startMessage = m_consoleListener.getLastStartGrinderMessage();
              continue; // Loop to handle new properties.
            } else {
              break; // Another message, check at end of outer while loop.
            }
          }

          if (startMessage != null) {

            final GrinderProperties messageProperties = startMessage.getProperties();
            final Directory fileStoreDirectory = m_fileStore.getDirectory();

            // Convert relative path to absolute path.
            messageProperties.setAssociatedFile(fileStoreDirectory.getFile(messageProperties
                .getAssociatedFile()));

            final File consoleScript = messageProperties.resolveRelativeFile(messageProperties.getFile(
                GrinderProperties.SCRIPT, GrinderProperties.DEFAULT_SCRIPT));

            // We only fall back to the agent properties if the start message
            // doesn't specify a script and there is no default script.
            if (messageProperties.containsKey(GrinderProperties.SCRIPT) || consoleScript.canRead()) {
              // The script directory may not be the file's direct parent.
              script = new ScriptLocation(fileStoreDirectory, consoleScript);
            }
            m_agentIdentity.setNumber(startMessage.getAgentNumber());
          } else {
            m_agentIdentity.setNumber(-1);
          }

          if (script == null) {
            final File scriptFile = properties.resolveRelativeFile(properties.getFile(
                GrinderProperties.SCRIPT, GrinderProperties.DEFAULT_SCRIPT));
            script = new ScriptLocation(scriptFile);
          }
          m_logger.debug("The script location is {}", script.getFile().getAbsolutePath());
          if (!script.getFile().canRead()) {
            m_logger.error("The script file '{}' does not exist or is not readable.", script);
            script = null;
            break;
          }
        } while (script == null);

        if (script != null) {
          // Set up log directory.
          if (!properties.containsKey(GrinderProperties.LOG_DIRECTORY)) {
            properties.setFile(GrinderProperties.LOG_DIRECTORY, new File(m_agentConfig.getHome()
                .getLogDirectory(), properties.getProperty(GRINDER_PROP_TEST_ID, "default")));
          }
          File logFile = new File(properties.getFile(GrinderProperties.LOG_DIRECTORY, new File(".")),
              m_agentIdentity.getName() + "-" + m_agentIdentity.getNumber() + ".log");
          m_logger.info("log file : {}", logFile);
          AbstractLanguageHandler handler = Lang.getByFileName(script.getFile()).getHandler();
          final WorkerFactory workerFactory;
          Properties rebasedSystemProperty = rebaseSystemClassPath(System.getProperties(), m_agentConfig.getCurrentDirectory());

          String jvmArguments = buildTestRunProperties(script, handler, rebasedSystemProperty, properties);

          if (!properties.getBoolean("grinder.debug.singleprocess", false)) {
            // Fix to provide empty system classpath to speed up
            final WorkerProcessCommandLine workerCommandLine = new WorkerProcessCommandLine(properties,
                filterSystemClassPath(rebasedSystemProperty, handler, m_logger), jvmArguments,
                script.getDirectory());

            m_logger.info("Worker process command line: {}", workerCommandLine);
            FileUtils.writeStringToFile(logFile, workerCommandLine.toString() + "\n\n");
            workerFactory = new ProcessWorkerFactory(workerCommandLine, m_agentIdentity,
                m_fanOutStreamSender, consoleCommunication != null, script, properties);
View Full Code Here


      String buildJVMArgumentWithoutMemory = builder.buildJVMArgumentWithoutMemory();
      LOGGER.info("jvm args : {} ", buildJVMArgumentWithoutMemory);
      final WorkerProcessCommandLine workerCommandLine = new WorkerProcessCommandLine(properties,
          systemProperties, buildJVMArgumentWithoutMemory, workingDirectory);

      ScriptLocation scriptLocation = new ScriptLocation(workingDirectory, script);
      ProcessWorkerFactory workerFactory = new ProcessWorkerFactory(workerCommandLine, agentIdentity,
          fanOutStreamSender, false, scriptLocation, properties);

      workerLauncher = new ErrorStreamRedirectWorkerLauncher(1, workerFactory, eventSynchronisation, LOGGER,
          byteArrayErrorStream);
View Full Code Here

    JUnitThreadContextInitializer init = new JUnitThreadContextInitializer();
    init.initialize();

    // for test, used to get groovy source file.
    String file = getClass().getClassLoader().getResource("org/ngrinder/TestRunner.groovy").getFile();
    GroovyScriptEngine engine = new GroovyScriptEngine(new ScriptLocation(new File(file).getAbsoluteFile()));

    init.attachWorkerThreadContext();
    GroovyScriptEngine.GroovyWorkerRunnable worker = (GroovyScriptEngine.GroovyWorkerRunnable) engine
        .createWorkerRunnable();
    assertStaticField(engine.m_groovyClass, "callCount1", 0);
View Full Code Here

TOP

Related Classes of net.grinder.engine.common.ScriptLocation

Copyright © 2018 www.massapicom. 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.