/*
* 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.artemis.jms.soak.example;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import java.util.Random;
import java.util.logging.Logger;
public class SoakBase {
private static final Logger log = Logger.getLogger(SoakBase.class.getName());
private static final String DEFAULT_SOAK_PROPERTIES_FILE_NAME = "soak.properties";
public static final int TO_MILLIS = 60 * 1000; // from minute to milliseconds
public static byte[] randomByteArray(final int length) {
byte[] bytes = new byte[length];
Random random = new Random();
for (int i = 0; i < length; i++) {
bytes[i] = Integer.valueOf(random.nextInt()).byteValue();
}
return bytes;
}
protected static String getPerfFileName() {
String fileName = System.getProperty("soak.props");
if (fileName == null) {
fileName = SoakBase.DEFAULT_SOAK_PROPERTIES_FILE_NAME;
}
return fileName;
}
protected static SoakParams getParams(final String fileName) throws Exception {
Properties props = null;
try (InputStream is = new FileInputStream(fileName)) {
props = new Properties();
props.load(is);
}
int durationInMinutes = Integer.valueOf(props.getProperty("duration-in-minutes"));
int noOfWarmupMessages = Integer.valueOf(props.getProperty("num-warmup-messages"));
int messageSize = Integer.valueOf(props.getProperty("message-size"));
boolean durable = Boolean.valueOf(props.getProperty("durable"));
boolean transacted = Boolean.valueOf(props.getProperty("transacted"));
int batchSize = Integer.valueOf(props.getProperty("batch-size"));
boolean drainQueue = Boolean.valueOf(props.getProperty("drain-queue"));
String destinationLookup = props.getProperty("destination-lookup");
String connectionFactoryLookup = props.getProperty("connection-factory-lookup");
int throttleRate = Integer.valueOf(props.getProperty("throttle-rate"));
boolean dupsOK = Boolean.valueOf(props.getProperty("dups-ok-acknowledge"));
boolean disableMessageID = Boolean.valueOf(props.getProperty("disable-message-id"));
boolean disableTimestamp = Boolean.valueOf(props.getProperty("disable-message-timestamp"));
SoakBase.log.info("duration-in-minutes: " + durationInMinutes);
SoakBase.log.info("num-warmup-messages: " + noOfWarmupMessages);
SoakBase.log.info("message-size: " + messageSize);
SoakBase.log.info("durable: " + durable);
SoakBase.log.info("transacted: " + transacted);
SoakBase.log.info("batch-size: " + batchSize);
SoakBase.log.info("drain-queue: " + drainQueue);
SoakBase.log.info("throttle-rate: " + throttleRate);
SoakBase.log.info("connection-factory-lookup: " + connectionFactoryLookup);
SoakBase.log.info("destination-lookup: " + destinationLookup);
SoakBase.log.info("disable-message-id: " + disableMessageID);
SoakBase.log.info("disable-message-timestamp: " + disableTimestamp);
SoakBase.log.info("dups-ok-acknowledge: " + dupsOK);
SoakParams soakParams = new SoakParams();
soakParams.setDurationInMinutes(durationInMinutes);
soakParams.setNoOfWarmupMessages(noOfWarmupMessages);
soakParams.setMessageSize(messageSize);
soakParams.setDurable(durable);
soakParams.setSessionTransacted(transacted);
soakParams.setBatchSize(batchSize);
soakParams.setDrainQueue(drainQueue);
soakParams.setConnectionFactoryLookup(connectionFactoryLookup);
soakParams.setDestinationLookup(destinationLookup);
soakParams.setThrottleRate(throttleRate);
soakParams.setDisableMessageID(disableMessageID);
soakParams.setDisableTimestamp(disableTimestamp);
soakParams.setDupsOK(dupsOK);
return soakParams;
}
}