[Twisted-Python] Ticket #1330 - Socks V5 functionality

Kevin Horn kevin.horn at gmail.com
Sun Nov 17 15:35:17 MST 2013


David,

You may also wish to take a look at Proxy65, which is a socks5 proxy
specifically for XMPP XEP-0065.  I have no idea how complete or correct it
is, and it's pretty old, but it might be helpful.

https://code.google.com/p/proxy65/


On Sat, Nov 16, 2013 at 2:28 PM, David Stainton <dstainton415 at gmail.com>wrote:

> Hi Jean-Paul,
>
> Thanks for all the info, observations about the existing code and for
> the coding advice!
>
> I think I should only implement the socks 5 server side
> since txsocksx seems to have the client implementation covered.
> Some of the Tor developers use it...
>
> I'm not used to test driven development. I'll give it a try and
> implement the SOCKSv5 server functionality...
>
>
> Cheers!
>
> David
>
> On Sat, Nov 16, 2013 at 11:44 AM,  <exarkun at twistedmatrix.com> wrote:
> > On 06:14 pm, dstainton415 at gmail.com wrote:
> >>
> >> Hi, I'd like to help out and write unit tests for the Socks v5 code in
> >> this ticket:
> >> https://twistedmatrix.com/trac/ticket/1330
> >>
> >> Should I write something very similar to this?? ::
> >> http://twistedmatrix.com/trac/browser/trunk/twisted/test/test_socks.py
> >>
> >> My goal is getting socksv5 client and server code merged to mainline
> >> Twisted with unit tests.
> >
> >
> >
> > twisted/test/test_socks.py is a bad example of a test suite.  Here are
> the
> > things about it you should not emulate:
> >
> >  * It has documentation that is far from complete.  Documentation is
> just as
> > important in unit tests as elsewhere.  In particular, documenting the
> intent
> > of every test method is critical otherwise the test suite is very
> difficult
> > to maintain.
> >
> >  * It exercises too much code in each test method.  Well written test
> > methods do a single very simple thing.  A good rule of thumb is that
> there
> > should only be one `TestCase.assert...` method call in each test method.
> >
> >  * It uses some `TestCase.assert...` methods which are deprecated or
> soon to
> > be deprecated.  `assert_` is the main offender here.
> >
> >  * It doesn't completely cover the implementation (probably because the
> > implementation wasn't developed test-driven).  You can achieve full test
> > coverage without doing test-driven development but it takes more
> discipline.
> > I suggest doing a test-driven implementation of the SOCKSv5 functionality
> > you want (the easy approach to this is to start writing tests, then copy
> the
> > *smallest* possible piece of the existing, untested implementation into
> your
> > new implementation to make those tests pass; repeat until you have all of
> > the desired functionality).
> >
> >  * `StringTCPTransport` seems redundant.  `StringTransport` offers all of
> > this functionality already.
> >
> >  * Many names used in the module don't follow the Twisted name convention
> > (most obviously, "under_scores" are used throughout rather than
> > "camelCase").
> >
> >  * Native strings are used to represent byte strings throughout.
> >
> >  * The protocol interface is uniformly misused (it should call
> > `makeConnection` not `connectionMade`)
> >
> > Hope this helps,
> > Jean-Paul
> >
> > _______________________________________________
> > Twisted-Python mailing list
> > Twisted-Python at twistedmatrix.com
> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>



-- 
--
Kevin Horn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20131117/2d70cf66/attachment-0002.html>


More information about the Twisted-Python mailing list