content: /**
   * 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
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.activemq.maven;
  
  import org.apache.activemq.tool.JMSMemtest;
  import org.apache.maven.plugin.AbstractMojo;
  import org.apache.maven.plugin.MojoExecutionException;
  
  /**
   * Goal which does a memory usage test to check for any memory leak
   *
   * @goal memtest
   * @phase process-sources
   */
  public class MemtestMojo extends AbstractMojo {
  
      /**
       * @parameter property="url"
       */
      private String url;
  
      /**
       * @parameter property="topic" default-value="true"
       * @required
       */
      private String topic;
  
      /**
       * @parameter property="connectionCheckpointSize" default-value="-1"
       * @required
       */
      private String connectionCheckpointSize;
  
      /**
       * @parameter property="durable" default-value="false"
       * @required
       */
      private String durable;
  
      /**
       * @parameter property="producerCount" default-value="1"
       * @required
       */
      private String producerCount;
  
      /**
       * @parameter property="prefetchSize" default-value="-1"
       * @required
       */
      private String prefetchSize;
  
      /**
       * @parameter property="consumerCount" default-value="1"
       * @required
       */
      private String consumerCount;
  
      /**
       * @parameter property="messageCount" default-value="100000"
       * @required
       */
      private String messageCount;
  
      /**
       * @parameter property="messageSize" default-value="10240"
       * @required
       */
      private String messageSize;
  
      /**
       * @parameter property="checkpointInterval" default-value="2"
       * @required
       */
      private String checkpointInterval;
  
      /**
       * @parameter property="destinationName" default-value="FOO.BAR"
       * @required
       */
      private String destinationName;
  
      /**
       * @parameter property="$reportName"
       *            default-value="activemq-memory-usage-report"
       * @required
       */
      private String reportName;
  
      /**
       * @parameter property="reportDirectory"
       *            default-value="${project.build.directory}/test-memtest"
       * @required
       */
      private String reportDirectory;
  
      @Override
      public void execute() throws MojoExecutionException {
  
          JMSMemtest.main(createArgument());
      }
  
      public String[] createArgument() {
          String[] options = {
              "url=" + url, "topic=" + topic, "durable=" + durable, "connectionCheckpointSize=" + connectionCheckpointSize, "producerCount=" + producerCount, "consumerCount=" + consumerCount,
              "messageCount=" + messageCount, "messageSize=" + messageSize, "checkpointInterval=" + checkpointInterval, "destinationName=" + destinationName, "reportName=" + reportName,
              "prefetchSize=" + prefetchSize, "reportDirectory=" + reportDirectory,
          };
          return options;
      }
  }
  