Commit Graph
100 Commits
Author SHA1 Message Date
cozis 80f1667695 simulator: increase default interval for partition and crash events 2026-06-20 17:10:42 +02:00
cozis 60d4306856 node: remove local_time and use the scheduler's global time instead 2026-06-20 16:47:31 +02:00
cozis 91a515cf87 io_interface: properly propagate error.Canceled to caller 2026-06-20 16:08:11 +02:00
cozis 7f3e129337 build: add crash_recovery.zig to build.zig 2026-06-20 14:25:35 +02:00
cozis 3c5b88223c examples: add example that tests node crash injection 2026-06-20 14:25:08 +02:00
cozis b5ee1f0885 simulator: add automatic inection of node crashes 2026-06-20 14:23:59 +02:00
cozis 987ba52068 node: support crash and restart 2026-06-20 14:17:43 +02:00
cozis d6e098cf40 scheduler: support crashing and restarting tasks 2026-06-20 14:14:19 +02:00
cozis 5163adc087 sometimes: note possible mutable site symbol 2026-06-20 10:05:07 +02:00
cozis dd2c5b1ec9 simulator: add per-step events 2026-06-20 10:03:12 +02:00
cozis b0a167036c simulator: add unified fault control 2026-06-20 10:02:29 +02:00
cozis 7a2a841395 node: add fault enable toggle 2026-06-20 09:58:51 +02:00
cozis 638d8073b0 io_interface: return peer address from accept 2026-06-20 09:55:29 +02:00
cozis a4714b07e6 node: expose remote socket address 2026-06-20 09:54:57 +02:00
cozis 58f8fc7581 examples: give clients network addresses 2026-06-20 09:54:04 +02:00
cozis 9dc7bea95c io_interface: map addressless connect 2026-06-20 09:53:45 +02:00
cozis f34b542582 network: track socket addresses 2026-06-20 09:53:13 +02:00
cozis 3f96898f54 io_interface: implement fileSetLength 2026-06-20 09:46:35 +02:00
cozis edecb61ba4 node: add setFileLength 2026-06-20 09:46:14 +02:00
cozis 13f001e317 file_system: add setFileLength 2026-06-20 09:45:59 +02:00
cozis 2c5afbd283 sometimes: don't report reachableSometimes in the N/M form 2026-06-19 17:03:55 +02:00
cozis 93b4efbb2f node: add injection of partial reads and writes 2026-06-19 16:57:47 +02:00
cozis 6d27a5fcec examples: add example that tests whether fault injection reaches interesting branches 2026-06-19 16:57:19 +02:00
cozis c37d29977d examples: add fault coverage example 2026-06-19 15:52:03 +02:00
cozis 306aa88f00 simulator: add network partition fault injection 2026-06-19 15:51:53 +02:00
cozis e8ba94b418 partition_policy: add partition shape policy 2026-06-19 15:51:38 +02:00
cozis 0b792274e3 network: honor partitions in connect and send 2026-06-19 15:51:26 +02:00
cozis 50dea84f1d partition: add broken-link tracking 2026-06-19 15:51:13 +02:00
cozis 08518e15ad io_interface: implement dirRename 2026-06-19 13:41:15 +02:00
cozis 5b1e8c5d24 node: add rename 2026-06-19 13:41:04 +02:00
cozis 89e5fff8a4 file_system: add rename 2026-06-19 13:40:50 +02:00
cozis 3a0eab16a7 examples: add example for sometimes assertions 2026-06-19 13:27:03 +02:00
cozis fa09d425a0 examples: minor cleanup 2026-06-19 13:26:47 +02:00
cozis e98630cafd simulator: expose reachableSometimes via Simulator 2026-06-19 13:26:24 +02:00
cozis d3def64bba sometimes: implement reachableSometimes and build a list of sometimes branches at compile-time 2026-06-19 13:25:59 +02:00
cozis 9f867c71ee examples: explicitly dump sometimes assertions report in example.zig 2026-06-19 13:02:16 +02:00
cozis 53aa509153 simulator: expose sometimes assertions via the simulator object 2026-06-19 13:01:04 +02:00
cozis 9e56a63360 sometimes: implement registry of sometimes assertions 2026-06-19 13:00:44 +02:00
cozis 43a24f4771 readme: update README.md and add DST.md 2026-06-09 15:38:35 +02:00
cozis 890d16fa7b readme: add timeline diagram image 2026-06-08 12:44:20 +02:00
cozis b7d748d081 misc: ignore .html and .txt files 2026-06-08 12:36:25 +02:00
cozis 6133b7cb60 build: add timeline_html, timeline_ascii, strace commands to build.zig to easily generate diagrams from a trace 2026-06-08 12:36:09 +02:00
cozis 720d20d3e0 diagram: add program to generate various visual representations of the simulation trace 2026-06-08 12:35:34 +02:00
cozis b49025bc39 examples: log output of tcp_ping_pong to simulation.log 2026-06-08 11:33:43 +02:00
cozis 6b0ba04058 misc: ignore .log files 2026-06-08 11:33:13 +02:00
cozis 7423d8fad7 trace: minor fix 2026-06-08 11:31:35 +02:00
cozis aa9c3b7274 trace: write traced events to disk 2026-06-08 11:28:57 +02:00
cozis a8ac2773f9 simulator: add setTraceOutputFile to enable tracing and specify the output file 2026-06-08 11:00:49 +02:00
cozis 4b2c103e71 trace: add backing file handle 2026-06-08 10:59:31 +02:00
cozis 57527c270e scheduler: call taskState 2026-06-08 10:46:47 +02:00
cozis 53ad5b297a trace: add taskState 2026-06-08 10:45:30 +02:00
cozis 3b5e7f54d4 scheduler: call timeAdvanced 2026-06-08 10:41:52 +02:00
cozis 7c642e384e trace: add timeAdvanced 2026-06-08 10:40:56 +02:00
cozis d7f9eb2a51 scheduler: call taskSpawned and taskRemoved 2026-06-08 10:39:48 +02:00
cozis a3dbb48718 trace: add taskSpawned and taskRemoved 2026-06-08 10:39:34 +02:00
cozis 34faa08f68 scheduler: call enterTask/leaveTask when context switching 2026-06-08 10:37:17 +02:00
cozis f09afaa5a8 trace: add enterTask and leaveTask 2026-06-08 10:35:17 +02:00
cozis ea3da4004d node: call tracing functions when doing I/O 2026-06-08 10:30:19 +02:00
cozis 7c7ef6db6f trace: add dummy implementation of the tracing object 2026-06-08 10:23:46 +02:00
cozis 3676ceb9c4 node: use random delays instead of static ones when simulating I/O delay 2026-06-08 10:19:16 +02:00
cozis d77714e11a scheduler: pick ready tasks randomly 2026-06-08 10:12:41 +02:00
cozis bad44c36f1 simulator: Add PRNG field 2026-06-08 10:11:00 +02:00
cozis 92f301ea40 node: add local_time and increment it by a fixed amount any time a task runs 2026-06-08 10:05:52 +02:00
cozis 4e3cae8cc8 simulator: remove tests 2026-06-08 10:02:24 +02:00
cozis 36752f6d0e io_interface: implement fileSync mock 2026-06-04 19:09:02 +02:00
cozis 9769188fc9 file_system: expose syncFile from FileSystem 2026-06-04 19:08:28 +02:00
cozis e9884fbe85 file_system: add no-op syncFile 2026-06-04 19:06:33 +02:00
cozis 69b9ddfc72 node: make accept blocking 2026-06-04 18:20:14 +02:00
cozis ec0659e921 network: allow send on not yet connected sockets 2026-06-04 18:15:09 +02:00
cozis 0a8123b158 io_interface: propagate cancellation errors 2026-06-04 18:03:01 +02:00
cozis 140a64d609 io_interface: implement recancel and checkCancel mocks 2026-06-04 17:59:49 +02:00
cozis 64c229afb4 io_interface: drain canceled groups 2026-06-04 17:57:41 +02:00
cozis e1fc8c6125 io_interface: actually cancel tasks when calling the groupCancel mock 2026-06-04 17:54:39 +02:00
cozis d1ee873388 io_interface: properly call futexWaitUncancelable from the mock 2026-06-04 17:53:02 +02:00
cozis 20007f3c6b node: expose futexWaitUncancelable from the scheduler 2026-06-04 17:52:29 +02:00
cozis 4f35537e3d scheduler: add futexWaitUncancelable 2026-06-04 17:51:58 +02:00
cozis f90d4d883d scheduler: wake canceled tasks 2026-06-04 17:49:53 +02:00
cozis fe1acaee8c scheduler: make task wait cancellable 2026-06-04 17:47:05 +02:00
cozis 445fd2fd7f scheduler: Make sleep cancellable 2026-06-04 17:44:02 +02:00
cozis 1c1cc1041a node: Expose recancel and checkCancel at the node layer 2026-06-04 17:36:21 +02:00
cozis a01858aede scheduler: Add recancel and checkCancel to help manage cancellation state 2026-06-04 17:36:01 +02:00
cozis b57cb8e87b node: Expose .cancel at the node layer 2026-06-04 17:32:38 +02:00
cozis 144de52f27 scheduler: Add cancellation flag to Task and .cancel method to set it from the parent 2026-06-04 17:31:15 +02:00
cozis cf6c78577b io_interface: Add mocks for futexWait, futexWaitUncancelable, futexWake 2026-06-04 13:44:48 +02:00
cozis 3b3fc75f1b node: Expose futexes at the node level 2026-06-04 13:43:15 +02:00
cozis cde2061b3c scheduler: Implement futexes at the scheduler level 2026-06-04 13:41:47 +02:00
cozis 3bdcce3ade io_interface: First mock of the Group-related methods 2026-06-04 13:38:35 +02:00
cozis ce51e82363 scheduler: Minor bug fix 2026-06-04 13:38:03 +02:00
cozis f61bb93a22 node: Expose the scheduler's sub-task APIs through Node 2026-06-04 13:34:36 +02:00
cozis 1f5e185bec scheduler: Implement spawning of nested tasks 2026-06-04 13:32:12 +02:00
cozis aec8ff5154 io_interface: Modify netWrite to only block while reading into the first slice 2026-06-02 13:54:33 +02:00
cozis 38ae508c49 node: Add boolean argument to readSocket to switch between blocking and non-blocking mode 2026-06-02 13:49:22 +02:00
cozis 1250375063 network: Implement isConnected to determine whether a connection socket is connected or not 2026-06-02 13:46:41 +02:00
cozis 227cf5c03e scheduler: Add canary bytes to detect stack overflows 2026-06-02 12:10:19 +02:00
cozis c922ed62e1 file_system: Improve output of the dump function 2026-06-02 11:43:15 +02:00
cozis f6185054b5 io_interface: Implement eager execution in the groupAsync callback 2026-06-02 11:33:53 +02:00
cozis e046fcd45e build: Add select_group_async.zig to build.zig 2026-06-01 15:12:31 +02:00
cozis 50297eff21 examples: Add select_group_async.zig to trigger the IO groupAsync callback 2026-06-01 15:12:14 +02:00
cozis 63d81170bb build: Add tcp_ping_pong.zig to build.zig 2026-05-30 15:59:07 +02:00
cozis d626ed1787 examples: Add tcp_ping_pong.zig to test various networking I/O functions 2026-05-30 15:58:44 +02:00