<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 1 Jul 2015, at 01:29 , Cory Pruce <<a href="mailto:corypruce@gmail.com" class="">corypruce@gmail.com</a>> wrote:</div></blockquote><br class=""><blockquote type="cite" class=""><div class=""><fieldset style="padding-top:10px; border:0px; border: 3px solid #CCC; padding-left: 20px;" class=""><div style="padding-left:3px;" class="">I've been able to do a<br class="">make install and am ready to continue setting up the test environment. I<br class="">see chutney on your github. I'll get that set up when I get home. Do you<br class="">have any advice for testing Tor? Also, feel free to move this to the<br class="">mailing list whenever you feel it's appropriate. </div></fieldset></div></blockquote><blockquote type="cite" class=""><div class=""><br class=""></div></blockquote><br class=""></div><div>Hi Cory,</div><div class=""><br class=""></div><div class="">I'm moving this to tor-dev as it's relevant to other developers.</div><div class=""><br class=""></div><div class="">Chutney</div><div><div><br class=""></div><div>Please use the official chutney repository at <a href="http://git.torproject.org" class="">git.torproject.org</a></div><div><br class=""></div><div>My chutney repository a little messy at the moment, and I've merged draft throughput-testing code into my master branch. You're welcome to test the draft code by merging</div><div><a href="https://github.com/teor2345/chutney/tree/bug14175-bandwidth" class="">https://github.com/teor2345/chutney/tree/bug14175-bandwidth</a></div><div>The throughput-testing functionality works, but it needs to be tidied up, and have the hard-coded constants turned into command-line options. So it's not ready for release, but it is ready for an early review to check for functionality gaps and bugs.</div><div><br class=""></div><div>You might find throughput metrics useful to confirm that any multithreading changes are actually improving performance.</div><div><br class=""></div><div>Testing</div><div><br class=""></div><div>Once tor is built, you can test it using:</div><div># basic tests</div><div>make test</div><div># extended tests</div><div>make check</div><div># benchmarks</div><div>/src/test/bench</div><div># verify tor connectivity using a local test network - requires chutney</div><div>make test-network</div><div># verify that the core functionality of tor works, requires chutney and IPv6 on localhost</div><div>src/test/test-network.sh --flavour bridges+ipv6+hs</div><div><div># verify that the core functionality of tor works, using chutney, but without IPv6</div><div>src/test/test-network.sh --flavour bridges  </div><div class=""><div>src/test/test-network.sh --flavour hs  </div></div><div class=""><br class=""></div></div><div>There's also various other testing tools:</div><div>shadow Tor network simulator</div><div>static analysers, such as coverity and clang-scan</div><div>dynamic sanitizers: Undefined Behaviour (UBSan), Address (ASAN), …</div><div>fuzzing (I'm working on some tor-specific harnesses for fuzzing, but they're not ready)</div><div>and I'm sure there are others which I've missed.</div><div><br class=""></div><div>Generally, I'm happy with code once I know it:</div><div>* compiles with no warnings, </div><div>* passes the extended unit tests (make check), including any tests written for new functionality, and </div><div>* passes all the connectivity tests in a comprehensive test network (bridges+ipv6+hs).</div><div><br class=""></div><div>For bonus points, you can compile tor using UBSan and ASAN. If you're using clang, you'll find that tor/contrib/clang helps with setting this up. It lists known undefined behaviour in the Tor codebase, so it may be useful if you want to do something similar with gcc. (However, getting sanitizers to work can be incredibly fiddly and a total time-suck, too. So if it's just not working, skip it.)</div><div><br class=""></div><div>I'll also occasionally run code through a static analyser, to find subtle bugs which haven't been uncovered using UBSan/ASAN. Again, this isn't something everyone needs to do.</div><div><br class=""></div><div>Others may have advice on testing multithreading code in particular. </div><div><br class=""></div><div>Tim</div><div><br class=""></div></div><div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Tim Wilson-Brown (teor)</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">teor2345 at gmail dot com<br class="">pgp 0xABFED1AC<br class=""><a href="https://gist.github.com/teor2345/d033b8ce0a99adbc89c5" class="">https://gist.github.com/teor2345/d033b8ce0a99adbc89c5</a><br class=""><br class="">teor at blah dot im<br class="">OTR D5BE4EC2 255D7585 F3874930 DB130265 7C9EBBC7</div></div></div></div></div></div></div></div></div>
</div>
<br class=""></body></html>