/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch 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.elasticsearch.threadpool;
import org.elasticsearch.test.ESTestCase;
import static org.hamcrest.CoreMatchers.equalTo;
public class ThreadPoolTests extends ESTestCase {
public void testBoundedByBelowMin() {
int min = randomIntBetween(0, 32);
int max = randomIntBetween(min + 1, 64);
int value = randomIntBetween(Integer.MIN_VALUE, min - 1);
assertThat(ThreadPool.boundedBy(value, min, max), equalTo(min));
}
public void testBoundedByAboveMax() {
int min = randomIntBetween(0, 32);
int max = randomIntBetween(min + 1, 64);
int value = randomIntBetween(max + 1, Integer.MAX_VALUE);
assertThat(ThreadPool.boundedBy(value, min, max), equalTo(max));
}
public void testBoundedByBetweenMinAndMax() {
int min = randomIntBetween(0, 32);
int max = randomIntBetween(min + 1, 64);
int value = randomIntBetween(min, max);
assertThat(ThreadPool.boundedBy(value, min, max), equalTo(value));
}
public void testAbsoluteTime() throws Exception {
TestThreadPool threadPool = new TestThreadPool("test");
try {
long currentTime = System.currentTimeMillis();
long gotTime = threadPool.absoluteTimeInMillis();
long delta = Math.abs(gotTime - currentTime);
assertTrue("thread pool cached absolute time " + gotTime + " is too far from real current time " + currentTime,
delta < 10000); // the delta can be large, we just care it is the same order of magnitude
} finally {
threadPool.shutdown();
threadPool.close();
}
}
}