[
https://issues.apache.org/jira/browse/HIVE-7201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14030766#comment-14030766
]
Ashutosh Chauhan commented on HIVE-7201:
----------------------------------------
+1
> Fix TestHiveConf#testConfProperties test case
> ---------------------------------------------
>
> Key: HIVE-7201
> URL: https://issues.apache.org/jira/browse/HIVE-7201
> Project: Hive
> Issue Type: Bug
> Components: Tests
> Affects Versions: 0.13.0
> Reporter: Pankit Thapar
> Assignee: Pankit Thapar
> Priority: Minor
> Attachments: HIVE-7201-1.patch, HIVE-7201-2.patch,
> HIVE-7201.03.patch, HIVE-7201.patch
>
>
> CHANGE 1:
> TEST CASE :
> The intention of TestHiveConf#testConfProperties() is to test the HiveConf
> properties being set in the priority as expected.
> Each HiveConf object is initialized as follows:
> 1) Hadoop configuration properties are applied.
> 2) ConfVar properties with non-null values are overlayed.
> 3) hive-site.xml properties are overlayed.
> ISSUE :
> The mapreduce related configurations are loaded by JobConf and not
> Configuration.
> The current test tries to get the configuration properties like :
> HADOOPNUMREDUCERS ("mapred.job.reduces")
> from Configuration class. But these mapreduce related properties are loaded
> by JobConf class from mapred-default.xml.
> DETAILS :
> LINE 63 : checkHadoopConf(ConfVars.HADOOPNUMREDUCERS.varname, "1"); -->fails
> Because,
> private void checkHadoopConf(String name, String expectedHadoopVal) {
> Assert.assertEquals(expectedHadoopVal, new Configuration().get(name));
> ----> Second parameter is null, since its the JobConf class and not the
> Configuration class that initializes mapred-default values.
> }
> Code that loads mapreduce resources is in ConfigUtil and JobConf makes a call
> like this (in static block):
> public class JobConf extends Configuration {
>
> private static final Log LOG = LogFactory.getLog(JobConf.class);
> static{
> ConfigUtil.loadResources(); --> loads mapreduce related resources
> (mapreduce-default.xml)
> }
> .....
> }
> Please note, the test case assertion works fine if HiveConf() constructor is
> called before this assertion since, HiveConf() triggers JobConf()
> which basically sets the default values of the properties pertaining to
> mapreduce.
> This is why, there won't be any failures if testHiveSitePath() was run before
> testConfProperties() as that would load mapreduce
> properties into config properties.
> FIX:
> Instead of using a Configuration object, we can use the JobConf object to get
> the default values used by hadoop/mapreduce.
> CHANGE 2:
> In TestHiveConf#testHiveSitePath(), a call to static method
> getHiveSiteLocation() should be called statically instead of using an object.
--
This message was sent by Atlassian JIRA
(v6.2#6252)