I2P

Invisible Internet Project


root/www.i2p2/pages/bounty_unittests.html @ d5f1d81e44dbff8f9c2b78a5a69536c5fac3a5d4

Revision d5f1d81e44dbff8f9c2b78a5a69536c5fac3a5d4, 3.1 KB (checked in by echelon@…, 16 months ago)

updated

Line 
1{% extends "_layout.html" %}
2{% block title %}Bounty unittests{% endblock %}
3{% block content %}<p>To improve I2P's maintainability, we want to have a solid set of
4automated unit tests for the critical code.  While we do have some
5unit tests at the moment, they are ad-hoc and partly unfinished. 
6This bounty is for someone to check the existant tests and move over
7old ones to jUnit, automate their execution, extend them to provide
8better code coverage, and publish the report online.  Its a massive
9effort, but can be broken down into phases, listed below (phase 2
10must occur first, but further phases may happen in any order).
11As this needs some reading of code, it is the best start point for
12new devs to get a good overview of I2P code and coding. A good job
13for college students, interns or anyone who is just interested.
14</p>
15
16<h2>Phase 1: <a name="jenkins">CI jenkins and IRC bot</a></h2>
17<b>Bounty: €</b><i>in work by MathisDM</i><br />
18
19<p>To collect this bounty, a continuous integration server (Jenkins,
20old name was Hudson) must be set up and a connected IRC bot needs
21to set up in the channel #i2p-dev on IRC2p network to print out
22results of build tests.<br>
23The server needs to be run long term.
24</p> 
25<br>
26
27<h2>Phase 2: <a name="sdk">Check existing SDK tests </a></h2>
28<b>Bounty: €</b> <br />
29
30<p>To collect this bounty, the existing SDK tests must be checked
31and made to work again. The need to be integrated into the ant
32build scripts ("ant test"), and tied in with a code coverage tool (e.g.
33<a href="http://www.cenqua.com/clover/">Clover</a>).  The ant script
34must be capable of generating test status results as a web page,
35which will be published online.</p>
36<br>
37
38<h2>Phase 3: <a name="sdk_coverage">SDK test coverage</a></h2>
39<b>Bounty: €</b><br />
40
41<p>To collect this bounty, the automated unit tests must meet a
42measured code coverage of 90% of the SDK (i2p/core/java/src).</p>
43
44<h2>Phase 4: <a name="router">Router test migration</a></h2>
45<b>Bounty: €</b><br />
46
47<p>As with phase 2, the existing unit tests for the router must be
48moved over to the automated system.</p>
49
50<h2>Phase 5: <a name="router_coverage">Router test coverage</a></h2>
51<b>Bounty: €</b><br />
52
53<p>To collect this bounty, the automated unit tests must meet a
54measured code coverage of 90% of the router (i2p/router/java/src).</p>
55
56<h2>Phase 6: <a name="streaming">Streaming lib tests</a></h2>
57<b>Bounty: €</b><br />
58
59<p>To collect this bounty, a new set of unit tests must meet a
60measured code coverage of 90% of the streaming lib
61(i2p/apps/ministreaming/ and i2p/apps/streaming/).</p>
62
63<h2>Phase 7: <a name="multirouter">MultiRouter simulation</a></h2>
64<b>Bounty: €</b><br />
65
66<p>To collect this bounty, the existant in-memory multi-router
67simulation must be checked, made work again and extend to simulate
68lots of routers in memory on a single machine.
69</p>
70
71<p>
72Judge on all these works is the donor and donor decides if a phase is
73called succesfull done and money can be paid.
74</p>
75
76<p><i>Note: bounty amounts may be increased by further donations.  Do
77you think these are important?  <a href="donate">Add in your donation</a>,
78marking the amount for the unit test bounty!</i></p>
79{% endblock %}
Note: See TracBrowser for help on using the browser.