aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/test/PerformanceTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/reader/test/PerformanceTest.java')
-rw-r--r--src/cz/crcs/ectester/reader/test/PerformanceTest.java141
1 files changed, 0 insertions, 141 deletions
diff --git a/src/cz/crcs/ectester/reader/test/PerformanceTest.java b/src/cz/crcs/ectester/reader/test/PerformanceTest.java
deleted file mode 100644
index f9cba46..0000000
--- a/src/cz/crcs/ectester/reader/test/PerformanceTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package cz.crcs.ectester.reader.test;
-
-import cz.crcs.ectester.applet.ECTesterApplet;
-import cz.crcs.ectester.common.test.Result;
-import cz.crcs.ectester.common.test.SimpleTest;
-import cz.crcs.ectester.common.test.TestCallback;
-import cz.crcs.ectester.common.test.TestException;
-import cz.crcs.ectester.reader.CardMngr;
-import cz.crcs.ectester.reader.command.Command;
-import cz.crcs.ectester.reader.response.Response;
-
-import javax.smartcardio.CardException;
-import java.util.Arrays;
-
-/**
- * @author Jan Jancar johny@neuromancer.sk
- */
-public class PerformanceTest extends SimpleTest<CommandTestable> {
- private CardMngr cardManager;
- private long[] times;
- private long[] reducedTimes;
- private Response[] responses;
- private long mean;
- private long median;
- private long mode;
- private int count;
- private String desc;
-
- private PerformanceTest(CardMngr cardManager, CommandTestable testable, int count, String desc) {
- super(testable, new TestCallback<CommandTestable>() {
- @Override
- public Result apply(CommandTestable testable) {
- return new Result(Result.Value.SUCCESS);
- }
- });
- this.cardManager = cardManager;
- this.count = count;
- this.desc = desc;
- }
-
- public static PerformanceTest repeat(CardMngr cardManager, Command cmd, int count) {
- return new PerformanceTest(cardManager, new CommandTestable(cmd), count, null);
- }
-
- public static PerformanceTest repeat(CardMngr cardManager, String desc, Command cmd, int count) {
- return new PerformanceTest(cardManager, new CommandTestable(cmd), count, desc);
- }
-
- @Override
- public String getDescription() {
- String rest = String.format("Mean = %d ns, Median = %d ns, Mode = %d ns", mean, median, mode);
- return (desc == null ? rest : desc + " (" + rest + ")");
- }
-
- @Override
- protected void runSelf() {
- long baseTime;
- try {
- new Command.SetDryRunMode(cardManager, ECTesterApplet.MODE_DRY_RUN).send();
- testable.run();
- baseTime = testable.getResponse().getDuration();
- testable.reset();
- testable.run();
- baseTime += testable.getResponse().getDuration();
- testable.reset();
- baseTime /= 2;
- new Command.SetDryRunMode(cardManager, ECTesterApplet.MODE_NORMAL).send();
- } catch (CardException ce) {
- throw new TestException(ce);
- }
-
- times = new long[count];
- reducedTimes = new long[count];
- responses = new Response[count];
- for (int i = 0; i < count; ++i) {
- testable.run();
- responses[i] = testable.getResponse();
- times[i] = responses[i].getDuration();
- reducedTimes[i] = times[i] - baseTime;
- testable.reset();
- }
-
- mean = Arrays.stream(reducedTimes).sum() / count;
-
- long[] sorted = reducedTimes.clone();
- Arrays.sort(sorted);
- if (count % 2 == 0) {
- median = (sorted[(count / 2) - 1] + sorted[count / 2]) / 2;
- } else {
- median = sorted[count / 2];
- }
-
- long max_occurences = 0;
- int i = 0;
- while (i < count) {
- long current_value = sorted[i];
- long current_occurences = 0;
- while (i < count && sorted[i] == current_value) {
- i++;
- current_occurences++;
- }
- if (current_occurences > max_occurences) {
- max_occurences = current_occurences;
- mode = current_value;
- }
- }
- result = callback.apply(testable);
- }
-
- public long getCount() {
- return count;
- }
-
- public Command getCommand() {
- return testable.getCommand();
- }
-
- public Response[] getResponses() {
- return responses;
- }
-
- public long[] getTimes() {
- return times;
- }
-
- public long[] getReducedTimes() {
- return reducedTimes;
- }
-
- public long getMean() {
- return mean;
- }
-
- public long getMedian() {
- return median;
- }
-
- public long getMode() {
- return mode;
- }
-}