hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Vary (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-14536) Unit test code cleanup
Date Thu, 01 Sep 2016 01:17:20 GMT

    [ https://issues.apache.org/jira/browse/HIVE-14536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15453943#comment-15453943
] 

Peter Vary commented on HIVE-14536:
-----------------------------------

Hi [~kgyrtkirk], [~sseth],

I have to apologize here, since if everyone thought after HIVE-14444, that we should refactor
these classes only after the dust is settled, it was clearly my lack of open source experience
which caused problem here. You know, if everyone travels on a highway opposite to me, clearly
I must have chosen a wrong lane :)
To explain myself a little more, in my previous (numerous closed source) projects, we usually
finalized the basic concepts before adding new features, non critical fixes and tuning performance,
but starting to learn, that in open source the "many baby steps" is a way to go. 

Anyway, sorry for the misunderstanding again! I do my best, and learning as fast as I can!
:)

Some words for the changes in the patch:
I think there will be the following typical use cases for the qtest infrastructure:
- Adding a new query - No differences here between the two solutions
- Adding a new test configuration
-- With the current solution we have to change minimum 2 files CliConfigs, TestCase, and probably
a driver
-- After the patch these changes are in one place, the TestCase
- Looking for a problem with a particular TestCase
-- With the current solution we go to the TestCase, follow the buildClassRule method, realize,
that it is defined by the Configuration, go to the CliConfigurations, find the specific Adapter,
find the method, and follow it to the QTestUtil implementation - which means 4 redirection
-- After the patch from the TestCase you could go directly to the QTestUtil implementation
- immediate, straightforward
- Changing something in the QTestUtil, and checking which TestCases are effected by the change
-- With the current solution we will find the affected Adapter easily, but after that it is
manual work, to find which TestCases are using that adapter
-- After the patch we could get direct link to the effected TestCases

While it is good to use the frameworks as such, but one have to be careful to use the features
which are beneficial in the current situation. Here we absolutely need the parameterized test
running, exactly as it has been implemented, but in my opinion using rules not helps in our
case. I think there are many ok designs, like the current one, but our best solution would
be the following:
- Configuration - storing the test configurations - same as currently
- ConfigBuilder - creating the test configurations - as both of you pointed out, and I implemented
it
- TestCase - Defining the setup/before/after/shutdown functionality, especially since some
of the test cases need specific setup/cleanup procedures
- TestUtil(s) - Encapsulating the reoccurring functionality - for example there are 4 kinds
of test running and result evaluating methods used across the TestCases, there is a typical
functionality to remove created tables etc.

With this in mind, I still think we would have better, more maintainable solution after this
patch.

I hope I answered all your questions and comments regarding this patch. If not so, or you
do not agree with me, just write. I really hope, that I did not blocked all work on the test
cases - I have merged every affected change to this one, and I am ready to do so with the
following changes too, like HIVE-14532, which I have already reviewed. Seriously! :) So do
not hesitate to work on them.

If we agree, that the general direction is good, and the patch needs only incremental changes
like the ConfigBuilder, I would be happy to invest the time and the effort to make it happen.
If you do not agree even with the basic direction then please state it.

Thanks, and apologies again,
Peter


> Unit test code cleanup
> ----------------------
>
>                 Key: HIVE-14536
>                 URL: https://issues.apache.org/jira/browse/HIVE-14536
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Testing Infrastructure
>            Reporter: Peter Vary
>            Assignee: Peter Vary
>         Attachments: HIVE-14536.5.patch, HIVE-14536.6.patch, HIVE-14536.7.patch, HIVE-14536.8.patch,
HIVE-14536.patch
>
>
> Clean up the itest infrastructure, to create a readable, easy to understand code



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message