Uses 1319K of libraries. Click here for Pure Java version (4203L/21K).
1 | !7 |
2 | |
3 | // TODO: wait with the test on boot until #1027019 has done its thing |
4 | |
5 | cmodule RebootConsciousness > DynPrintLog { |
6 | DoubleRange typicalTimeToReboot = new(1000, 0); |
7 | |
8 | start-thread { |
9 | theTest(); |
10 | /*watchQuotedLog_future(rebootLogFile(), 1000, voidfunc(S s) { |
11 | new Matches m; |
12 | if "* Rebooting computer" |
13 | predictReboot(); |
14 | });*/ |
15 | |
16 | dm_vmBus_onMessage_q doingCleanReboot(r predictReboot); |
17 | } |
18 | |
19 | void theTest { |
20 | LS lastLines = unquoteAll(lastNLines(2, rebootLogFile())); |
21 | pnl(lastLines); |
22 | analyzeLines(lastLines); |
23 | } |
24 | |
25 | void analyzeLines(LS lastLines) { |
26 | if (empty(lastLines)) ret; |
27 | if (l(lastLines) == 1) ret with confused("Only one event: " + lastLines); |
28 | |
29 | S line1 = first(lastLines), line2 = second(lastLines); |
30 | new Matches m; |
31 | new Matches m2; |
32 | if (match("* Rebooting computer", line1, m) |
33 | && match("* Boot timestamp changed from * to *", line2, m2)) { |
34 | long ts1 = parseLong(m.get(0)), ts2 = parseLong(m2.get(2)); |
35 | if (ts2 > ts1) { |
36 | notConfused("All OK! A reboot happened after my reboot command"); |
37 | double timeToReboot = toSeconds(ts2-ts1); |
38 | setField(typicalTimeToReboot := DoubleRange( |
39 | min(typicalTimeToReboot.start, timeToReboot), |
40 | max(typicalTimeToReboot.end, timeToReboot)); |
41 | } else |
42 | confused("Timestamps are weird: " + lastLines); |
43 | } else |
44 | confused("Was expecting reboot cmd & then reboot effect: " + lastLines); |
45 | } |
46 | |
47 | void confused(S msg) { |
48 | printAndProgramLog("Confused: " + msg); |
49 | } |
50 | |
51 | void notConfused(S msg) { |
52 | printAndProgramLog("I am very satisfied. " + msg); |
53 | } |
54 | |
55 | void predict(S msg) { |
56 | printAndProgramLog("I predict: " + msg); |
57 | dm_sayInEnglish(msg); |
58 | } |
59 | |
60 | void predictReboot enter { |
61 | predict("A reboot will happen in between " |
62 | + formatDouble(typicalTimeToReboot.start, 1) + " and " |
63 | + formatDouble(typicalTimeToReboot.end, 1) + " seconds"); |
64 | } |
65 | } |
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
Snippet ID: | #1027021 |
Snippet name: | Mini Consciousness Analyzing Reboots |
Eternal ID of this version: | #1027021/21 |
Text MD5: | 38140197fc503dac9d2ff6719d601d79 |
Transpilation MD5: | 953f3bf483a02d529684f074e58dca0d |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2020-02-10 15:20:50 |
Source code size: | 2013 bytes / 65 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 265 / 802 |
Version history: | 20 change(s) |
Referenced in: | [show references] |