Hi Akshay,

Thanks for sending this updated patch.  The linter and tests are all
passing.

> - utils/driver/psycopg2/server_manager.py
>>   - Do we have Unit Tests around this?
>
>  No.


In our opinion, server_manager.py and connection.py should have tests.  Are
you finding it difficult to add tests to these files?

Sincerely,

Victoria & Joao


On Wed, May 2, 2018 at 5:58 AM, Akshay Joshi <akshay.jo...@enterprisedb.com>
wrote:

> Hi Joao
>
>
> On Thu, Apr 26, 2018 at 10:26 PM, Joao De Almeida Pereira <
> jdealmeidapere...@pivotal.io> wrote:
>
>> Hi Akshay,
>>
>> Some suggestions:
>> - browser/server_groups/servers/__init__py
>>   This file could have been split into separate functionalities. There is
>> a chunk of changes for connect, why not move that out? Same thing for
>> create. Do we really need to have full integrationy tests that do a HTTP
>> request and connect to a real database to do make sure the functionalities
>> are working? If we isolate these into their own actions we can more easily
>> get more coverage on the code with tests that would be much faster and
>> directed. The big advantage of this is that by reading the tests we can
>> understand what the functions do. Self documenting code.
>>
>
>     If I understood you correctly, you want separate connect and create
> function for SSH Tunnel. If yes I don't think so we should move the SSH
> code and make the rest of the code duplicated in two different functions.
> For "create" function I have just added logic to pass SSH tunnel parameter
> while creating server object, encrypt the tunnel password and send it to
> connect method. For "connect" function encrypt the password and send it
> connect method as parameter. There is no point for such small changes we
> should create two separate functions.
>
>>
>> - utils/driver/psycopg2.py same comments has above
>>
>
>    I think you are talking about "utils/driver/psycopg2/connection.py".
> Same comments as above.
>
>>
>> - browser/server_groups/servers/static/js/server.js:
>>   - The patterm of using `m` for `model`? is a bad pattern, so why not
>> change it?
>>
>
>       Fixed.
>
>>   - We could extract the model creation from this file. This will allow
>> us to add some tests around disabled methods that are a bit everywhere
>>
>        Model creation is the main functionality of the "server.js" (or
> any other module file), code readability wise it should be in the same
> file. If we will do it for rest of the modules then there are so many java
> script files where model creation is in separate file.
>
>   - We could also convert this file to ES6
>>
>
>      I am new to this, so will need to learn first. We can create a
> separate task to do this.
>
>>
>> - utils/driver/psycopg2/server_manager.py
>>   - Do we have Unit Tests around this?
>>
>
>       No.
>
>>   - Maybe this SSH part could be isolated into it's own class, as it is
>> not 100% related to the class in question. We need to use it but is is not
>> part of the ServerManager domain
>>
>
>       According to me SSH Tunnel parameters is the part of server manager
> as we do have other parameters of Server dialog. We can isolate the SSH
> part in other class, but most of the modules (including Server module) have
> access to the ServerManager. If we will isolate that part then anyways we
> will have to write wrapper functions in ServerManager which will
> eventually call functions of new SSH class.
>
>       As one ServerManager object belongs to one server, similarly one
> SSH Tunnel belongs to one server. When SSH tunnel gets created it will
> return local bind port, where rest of the communication should be done on
> local host and the local bind port return by the "SSHTunnelForwarder"
> class, so that need to be in the ServerManager.
>
>      Considering above I have kept that logic in ServerManager.
>
>>
>>
>> - JS template. Eventually I would like to see if completely removed, and
>> the information that we are generating using the template can be passed to
>> the frontend via a Ajax call as an example( Do not think this is the time
>> to do it.)
>>
>> - start_running_query.py
>>  - we could enrich the tests of this functionality
>>
>
>      Added one test case for SSHTunnelConnectionLost.
>
>>
>>
>> And example of naming is for example on psycopg2/connection.py
>>
>> mgr = self.manager
>>
>> How much to we win by having this variable name versus manager =
>> self.manager or even using the self.manager?
>>
>
>    Fixed. Replace "mgr" with "manager" almost at 69 places in the file.
>
>    Attached is the modified patch. Please review it.
>
>>
>>
>> This is not for you in specific, but for @hackers in general:
>> The book https://www.amazon.com/dp/0132350882/
>> <https://www.amazon.com/dp/0132350882/?tag=stackoverflow17-20> is a
>> pretty nice book that gives you an introduction to clean code, that is self
>> documenting and that is much easily maintained.
>>
>> Thanks
>> Joao
>>
>> On Thu, Apr 26, 2018 at 3:44 AM Akshay Joshi <
>> akshay.jo...@enterprisedb.com> wrote:
>>
>>> Hi Hackers,
>>>
>>> Attached is the updated patch which includes documentation of the
>>> feature and also updated screenshots of server dialog with new "SSH Tunnel"
>>> tab.
>>>
>>> On Wed, Apr 25, 2018 at 11:45 AM, Akshay Joshi <
>>> akshay.jo...@enterprisedb.com> wrote:
>>>
>>>> Hi Joao
>>>>
>>>> On Tue, Apr 24, 2018 at 10:04 PM, Joao De Almeida Pereira <
>>>> jdealmeidapere...@pivotal.io> wrote:
>>>>
>>>>> Hi Akshay,
>>>>>
>>>>> After looking through the patch we found some one letter variable
>>>>> names and this is a regression on what we have been trying to accomplish 
>>>>> in
>>>>> the last year.
>>>>>
>>>>> An objective that we have for pgAdmin source code is to increase the
>>>>> testability of it and make it more readable. If we keep on adding one
>>>>> letter variables and if we continue adding code to already convoluted
>>>>> source files it is going to be very hard to achieve this objective.
>>>>>
>>>>
>>>>       At my level I have tried not to give one letter variable names.
>>>> Are you talking about the variable "m" in server.js file which
>>>> represents the Model? If yes then I have followed the code written for
>>>> whole schema and I thought we have to maintain the consistency, so use that
>>>> as it is. Apart from that I haven't seen any other one letter variable,
>>>> please correct me so that I'll rename it.
>>>>
>>>>>
>>>>> Our recommendations for this change are:
>>>>> - Name the variables with comprehensive names
>>>>>
>>>>       Can you please suggest from the patch.
>>>>
>>>>
>>>>> - Extract functions where we can and try to wrap some tests around
>>>>> them (ex: the javascript disabled functions)
>>>>>
>>>>
>>>>     I have tried to do that too, if you can see the "server/__init__.py"
>>>> file I have created "*get_response_for_password" function to remove
>>>> redundant code. Based on the condition it will return the json response.*
>>>>
>>>>
>>>>> - We really need to find a better pattern than templated Javascript to
>>>>> pass information from the backend to the frontend
>>>>>
>>>> - When changing a piece of code, if we see code that is confusing or
>>>>> that is hard to read, we should refactor instead of adding to the pattern.
>>>>>
>>>>
>>>>     Please elaborate more with respect to my patch, which part of code
>>>> should required modification?
>>>>
>>>>>
>>>>> Thanks
>>>>> Victoria & Joao
>>>>>
>>>>>
>>>>> On Tue, Apr 24, 2018 at 10:13 AM Akshay Joshi <
>>>>> akshay.jo...@enterprisedb.com> wrote:
>>>>>
>>>>>> Hi Hackers
>>>>>>
>>>>>> As per suggestion by Dave, I have moved "Advanced" tab at the last
>>>>>> for Server dialog. Attached is the modified patch.
>>>>>>
>>>>>> On Mon, Apr 23, 2018 at 7:32 PM, Anthony Emengo <aeme...@pivotal.io>
>>>>>> wrote:
>>>>>>
>>>>>>> For what it is worth, I manually verified that the feature worked,
>>>>>>> as well as looked through the code.
>>>>>>>
>>>>>>> I'd like to see end-to-end testing for regression sake, but it's
>>>>>>> hard to so at this moment.
>>>>>>>
>>>>>>> - Anthony and Joao.
>>>>>>>
>>>>>>> On Mon, Apr 23, 2018 at 5:09 AM, Akshay Joshi <
>>>>>>> akshay.jo...@enterprisedb.com> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Apr 23, 2018 at 1:30 PM, Dave Page <dp...@pgadmin.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Thu, Apr 19, 2018 at 6:56 PM, Anthony Emengo <
>>>>>>>>> aeme...@pivotal.io> wrote:
>>>>>>>>>
>>>>>>>>>> Hey Akshay
>>>>>>>>>>
>>>>>>>>>> This patch passed our test pipelines.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Did you test the feature and//or review the code and tests?
>>>>>>>>> Passing the tests is great, *if* the whole feature is covered (and the
>>>>>>>>> nature of this patch will make that quite difficult, maybe impossible 
>>>>>>>>> to do
>>>>>>>>> without external infrastructure and config).
>>>>>>>>>
>>>>>>>>
>>>>>>>>     Agreed, it's been difficult to write test case to test the
>>>>>>>> complete feature.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Anthony and Victoria
>>>>>>>>>>
>>>>>>>>>> On Thu, Apr 19, 2018 at 1:48 AM, Akshay Joshi <
>>>>>>>>>> akshay.jo...@enterprisedb.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Hackers
>>>>>>>>>>>
>>>>>>>>>>> I have implemented the SSH Tunnel support using
>>>>>>>>>>> https://pypi.org/project/sshtunnel/ python package. Added "SSH
>>>>>>>>>>> Tunnel" Tab in server dialog. This implementation supports user name
>>>>>>>>>>> /password and private/public key combination with Passphrase to 
>>>>>>>>>>> crate SSH
>>>>>>>>>>> Tunnel. I have added regression test case to add server using SSH 
>>>>>>>>>>> Tunnel
>>>>>>>>>>> options.
>>>>>>>>>>>
>>>>>>>>>>> The given python package(https://pypi.org/project/sshtunnel/) 
>>>>>>>>>>> support
>>>>>>>>>>> Python version *2.7, 3.4+*.
>>>>>>>>>>> It uses Paramiko (Python implementation of SSHv2 protocol) which
>>>>>>>>>>> actually drops support for Python 2.6. So I have added
>>>>>>>>>>> *SUPPORT_SSH_TUNNEL* parameter in config.py which checks the
>>>>>>>>>>> python version and set the flag accordingly. In case of Python 2.6, 
>>>>>>>>>>> 3.0,
>>>>>>>>>>> 3.1, 3.2 and 3.3 control on the "SSH Tunnel" tab of server dialog 
>>>>>>>>>>> will be
>>>>>>>>>>> disabled.
>>>>>>>>>>>
>>>>>>>>>>> Please review it, and if looks good please commit the code.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>
>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>
>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>> 976-788-8246 <+91%2097678%2088246>*
>>>
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>

Reply via email to