| 12 | |
| 13 | public final class RaftTest { |
| 14 | private final class Env implements Raft.Env { |
| 15 | private final SimpleDateFormat dtf = new SimpleDateFormat("yy-MM-dd HH:mm:ss.SSS"); |
| 16 | private final Date date = new Date(0); |
| 17 | private final FieldPosition fieldPos = new FieldPosition(0); |
| 18 | private final StringBuffer strBuf = new StringBuffer(); |
| 19 | private final ArrayDeque<Object> events = new ArrayDeque<>(16); |
| 20 | private final ArrayDeque<Object> clientEvents = new ArrayDeque<>(16); |
| 21 | private final HashMap<Long, Raft.Log> logMap = new HashMap<>(); |
| 22 | private Raft.Log @NotNull [] logs = new Raft.Log[4]; // 初始容量 |
| 23 | private long logCount; // logs的有效数量 |
| 24 | private long randSeed; |
| 25 | private final int id; |
| 26 | private final Raft raft; |
| 27 | |
| 28 | Env(int id) { |
| 29 | this.id = id; |
| 30 | randSeed = (id + 123456789L) * 987654321L; |
| 31 | raft = new Raft(this, RAFT_COUNT, id, curTime); |
| 32 | } |
| 33 | |
| 34 | @NotNull Raft getRaft() { |
| 35 | return raft; |
| 36 | } |
| 37 | |
| 38 | @Override |
| 39 | public long getCurTime() { |
| 40 | return curTime; |
| 41 | } |
| 42 | |
| 43 | @Override |
| 44 | public int random(int max) { |
| 45 | long s = randSeed * 6364136223846793005L + 1442695040888963407L; |
| 46 | randSeed = s; |
| 47 | return (int)(((s >>> 32) * max) >>> 32); |
| 48 | } |
| 49 | |
| 50 | @Override |
| 51 | public @Nullable Object recvEvent() { |
| 52 | return events.pollFirst(); |
| 53 | } |
| 54 | |
| 55 | @Override |
| 56 | public void sendEvent(int id, @NotNull Object obj) { |
| 57 | envs[id].events.addLast(obj); |
| 58 | } |
| 59 | |
| 60 | @Nullable Object recvClientEvent() { |
| 61 | return clientEvents.pollFirst(); |
| 62 | } |
| 63 | |
| 64 | @Override |
| 65 | public void sendClientEvent(@NotNull Object obj) { |
| 66 | clientEvents.addLast(obj); |
| 67 | } |
| 68 | |
| 69 | @Override |
| 70 | public long getLogCount() { |
| 71 | return logCount; |
nothing calls this directly
no outgoing calls
no test coverage detected