Backup router testing, fixes.
[silc.git] / TODO
1 TODO for Irssi SILC Client 1.0
2 ==============================
3
4  o Testing - See test plan:
5      http://silcnet.org/docs/silc-client-1.0-test.pdf
6      http://silcnet.org/docs/silc-client-1.0-test.ps
7
8
9 TODO for SILC Server 1.0
10 ========================
11
12  o Backup router testing
13
14    - Switching tests
15      - (1) primary goes down (works)
16      - (2) server(s) looses primary, but backup doesn't
17         - Works, if the primary sends SERVER_SIGNOFF to backup for the
18           the signoffed servers it will disconnect them.  The servers
19           will reconnect to primary, no desync.  If primary sends ping
20           back (before SERVER_SIGNOFF) the backup returns failure to
21           server.  Server resends START_USE, and same repeats.  Either
22           the SERVER_SIGNOFF is received or the server disconnects from
23           backup, and reconnects to primary.
24      - (3) server looses primary, but backup doesn't, but ping timeouts
25            (no crash in primary)
26         - Works, the backup will be primary, server will notice it and
27           network works.  When the backup gets connection back to primary,
28           primary will reject resuming.  Backup switches back to backup
29           router.  Server timeouts, disconnects and reconnects to primary
30           to avoid desync.
31      - (4) backup looses primary, but server(s) doesn't
32         - Works, the backup is in desync.  When backup connects back to
33           primary it attempts to execute the resuming.  The primary will
34           reject this.  The backup accepts it and resumes as backup 
35           router, no desync.  Servers get the backup resuming protocol 
36           but it will timeout, and no other action is taken.  No desync in 
37           servers.
38      - (5) server looses primary, backup crashes
39         - Works, the server will attempt to reconnect to the primary
40           and backup.  Server will be cut from rest of the network.
41      - (6) server looses primary, backup doesn't, rejects server's use,
42            then backup looses primary
43         - Same as (3), if primary crashed, normal resuming occurs.
44
45    - Resuming tests
46      - (1) normal resuming (works)
47      - (2) backup crashes during resuming
48         - Works, no desync in router or server.  Server reconnects to
49           the router to avoid desync in server.
50      - (3) primary crashes during resuming
51         - Works, no desync in backup or server.  Backup handles crash
52           during first contact, during resuming and immediately after.
53           Server handle crash during first contact, after contact and
54           immediately after.  In case of error server fallbacks to the
55           backup router.  If backup rejects fallback, server disconnects
56           and reconnects to both backup and primary.
57      - (4) a server crashes during resuming (multiple servers present)
58         - Works, no desync in backup or servers.  The backup restarts the
59           protocol after timeout.  After that the protocol executes
60           quickly since all other servers are already connected to the
61           primary.  While waiting restart servers fallback to the
62           backup.
63      - (5) server can connect to primary but cannot communicate
64         - Works, no desync in server.  The server notices that the 
65           protocol did not succeed, and verifies from backup whether it
66           can be used still.  If backup refuses the server reconnects
67           to the primary router.
68      - (6) backup can connect to primary but cannot communicate
69         - Same as (9).
70      - (7) primary won't communicate with server
71         - Same as (5).
72      - (8) primary won't communicate with backup
73         - Same as (6), (9).
74      - (9) backup cannot communicate with server
75         - Works, no desync in backup or servers.  The backup restarts the
76           protocol after timeout.  This happens as long as the protocol
77           is executed successfully.  Primary can communicate through the
78           backup during this.  Servers fallback to backup after timeout
79           occurs and waits for new resuming.  If the server never answers
80           anything to backup (but is up) then resuming lasts for ever,
81           until the server is either removed from network or starts
82           communicating.  However, this does not cause network desync.
83      - (10) server cannot communicate with backup
84         - Same as (5), (9).
85
86    - Notifys (works)
87    JOIN, TOPIC_SET, CMODE_CHANGE, CUMODE_CHANGE, CHANNEL_CHANGE,
88    UMODE_CHANGE, INVITE, BAN (rest of the notifys does not apply, no 
89    testing required)
90
91    - Communication
92     - Test communication during switching, after switching, during
93       resuming and after resuming.
94
95  o Testing
96
97
98 TODO/bugs In SILC Libraries
99 ===========================
100
101  o Test cases for all cryptographic primitive in lib/silccrypt/
102
103  o Test cases for all payload encoding and decoding routins in lib/silccore/
104
105  o Test cases for math library routines in lib/silcmath/
106
107
108 TODO in Toolkit Documentation
109 =============================
110
111 Stuff that needs to be done in order to complete the Tooolkit Reference
112 Manual (Do these to 0.9.x).
113
114  o Write "Programming with Toolkit" document, describing how to build
115    Toolkit, how the build system works, where is everything, how
116    new (external) projects can be glued into Toolkit (use irssi as an
117    example), and how external projects can use Toolkit without gluing into
118    it (how to link etc), debugging, architecture, types, etc.
119
120  o Searching of predefined keywords, exact and partial matches (would be
121    nice).