blob: fa6f99a0b05c4b5da956b990d36746f73a7f8eeb [file] [log] [blame]
/*
* 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.sling.testing.clients.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Return timeout values that can be multiplied by a configurable
* factor. Useful to cope with slower integration testing systems:
* use timeout constants in your code that work for usual development
* systems, and set a multiplier when running on a slower system.
*
* @deprecated duplicate of {@link org.apache.sling.testing.timeouts.TimeoutsProvider}. This will be removed in the future, so switch to
* the other one instead
*/
@Deprecated
public class TimeoutsProvider {
private static final Logger log = LoggerFactory.getLogger(TimeoutsProvider.class);
public static final String PROP_TIMEOUT_MULTIPLIER = "sling.testing.timeout.multiplier";
private static float timeoutFactor = -1;
private static TimeoutsProvider INSTANCE;
private TimeoutsProvider() {
if(timeoutFactor < 0) {
timeoutFactor = 1;
final String str = System.getProperty(PROP_TIMEOUT_MULTIPLIER);
if(str != null) {
try {
timeoutFactor = Float.valueOf(str.trim());
log.info("Timeout factor set to {} from system property {}",
timeoutFactor, PROP_TIMEOUT_MULTIPLIER);
} catch(NumberFormatException nfe) {
throw new IllegalStateException("Invalid timeout factor: " + PROP_TIMEOUT_MULTIPLIER + "=" + str);
}
}
}
}
public static TimeoutsProvider getInstance() {
if(INSTANCE == null) {
synchronized (TimeoutsProvider.class) {
INSTANCE = new TimeoutsProvider();
}
}
return INSTANCE;
}
public long getTimeout(long nomimalValue) {
final long result = (long)(nomimalValue * timeoutFactor);
return result;
}
public int getTimeout(int nomimalValue) {
final int result = (int)(nomimalValue * timeoutFactor);
return result;
}
/**
* Get timeout from a system property, with default value
*/
public int getTimeout(String systemPropertyName, int defaultNominalValue) {
int result = defaultNominalValue;
final String str = System.getProperty(systemPropertyName);
if(str != null) {
result = Integer.parseInt(str);
}
return getTimeout(result);
}
}