YARN-8810. Fixed a YARN service bug in comparing ConfigFile object.

Contributed by Chandni Singh
This commit is contained in:
Eric Yang 2018-10-16 18:54:40 -04:00
parent 657032f5dd
commit 3bfd214a59
3 changed files with 40 additions and 5 deletions

View File

@ -88,7 +88,7 @@ public List<Component> findTargetComponentSpecs(Service currentDef,
} }
if (!Objects.equals(currentDef.getConfiguration(), if (!Objects.equals(currentDef.getConfiguration(),
currentDef.getConfiguration())) { targetDef.getConfiguration())) {
return targetDef.getComponents(); return targetDef.getComponents();
} }

View File

@ -199,7 +199,8 @@ public boolean equals(java.lang.Object o) {
ConfigFile configFile = (ConfigFile) o; ConfigFile configFile = (ConfigFile) o;
return Objects.equals(this.type, configFile.type) return Objects.equals(this.type, configFile.type)
&& Objects.equals(this.destFile, configFile.destFile) && Objects.equals(this.destFile, configFile.destFile)
&& Objects.equals(this.srcFile, configFile.srcFile); && Objects.equals(this.srcFile, configFile.srcFile)
&& Objects.equals(this.properties, configFile.properties);
} }
@Override @Override

View File

@ -17,14 +17,15 @@
*/ */
package org.apache.hadoop.yarn.service; package org.apache.hadoop.yarn.service;
import com.google.common.collect.Lists;
import org.apache.hadoop.yarn.service.api.records.Component; import org.apache.hadoop.yarn.service.api.records.Component;
import org.apache.hadoop.yarn.service.api.records.ConfigFile;
import org.apache.hadoop.yarn.service.api.records.Configuration;
import org.apache.hadoop.yarn.service.api.records.Service; import org.apache.hadoop.yarn.service.api.records.Service;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.util.ArrayList; import java.util.*;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@ -86,4 +87,37 @@ public void testComponentArtifactChange() {
expected, finder.findTargetComponentSpecs(currentDef, expected, finder.findTargetComponentSpecs(currentDef,
targetDef)); targetDef));
} }
@Test
public void testChangeInConfigFileProperty() {
ConfigFile file = new ConfigFile().srcFile("src").destFile("dest")
.type(ConfigFile.TypeEnum.HADOOP_XML);
Map<String, String> props = new HashMap<>();
props.put("k1", "v1");
file.setProperties(props);
Configuration conf = new Configuration().files(Lists.newArrayList(file));
Service currentDef = TestServiceManager.createBaseDef("test");
currentDef.setConfiguration(conf);
// new spec has changes in config file property
file = new ConfigFile().srcFile("src").destFile("dest")
.type(ConfigFile.TypeEnum.HADOOP_XML);
Map<String, String> changedProps = new HashMap<>();
changedProps.put("k1", "v2");
file.setProperties(changedProps);
conf = new Configuration().files(Lists.newArrayList(file));
Service targetDef = TestServiceManager.createBaseDef("test");
targetDef.setConfiguration(conf);
List<Component> expected = new ArrayList<>();
expected.addAll(targetDef.getComponents());
assertEquals("all components needs upgrade",
expected, finder.findTargetComponentSpecs(currentDef, targetDef));
}
} }