diff options
-rw-r--r-- | BUGS | 119 | ||||
-rw-r--r-- | RATIONALE | 23 | ||||
-rw-r--r-- | TODO | 242 | ||||
-rw-r--r-- | doc/coverage.txt | 66 |
4 files changed, 230 insertions, 220 deletions
@@ -0,0 +1,119 @@ | |||
1 | This file lists minor work items (also possibly called "known bugs"). | ||
2 | We are not tracking them in Mantis yet since there are too many and no | ||
3 | sane end-user should care about this codebase yet anyway. | ||
4 | |||
5 | |||
6 | * UTIL: | ||
7 | - crypto_hash: use libgcrypt (supports SHA-512 since 2003) | ||
8 | - container_bloomfilter: improve efficiency (see FIXME) | ||
9 | - Windows: use events instead of pipes to signal select()s [Nils] | ||
10 | - only connect() sockets that are ready (select()) [Nils] | ||
11 | [On W32, we need to select after calling socket before | ||
12 | doing connect etc.] | ||
13 | - Add "DISK" API for creating of temporary files | ||
14 | (as used in datacache/ module) [Nils?] | ||
15 | * SERVER: | ||
16 | - inefficient memmove | ||
17 | * TRANSPORT: | ||
18 | - transport_api: support forcing disconnects through low quotas! | ||
19 | (required for working F2F support!) | ||
20 | - API: consider having core provide deadline information for each message | ||
21 | (likely important for DV plugin which wants to loop back!) | ||
22 | - implement transport API to pretty-print transport address | ||
23 | + transport_api extension (API extension!) | ||
24 | + service-transport extension (protocol extension) | ||
25 | - add calls to statistics in various places | ||
26 | - implement gnunet-transport (transport configurator / tester) | ||
27 | - UPnP-based IP detection | ||
28 | (Note: build library always, build service when libxml2/etc. are available) | ||
29 | - instantly filter addresses from *other* peers that | ||
30 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
31 | no longer filter those for outgoing (helps with loopback testing | ||
32 | and keeps the code clean), but we should filter strictly *impossible* | ||
33 | incoming addresses! This is for efficiency, not correctness. | ||
34 | - We currently are happy to take any address told to us in a WELCOME | ||
35 | to our set of addresses; we should have some minimal threshold-based | ||
36 | scheme, limiting both the total number of addresses that we accept | ||
37 | this way as well as requiring multiple confirmations; also, we | ||
38 | should possibly try to confirm that the given address works for | ||
39 | us ourselves (loopback-style) before adding it to the list | ||
40 | [SECURITY issue] | ||
41 | + we may be able to simplify WELCOME messages (no need to add | ||
42 | addresses there anymore, but may help to learn them there anyway...). | ||
43 | + we probably want some kind of voting/counting for learning IP addresses | ||
44 | (maybe including IP addresses in ads proportional to how often others | ||
45 | report them? we at least need some protection against >64k HELLOs!), | ||
46 | + provide a way to give the user a list of "learned" IP addresses and | ||
47 | a way to easily "veto" addresses off the list! | ||
48 | => If MiM attacker uses vetoed address, blacklist the specific IP for | ||
49 | the presumed neighbour! | ||
50 | - not sure current way of doing ACKs works well-enough | ||
51 | with unreliable transports where the ACK maybe lost; | ||
52 | the "is_new" check would then possibly prevent future | ||
53 | ACKs to be delivered, all while we're happily | ||
54 | receiving messages from that peer! Worse, the other | ||
55 | peer won't generate another ACK since it thinks we're | ||
56 | connected just fine... | ||
57 | Key questions: | ||
58 | + How necessary is ACKing in the first place? (alternatives?) | ||
59 | + Should we transmit ACKs in response to every HELLO? (would that | ||
60 | fully address the problem?) | ||
61 | - latency measurements implemented in the transport | ||
62 | plugins makes it only work for bi-di transports | ||
63 | and results in code replication | ||
64 | - should latency be included in the ReceiveCallback and | ||
65 | NotifyConnect or passed on request? | ||
66 | - FIXME's with latency being simply set to 0 in a few places | ||
67 | - Memory leak (running valgrind --trace-children=yes on test_transport_api: | ||
68 | ==28393== 16 bytes in 1 blocks are indirectly lost in loss record 1 of 5 | ||
69 | ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) | ||
70 | ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) | ||
71 | ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) | ||
72 | ==28393== by 0x524458A: GNUNET_NETWORK_socket_create_from_accept (network.c:289) | ||
73 | ==28393== by 0x524B2DA: ??? (server.c:332) | ||
74 | ==28393== by 0x524A4C7: ??? (scheduler.c:425) | ||
75 | ==28393== by 0x524A73D: GNUNET_SCHEDULER_run (scheduler.c:510) | ||
76 | ==28393== by 0x524FF8C: GNUNET_SERVICE_run (service.c:1326) | ||
77 | ==28393== by 0x405500: main (gnunet-service-transport.c:2645) | ||
78 | And also: | ||
79 | ==28393== 65,744 (65,728 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 5 of 5 | ||
80 | ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) | ||
81 | ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) | ||
82 | ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) | ||
83 | ==28393== by 0x524473E: GNUNET_NETWORK_socket_create_from_accept (network.c:323) | ||
84 | (rest of trace identical) | ||
85 | |||
86 | * DATASTORE: | ||
87 | - mysql backend | ||
88 | - postgres backend | ||
89 | * SETUP: | ||
90 | - auto-generate "defaults.conf" using gnunet-setup from "config.scm" | ||
91 | - integrate all options into "config.scm" | ||
92 | - change config-file writing to exclude options set to default values | ||
93 | * ARM: | ||
94 | - implement exponential back-off for service restarts | ||
95 | - better tracking of which config changes actually need to cause process restarts by ARM. | ||
96 | - have way to specify dependencies between services (to manage ARM restarts better) | ||
97 | - client-API is inefficient since it opens a TCP connection per service that is started | ||
98 | (instead of re-using connections). | ||
99 | * CORE: | ||
100 | - code currently notifies clients about "encrypted" connections being up well before | ||
101 | we get the encrypted PONG; sometimes this may be OK (for topology killing | ||
102 | unwanted connnections), but of course not in general. I suspect we want | ||
103 | to signal on PONG and have topology hook directly into transport to | ||
104 | kill plaintext connections before they have a chance to become encrypted | ||
105 | (may require minor hack in transport API) | ||
106 | * PEERINFO: | ||
107 | - have gnunet-peerinfo print actual host addresses again | ||
108 | - add option to gnunet-peerinfo to modify trust value | ||
109 | * POSTGRES-DB: | ||
110 | - finish postgres implementation; simplify other SQLs using new stats | ||
111 | * HTTPS transport | ||
112 | - PolariSSL for MHD? | ||
113 | - https integration | ||
114 | * GAP improvements: | ||
115 | - active reply route caching design & implementation of service, | ||
116 | gap extension! | ||
117 | * HOSTLIST: | ||
118 | - implement advertising of hostlist URL | ||
119 | - implement learning of hostlist URLs | ||
@@ -234,6 +234,8 @@ PROBLEM GROUP 6 (FS-APIs): | |||
234 | * If GUIs die (or are not properly shutdown), state | 234 | * If GUIs die (or are not properly shutdown), state |
235 | of current transactions is lost (FSUI only | 235 | of current transactions is lost (FSUI only |
236 | saves to disk on shutdown) | 236 | saves to disk on shutdown) |
237 | * FILENAME metadata is killed by ECRS/FSUI to avoid | ||
238 | exposing HOME, but what if the user set it manually? | ||
237 | 239 | ||
238 | SOLUTION (draft, not done yet, details missing...): | 240 | SOLUTION (draft, not done yet, details missing...): |
239 | * Eliminate threads from FS-APIs | 241 | * Eliminate threads from FS-APIs |
@@ -243,6 +245,9 @@ SOLUTION (draft, not done yet, details missing...): | |||
243 | * Store FS-state always also on disk | 245 | * Store FS-state always also on disk |
244 | => Open question: how to do this without | 246 | => Open question: how to do this without |
245 | compromising state/scalability? | 247 | compromising state/scalability? |
248 | * Have API to manipulate sharing tree before | ||
249 | upload; have auto-construction modify FILENAME | ||
250 | but allow user-modifications afterwards | ||
246 | 251 | ||
247 | PROBLEM GROUP 7 (User experience): | 252 | PROBLEM GROUP 7 (User experience): |
248 | * Searches often do not return a sufficient / significant number of | 253 | * Searches often do not return a sufficient / significant number of |
@@ -266,3 +271,21 @@ SOLUTION (draft, not done yet, details missing...): | |||
266 | (requires downloading of the directory in the background) | 271 | (requires downloading of the directory in the background) |
267 | 272 | ||
268 | 273 | ||
274 | |||
275 | |||
276 | SUMMARY: | ||
277 | * Features eliminated from util: | ||
278 | - threading (goal: good riddance!) | ||
279 | - complex logging features [ectx-passing, target-kinds] (goal: good riddance!) | ||
280 | - complex configuration features [defaults, notifications] (goal: good riddance!) | ||
281 | - network traffic monitors (goal: eliminate) | ||
282 | - IPC semaphores (goal: d-bus? / eliminate?) | ||
283 | - second timers | ||
284 | - DNS lookup (goal: have async service; issue: still need synchronous | ||
285 | resolution in places, current code may not be portable) | ||
286 | => code shrunk from 61 files to 34, 22k LOC to 15k LOC, 470k to 330k (with symbols) | ||
287 | * New features in util: | ||
288 | - scheduler | ||
289 | - service and program boot-strap code | ||
290 | * Major changes in util: | ||
291 | - more expressive server (replaces selector) | ||
@@ -1,89 +1,27 @@ | |||
1 | PHASE #1: (Goal: settle key design questions) | ||
2 | |||
3 | Util: | ||
4 | * Windows: use events instead of pipes to signal select()s [Nils] | ||
5 | * only connect() sockets that are ready (select()) [Nils] | ||
6 | [On W32, we need to select after calling socket before | ||
7 | doing connect etc.] | ||
8 | * Add "DISK" API for creating of temporary files | ||
9 | (as used in datacache/ module) | ||
10 | |||
11 | PHASE #2: (Goal: recover basic file-sharing functionality) | 1 | PHASE #2: (Goal: recover basic file-sharing functionality) |
12 | |||
13 | |||
14 | TESTCASES WANTED: | ||
15 | |||
16 | For these functions, it would be nice if we had testcases ("make check") | ||
17 | that would cause them to be executed and check that they are working: | ||
18 | * gnunet-service-peerinfo: | ||
19 | - change_host_trust / flush_trust | ||
20 | - remove_garbage | ||
21 | - discard_hosts_helper / cron_clean_data_hosts | ||
22 | * gnunet-service-transport: | ||
23 | - try_unvalidated_addresses | ||
24 | - lookup_address_callback | ||
25 | - lookup_hello_callback | ||
26 | - plugin_env_lookup_address | ||
27 | - notify_clients_disconnect | ||
28 | - list_validated_addresses | ||
29 | - cleanup_validation | ||
30 | - disconnect_neighbour | ||
31 | - handle_set_quota | ||
32 | * plugin_transport_tcp.c: | ||
33 | - tcp_plugin_cancel | ||
34 | - tcp_plugin_address_pretty_printer / append_port | ||
35 | - tcp_plugin_set_receive_quota | ||
36 | - delayed_done | ||
37 | * transport_api: | ||
38 | - GNUNET_TRANSPORT_set_qutoa / send_set_quota | ||
39 | - hello_wait_timeout | ||
40 | - transmit_ready | ||
41 | - transmit_timeout | ||
42 | - remove_from_any_list / remove_neighbour | ||
43 | - GNUNET_TRANSPORT_notify_transmit_ready_cancel | ||
44 | - Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel | ||
45 | - gnunet-service-transport HELLO validation (how good is our coverage?) | ||
46 | - direct test of plugins compliance to plugin API | ||
47 | * core_api: | ||
48 | - timeout_request | ||
49 | - solicit_traffic / copy_and_free | ||
50 | - GNUNET_CORE_peer_configure / produce_configure_message | ||
51 | * gnunet-service-core: | ||
52 | - update_window | ||
53 | - find_client | ||
54 | - handle_client_request_configure | ||
55 | - set_key_retry_task | ||
56 | - align_and_deliver | ||
57 | - handle_transport_notify_disconnect | ||
58 | * hostlist (everything) | ||
59 | * topology (everything) | ||
60 | |||
61 | |||
62 | Module features to implement: | ||
63 | * TESTING (needed for DV, DHT, Topology) | 2 | * TESTING (needed for DV, DHT, Topology) |
64 | - implement library for local testing | 3 | - implement library for local testing |
65 | - implement testcases for library | 4 | - implement testcases for library |
66 | - implement library for distributed testing | 5 | - implement library for distributed testing [Nate] |
67 | - implement testcases for distributed testing | 6 | - implement testcases for distributed testing [Nate] |
68 | * TOPOLOGY: | 7 | * TOPOLOGY: |
69 | - implement testcases (needs TESTING) | 8 | - implement testcases (needs TESTING) |
70 | * HOSTLIST: | 9 | * HOSTLIST: |
71 | - implement testcases | 10 | - implement testcases |
72 | * DV (needed for DHT) | 11 | * DV (needed for DHT) |
73 | - write DV API | 12 | - write DV API |
74 | - implement DV service | 13 | - implement DV service [Nate & CG] |
75 | - implement DV library | 14 | - implement DV library [Nate] |
76 | - implement DV transport plugin | 15 | - implement DV transport plugin [Nate & CG] |
77 | - implement testcases | 16 | - implement testcases [Nate] |
78 | - implement performance tests | 17 | - implement performance tests [Nate] |
79 | * DHT (needed for FS) | 18 | * DHT (needed for FS) |
80 | - review DHT API | ||
81 | - implement DHT service (needs DV, DATACACHE) | 19 | - implement DHT service (needs DV, DATACACHE) |
82 | - implement DHT library | 20 | - implement DHT library |
83 | - implement testcases | 21 | - implement testcases |
84 | - implement performance tests | 22 | - implement performance tests |
85 | * FS | 23 | * FS |
86 | - review FS API | 24 | - review FS API [Nils, Amatus, CG] |
87 | - design network structs (CS) | 25 | - design network structs (CS) |
88 | - implement FS library | 26 | - implement FS library |
89 | + URI API | 27 | + URI API |
@@ -124,6 +62,8 @@ Module features to implement: | |||
124 | + unindex | 62 | + unindex |
125 | 63 | ||
126 | 64 | ||
65 | => Deploy development network | ||
66 | |||
127 | 67 | ||
128 | PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009] | 68 | PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009] |
129 | 69 | ||
@@ -139,133 +79,27 @@ Module features to implement: | |||
139 | 79 | ||
140 | 80 | ||
141 | GUIs to implement: | 81 | GUIs to implement: |
142 | * gtk | 82 | * gtk |
83 | - how to integrate scheduler with GTK event loop! | ||
143 | * qt | 84 | * qt |
85 | - see discussions @ FISL about integration with event loop! | ||
144 | * fuse | 86 | * fuse |
145 | 87 | ||
146 | 88 | ||
147 | Plugins to implement: | 89 | Plugins to implement: |
148 | * UDP backend (need LIBRARY to support (de)fragmentation!) | 90 | * UDP backend |
91 | - Fragmentation library | ||
92 | - actual plugin | ||
149 | * HTTP backend | 93 | * HTTP backend |
150 | 94 | * HTTPS backend | |
151 | 95 | - improved HTTPS support in MHD | |
152 | 96 | - actual plugin | |
153 | |||
154 | |||
155 | Minor TODO items / known bugs: | ||
156 | * UTIL: | ||
157 | - crypto_hash: use libgcrypt (supports SHA-512 since 2003) | ||
158 | - container_bloomfilter: improve efficiency (see FIXME) | ||
159 | * SERVER: | ||
160 | - inefficient memmove | ||
161 | * TRANSPORT: | ||
162 | - transport_api: support forcing disconnects through low quotas! | ||
163 | (required for working F2F support!) | ||
164 | - API: consider having core provide deadline information for each message | ||
165 | (likely important for DV plugin which wants to loop back!) | ||
166 | - implement transport API to pretty-print transport address | ||
167 | + transport_api extension (API extension!) | ||
168 | + service-transport extension (protocol extension) | ||
169 | - add calls to statistics in various places | ||
170 | - implement gnunet-transport (transport configurator / tester) | ||
171 | - UPnP-based IP detection | ||
172 | (Note: build library always, build service when libxml2/etc. are available) | ||
173 | - instantly filter addresses from *other* peers that | ||
174 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
175 | no longer filter those for outgoing (helps with loopback testing | ||
176 | and keeps the code clean), but we should filter strictly *impossible* | ||
177 | incoming addresses! This is for efficiency, not correctness. | ||
178 | - We currently are happy to take any address told to us in a WELCOME | ||
179 | to our set of addresses; we should have some minimal threshold-based | ||
180 | scheme, limiting both the total number of addresses that we accept | ||
181 | this way as well as requiring multiple confirmations; also, we | ||
182 | should possibly try to confirm that the given address works for | ||
183 | us ourselves (loopback-style) before adding it to the list | ||
184 | [SECURITY issue] | ||
185 | + we may be able to simplify WELCOME messages (no need to add | ||
186 | addresses there anymore, but may help to learn them there anyway...). | ||
187 | + we probably want some kind of voting/counting for learning IP addresses | ||
188 | (maybe including IP addresses in ads proportional to how often others | ||
189 | report them? we at least need some protection against >64k HELLOs!), | ||
190 | + provide a way to give the user a list of "learned" IP addresses and | ||
191 | a way to easily "veto" addresses off the list! | ||
192 | => If MiM attacker uses vetoed address, blacklist the specific IP for | ||
193 | the presumed neighbour! | ||
194 | - not sure current way of doing ACKs works well-enough | ||
195 | with unreliable transports where the ACK maybe lost; | ||
196 | the "is_new" check would then possibly prevent future | ||
197 | ACKs to be delivered, all while we're happily | ||
198 | receiving messages from that peer! Worse, the other | ||
199 | peer won't generate another ACK since it thinks we're | ||
200 | connected just fine... | ||
201 | Key questions: | ||
202 | + How necessary is ACKing in the first place? (alternatives?) | ||
203 | + Should we transmit ACKs in response to every HELLO? (would that | ||
204 | fully address the problem?) | ||
205 | - latency measurements implemented in the transport | ||
206 | plugins makes it only work for bi-di transports | ||
207 | and results in code replication | ||
208 | - should latency be included in the ReceiveCallback and | ||
209 | NotifyConnect or passed on request? | ||
210 | - FIXME's with latency being simply set to 0 in a few places | ||
211 | - Memory leak (running valgrind --trace-children=yes on test_transport_api: | ||
212 | ==28393== 16 bytes in 1 blocks are indirectly lost in loss record 1 of 5 | ||
213 | ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) | ||
214 | ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) | ||
215 | ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) | ||
216 | ==28393== by 0x524458A: GNUNET_NETWORK_socket_create_from_accept (network.c:289) | ||
217 | ==28393== by 0x524B2DA: ??? (server.c:332) | ||
218 | ==28393== by 0x524A4C7: ??? (scheduler.c:425) | ||
219 | ==28393== by 0x524A73D: GNUNET_SCHEDULER_run (scheduler.c:510) | ||
220 | ==28393== by 0x524FF8C: GNUNET_SERVICE_run (service.c:1326) | ||
221 | ==28393== by 0x405500: main (gnunet-service-transport.c:2645) | ||
222 | And also: | ||
223 | ==28393== 65,744 (65,728 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 5 of 5 | ||
224 | ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) | ||
225 | ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) | ||
226 | ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) | ||
227 | ==28393== by 0x524473E: GNUNET_NETWORK_socket_create_from_accept (network.c:323) | ||
228 | (rest of trace identical) | ||
229 | |||
230 | * DATASTORE: | ||
231 | - mysql backend | ||
232 | - postgres backend | ||
233 | * SETUP: | ||
234 | - auto-generate "defaults.conf" using gnunet-setup from "config.scm" | ||
235 | - integrate all options into "config.scm" | ||
236 | - change config-file writing to exclude options set to default values | ||
237 | * ARM: | ||
238 | - implement exponential back-off for service restarts | ||
239 | - better tracking of which config changes actually need to cause process restarts by ARM. | ||
240 | - have way to specify dependencies between services (to manage ARM restarts better) | ||
241 | - client-API is inefficient since it opens a TCP connection per service that is started | ||
242 | (instead of re-using connections). | ||
243 | * CORE: | ||
244 | - code currently notifies clients about "encrypted" connections being up well before | ||
245 | we get the encrypted PONG; sometimes this may be OK (for topology killing | ||
246 | unwanted connnections), but of course not in general. I suspect we want | ||
247 | to signal on PONG and have topology hook directly into transport to | ||
248 | kill plaintext connections before they have a chance to become encrypted | ||
249 | (may require minor hack in transport API) | ||
250 | * PEERINFO: | ||
251 | - have gnunet-peerinfo print actual host addresses again | ||
252 | - add option to gnunet-peerinfo to modify trust value | ||
253 | * POSTGRES-DB: | ||
254 | - finish postgres implementation; simplify other SQLs using new stats | ||
255 | * HTTPS transport | ||
256 | - PolariSSL for MHD? | ||
257 | - https integration | ||
258 | * GAP improvements: | ||
259 | - active reply route caching design & implementation of service, | ||
260 | gap extension! | ||
261 | * HOSTLIST: | ||
262 | - implement advertising of hostlist URL | ||
263 | - implement learning of hostlist URLs | ||
264 | 97 | ||
265 | 98 | ||
266 | 99 | ||
267 | => PRE-RELEASE | 100 | => PRE-RELEASE |
268 | 101 | ||
102 | |||
269 | PHASE #4: [completion-goal: mid 2010] | 103 | PHASE #4: [completion-goal: mid 2010] |
270 | * Documentation | 104 | * Documentation |
271 | - Doxygen generation | 105 | - Doxygen generation |
@@ -276,7 +110,6 @@ PHASE #4: [completion-goal: mid 2010] | |||
276 | - expand bibliography | 110 | - expand bibliography |
277 | - convert documentation pages to books | 111 | - convert documentation pages to books |
278 | - update books (especially for developers) | 112 | - update books (especially for developers) |
279 | - add content type for links and view | ||
280 | - create good Drupal theme for GNUnet | 113 | - create good Drupal theme for GNUnet |
281 | - make a NICE download page and figure out how to | 114 | - make a NICE download page and figure out how to |
282 | enable developers to publish TGZs nicely | 115 | enable developers to publish TGZs nicely |
@@ -285,38 +118,7 @@ PHASE #4: [completion-goal: mid 2010] | |||
285 | - DNS activation | 118 | - DNS activation |
286 | 119 | ||
287 | 120 | ||
288 | Stuff to remember: | 121 | => 0.9.x RELEASE |
289 | * Features eliminated from util: | ||
290 | - threading (goal: good riddance!) | ||
291 | - complex logging features [ectx-passing, target-kinds] (goal: good riddance!) | ||
292 | - complex configuration features [defaults, notifications] (goal: good riddance!) | ||
293 | - network traffic monitors (goal: eliminate) | ||
294 | - IPC semaphores (goal: d-bus? / eliminate?) | ||
295 | - second timers | ||
296 | - DNS lookup (goal: have async service; issue: still need synchronous resolution in places, current code may not be portable) | ||
297 | => code shrunk from 61 files to 34, 22k LOC to 15k LOC, 470k to 330k (with symbols) | ||
298 | * New features in util: | ||
299 | - scheduler | ||
300 | - service and program boot-strap code | ||
301 | * Major changes in util: | ||
302 | - more expressive server (replaces selector) | ||
303 | * Open questions: | ||
304 | - how to integrate scheduler with GTK event loop! | ||
305 | |||
306 | 122 | ||
307 | 123 | ||
308 | Test coverage: | ||
309 | * UTIL : 78.7% | ||
310 | * HELLO : 93.7% | ||
311 | * ARM : 69.9% | ||
312 | * RESOLVER : 60.4% | ||
313 | * STATISTICS: 82.8% | ||
314 | * PEERINFO : 71.5% | ||
315 | * TRANSPORT : 70.9% | ||
316 | * CORE : 65.8% | ||
317 | =================== | ||
318 | * TOTAL : 74.9% | ||
319 | 124 | ||
320 | Not yet tested: | ||
321 | * HOSTLIST : 0.0% | ||
322 | * TOPOLOGY : 0.0% | ||
diff --git a/doc/coverage.txt b/doc/coverage.txt new file mode 100644 index 000000000..6b08c1e3f --- /dev/null +++ b/doc/coverage.txt | |||
@@ -0,0 +1,66 @@ | |||
1 | Summary of test coverage (configure with --enable-coverage | ||
2 | and run contrib/coverage.sh to generate a detailed report): | ||
3 | * UTIL : 78.7% | ||
4 | * HELLO : 93.7% | ||
5 | * ARM : 69.9% | ||
6 | * RESOLVER : 60.4% | ||
7 | * STATISTICS: 82.8% | ||
8 | * PEERINFO : 71.5% | ||
9 | * TRANSPORT : 70.9% | ||
10 | * CORE : 65.8% | ||
11 | =================== | ||
12 | * TOTAL : 74.9% | ||
13 | |||
14 | Not yet tested: | ||
15 | * HOSTLIST : 0.0% | ||
16 | * TOPOLOGY : 0.0% | ||
17 | |||
18 | |||
19 | |||
20 | TESTCASES WANTED: | ||
21 | ================= | ||
22 | |||
23 | For these functions, it would be nice if we had testcases ("make check") | ||
24 | that would cause them to be executed and check that they are working: | ||
25 | * gnunet-service-peerinfo: | ||
26 | - change_host_trust / flush_trust | ||
27 | - remove_garbage | ||
28 | - discard_hosts_helper / cron_clean_data_hosts | ||
29 | * gnunet-service-transport: | ||
30 | - try_unvalidated_addresses | ||
31 | - lookup_address_callback | ||
32 | - lookup_hello_callback | ||
33 | - plugin_env_lookup_address | ||
34 | - notify_clients_disconnect | ||
35 | - list_validated_addresses | ||
36 | - cleanup_validation | ||
37 | - disconnect_neighbour | ||
38 | - handle_set_quota | ||
39 | * plugin_transport_tcp.c: | ||
40 | - tcp_plugin_cancel | ||
41 | - tcp_plugin_address_pretty_printer / append_port | ||
42 | - tcp_plugin_set_receive_quota | ||
43 | - delayed_done | ||
44 | * transport_api: | ||
45 | - GNUNET_TRANSPORT_set_qutoa / send_set_quota | ||
46 | - hello_wait_timeout | ||
47 | - transmit_ready | ||
48 | - transmit_timeout | ||
49 | - remove_from_any_list / remove_neighbour | ||
50 | - GNUNET_TRANSPORT_notify_transmit_ready_cancel | ||
51 | - Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel | ||
52 | - gnunet-service-transport HELLO validation (how good is our coverage?) | ||
53 | - direct test of plugins compliance to plugin API | ||
54 | * core_api: | ||
55 | - timeout_request | ||
56 | - solicit_traffic / copy_and_free | ||
57 | - GNUNET_CORE_peer_configure / produce_configure_message | ||
58 | * gnunet-service-core: | ||
59 | - update_window | ||
60 | - find_client | ||
61 | - handle_client_request_configure | ||
62 | - set_key_retry_task | ||
63 | - align_and_deliver | ||
64 | - handle_transport_notify_disconnect | ||
65 | * hostlist (everything) | ||
66 | * topology (everything) | ||