MCPcopy Create free account
hub / github.com/e2wugui/zeze / Task

Class Task

ZezeJava/ZezeJavaTest/src/Infinite/Tasks.java:56–119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54 // 所有以long为key的记录访问可以使用这个基类。
55 // 其他类型的key需要再定义新的基类。
56 static abstract class Task implements FuncLong {
57 final Set<Long> Keys = new HashSet<>();
58 demo.App App;
59
60 int getKeyNumber() {
61 return 1;
62 }
63
64 int getKeyBound() {
65 return Simulate.AccessKeyBound;
66 }
67
68 boolean IsProcedure() {
69 return true;
70 }
71
72 App Run() throws ExecutionException, InterruptedException {
73 var app = Simulate.getInstance().randApp();
74 app.Run(this);
75 return app;
76 }
77
78 void prepare() throws Exception {
79 }
80
81 abstract long process();
82
83 void verify() throws Exception {
84 // default verify
85 var name = getClass().getName();
86 var runCount = getRunCounter(name).sum();
87 var successCount = getSuccessCounter(name).sum();
88 var stats = PerfCounter.instance().getOrAddProcedureInfo(name);
89 var abortCount = stats.getOrAddResult(Procedure.AbortException).sum();
90 var tooManyTry = stats.getOrAddResult(Procedure.TooManyTry).sum();
91 Simulate.logger.info(" totalCount({})={}", name, runCount);
92 Simulate.logger.info("successCount({})={}", name, successCount);
93 if (abortCount != 0)
94 Simulate.logger.warn(" abortCount({})={}", name, abortCount);
95 if (tooManyTry != 0)
96 Simulate.logger.warn(" tooManyTry({})={}", name, tooManyTry);
97 if (runCount != successCount + abortCount + tooManyTry) {
98 Simulate.logger.error("verify failed({}): {} != {} = {} + {} + {}\n{}",
99 name, runCount, successCount + abortCount + tooManyTry, successCount, abortCount, tooManyTry,
100 stats.toString(false));
101 Assert.fail();
102 }
103 }
104
105 @Override
106 public long call() {
107 var name = getClass().getName();
108 var result = process();
109 if (result == 0) {
110 var txn = Transaction.getCurrent();
111 if (txn != null)
112 txn.runWhileCommit(() -> getSuccessCounter(name).increment());
113 else

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected