I don't think I will have the time during this week to test this, would just like to say a big 'Bravo' for this work!
On Mon, Apr 4, 2016 at 1:27 PM, anthony shaw <anthony.p.s...@gmail.com> wrote: > As per the request of a number of our users, I've been working on a PR > to replace the base HTTP connection classes with an implementation > using the requests library. > > For the following reasons > > 1. requests is the defacto standard - it would be in the standard > library but agreed against to allow it to develop faster > https://github.com/kennethreitz/requests/issues/2424 > 2. it works with python 2.6->3.5 > 3. Our SSL implementation is bad for Windows users (yes, they do > exist!) they have to download a copy of the certificate authority > database from some random website, I've seen security people turn to > stone whilst reading this > 4. Developers can use requests_mock for deeper integration testing > 5. less code to maintain > > The PR is #728 https://github.com/apache/libcloud/pull/728 > > This started out as what I thought would be a simple change to update > LibcloudHTTPSConnection and LibcloudHTTPConnection, after refactoring > then I realised the classes were now identical and moved them into 1 > instance. There is no longer a need for conn_classes tuple in the > Connection class, which is now a conn_class for a single class > instance. > > This change ended up being less about the implementation of the base > classes, which was quite simple really, but about updating tests. > > Aside from the Yak shaving I noticed a few things: > 1) the tests were coupled to there being a conn_classes tuple, of the > 6300+ tests, I broken 4300 in the first few commits > 2) some of the test classes had a method called "respond" and due to > Pythons multiple inheritance algorithm this covered the underlying > response classes' implementation. > 3) Our chunking support mocks for storage tests were designed to > always pass, I've implemented a string iterator for the tests, but > this still doesn't seem like a fair test > > So, after updating all of the test classes due to a combination of > test fragility, changing the API (and the test mocks making > assumptions about the existence and behaviour of internal fields), I > now don't have the confidence that a 100% test pass means 0 > regression. > > I think the best approach is not to merge this PR into trunk, but into > a seperate branch and allow further testing as a seperate package, > e.g. apache-libcloud-requests > > Please share your thoughts, concerns and ideas > > Anthony >