mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-01-11 16:32:01 -06:00
remove unused code
This commit is contained in:
parent
97cd593b3c
commit
4e6ad6db61
@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed 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 io.nosqlbench.activitytype.diag;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.LongToIntFunction;
|
||||
|
||||
public class DiagOpData {
|
||||
|
||||
private final String description;
|
||||
private final List<String> diaglog = new ArrayList<>();
|
||||
|
||||
private LongToIntFunction resultFunc;
|
||||
private long simulatedDelayNanos;
|
||||
|
||||
public DiagOpData(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* If this function is provided, the result will be set to the value of the
|
||||
* evaluated function with the op cycle.
|
||||
*
|
||||
* This is known as "resultfunc" in parameter space.
|
||||
*
|
||||
* The function must be thread-safe.
|
||||
*
|
||||
* @param resultFunc A function to map the cycle to the result value
|
||||
* @return this, for method chaining
|
||||
*/
|
||||
public DiagOpData withResultFunction(LongToIntFunction resultFunc) {
|
||||
this.resultFunc = resultFunc;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* If this function is provided, the completion of the operation will be
|
||||
* delayed until the system nanotime is at least the op start time in
|
||||
* addition to the provided delay.
|
||||
*
|
||||
* This is controlled as "delayfunc" in parameter space.
|
||||
*
|
||||
* @param simulatedDelayNanos The amount of nanos ensure as a minimum
|
||||
* of processing time for this op
|
||||
*/
|
||||
public DiagOpData setSimulatedDelayNanos(long simulatedDelayNanos) {
|
||||
this.simulatedDelayNanos = simulatedDelayNanos;
|
||||
return this;
|
||||
}
|
||||
|
||||
public long getSimulatedDelayNanos() {
|
||||
return simulatedDelayNanos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString() + ", description:'" + description;
|
||||
}
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
public void log(String logline) {
|
||||
this.diaglog.add(logline);
|
||||
}
|
||||
public List<String> getDiagLog() {
|
||||
return diaglog;
|
||||
}
|
||||
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed 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 io.nosqlbench.activitytype.diag;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
public class SequenceBlocker {
|
||||
private final static Logger logger = LogManager.getLogger(SequenceBlocker.class);
|
||||
private final AtomicLong sequence;
|
||||
private final AtomicLong waiting=new AtomicLong(0L);
|
||||
private final boolean errorsAreFatal;
|
||||
// private PriorityBlockingQueue<TakeANumber> queue = new PriorityBlockingQueue<>();
|
||||
private Exception fatalError;
|
||||
|
||||
public SequenceBlocker(long start, boolean errorsAreFatal) {
|
||||
this.sequence = new AtomicLong(start);
|
||||
this.errorsAreFatal = errorsAreFatal;
|
||||
}
|
||||
|
||||
public synchronized void awaitAndRun(long startAt, long endPlus, Runnable task) {
|
||||
waiting.incrementAndGet();
|
||||
|
||||
if (fatalError != null) {
|
||||
throw new RuntimeException("There was previously a fatal error, not allowing new tasks. Error=" + fatalError.getMessage());
|
||||
}
|
||||
|
||||
// queue.add(new TakeANumber(startAt, sequencePlusCount, task));
|
||||
while (sequence.get() != startAt) {
|
||||
try {
|
||||
wait(1_000);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
logger.error(() -> "Runnable errored in SequenceBlocker: " + e.getMessage());
|
||||
if (errorsAreFatal) {
|
||||
this.fatalError = e;
|
||||
}
|
||||
throw e;
|
||||
} finally {
|
||||
waiting.decrementAndGet();
|
||||
if (!sequence.compareAndSet(startAt,endPlus)) {
|
||||
throw new InvalidParameterException("Serious logic error in synchronizer. This should never fail.");
|
||||
}
|
||||
}
|
||||
notifyAll();
|
||||
}
|
||||
|
||||
public synchronized void awaitCompletion() {
|
||||
while (waiting.get()>0)
|
||||
try {
|
||||
wait(60_000);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private final static class TakeANumber implements Comparable<TakeANumber> {
|
||||
private final long start;
|
||||
private final long endPlus;
|
||||
private final Runnable task;
|
||||
|
||||
public TakeANumber(long start, long endPlus, Runnable task) {
|
||||
this.start = start;
|
||||
this.endPlus = endPlus;
|
||||
this.task = task;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(TakeANumber o) {
|
||||
return Long.compare(start, o.start);
|
||||
}
|
||||
|
||||
public long getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public long getEndPlus() {
|
||||
return endPlus;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "[" + getStart() + "-" + getEndPlus() + ")";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed 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 io.nosqlbench.activitytype.diag;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class SequenceBlockerTest {
|
||||
private final static Logger logger = LogManager.getLogger(SequenceBlockerTest.class);
|
||||
|
||||
@Test
|
||||
public void await() throws Exception {
|
||||
|
||||
SequenceBlocker sb = new SequenceBlocker(234L, true);
|
||||
new Thread(() -> sb.awaitAndRun(249L,253L, new Printer(logger, "249-253"))).start();
|
||||
Thread.sleep(100);
|
||||
new Thread(() -> sb.awaitAndRun(247L,249L, new Printer(logger, "247-249"))).start();
|
||||
Thread.sleep(100);
|
||||
new Thread(() -> sb.awaitAndRun(234L,247L, new Printer(logger, "234-247"))).start();
|
||||
|
||||
sb.awaitCompletion();
|
||||
System.out.flush();
|
||||
}
|
||||
|
||||
private final static class Printer implements Runnable {
|
||||
|
||||
private final Logger logger;
|
||||
private final String out;
|
||||
|
||||
public Printer(Logger logger, String out) {
|
||||
this.logger = logger;
|
||||
this.out = out;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
logger.debug(out);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user