This is an automated email from the ASF dual-hosted git repository.
snemeth pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new de526e1 YARN-10947. Simplify AbstractCSQueue#initializeQueueState.
Contributed by Andras Gyori
de526e1 is described below
commit de526e166c349e49d657c5980901670c086d36b2
Author: Szilard Nemeth <[email protected]>
AuthorDate: Thu Feb 17 21:05:01 2022 +0100
YARN-10947. Simplify AbstractCSQueue#initializeQueueState. Contributed by
Andras Gyori
---
.../yarn/client/api/impl/AHSv2ClientImpl.java | 4 +-
.../yarn/client/api/impl/TestAHSv2ClientImpl.java | 70 ++++++++++++++++++++++
2 files changed, 71 insertions(+), 3 deletions(-)
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AHSv2ClientImpl.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AHSv2ClientImpl.java
index e3653ba..5f90930 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AHSv2ClientImpl.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AHSv2ClientImpl.java
@@ -137,9 +137,7 @@ public class AHSv2ClientImpl extends AHSClient {
ApplicationId appId = applicationAttemptId.getApplicationId();
ApplicationReport appReport = getApplicationReport(appId);
Map<String, String> filters = new HashMap<>();
- filters.put("infofilters", "SYSTEM_INFO_PARENT_ENTITY eq {\"id\":\"" +
- applicationAttemptId.toString() +
- "\",\"type\":\"YARN_APPLICATION_ATTEMPT\"}");
+ filters.put("appattemptId", applicationAttemptId.toString());
List<TimelineEntity> entities = readerClient.getContainerEntities(
appId, "ALL", filters, 0, null);
List<ContainerReport> containers =
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAHSv2ClientImpl.java
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAHSv2ClientImpl.java
index f4d7a56..9664e40 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAHSv2ClientImpl.java
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAHSv2ClientImpl.java
@@ -22,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import org.apache.hadoop.thirdparty.com.google.common.collect.ImmutableMap;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport;
@@ -45,8 +46,11 @@ import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -108,6 +112,72 @@ public class TestAHSv2ClientImpl {
}
@Test
+ public void testGetContainerByAppAttempt() throws IOException, YarnException
{
+ int applicationId = 1;
+ ApplicationId appId = ApplicationId.newInstance(0, applicationId);
+
+ ApplicationAttemptId appAttemptId =
+ ApplicationAttemptId.newInstance(appId, 1);
+
+ ContainerId containerId = ContainerId.newContainerId(appAttemptId, 1);
+
+ when(spyTimelineReaderClient.getContainerEntities(
+ appId, "ALL",
+ ImmutableMap.of("appattemptId", appAttemptId.toString()),
+ 0, null))
+ .thenReturn(Arrays.asList(createContainerEntity(containerId)));
+
+ when(spyTimelineReaderClient.getApplicationEntity(appId, "ALL", null))
+ .thenReturn(createApplicationTimelineEntity(appId, true,
+ false));
+
+ List<ContainerReport> containerList = client.getContainers(appAttemptId);
+
+ assertThat(containerList.size()).isEqualTo(1);
+
+ assertThat(containerList.get(0).getContainerId().getApplicationAttemptId()
+ .getApplicationId().getId()).isEqualTo(applicationId);
+ }
+
+ @Test
+ public void testGetMultipleContainersByAppAttempt() throws IOException,
YarnException {
+ int numContainers = 4;
+ int applicationId = 3;
+ int applicationAttemptId = 3;
+ ApplicationId appMultiple = ApplicationId.newInstance(0, applicationId);
+ ApplicationAttemptId appAttemptIdMultiple =
+ ApplicationAttemptId.newInstance(appMultiple,
applicationAttemptId);
+
+ List<TimelineEntity> containerEntities = new ArrayList<>();
+ for (int containerId = 0; containerId < numContainers; ++containerId) {
+ containerEntities.add(createContainerEntity(ContainerId.newContainerId(
+ appAttemptIdMultiple, containerId)));
+ }
+
+ when(spyTimelineReaderClient.getContainerEntities(
+ appMultiple, "ALL",
+ ImmutableMap.of("appattemptId", appAttemptIdMultiple.toString()),
+ 0, null))
+ .thenReturn(containerEntities);
+
+ when(spyTimelineReaderClient.getApplicationEntity(appMultiple, "ALL",
null))
+ .thenReturn(createApplicationTimelineEntity(appMultiple, true,
+ false));
+
+ List<ContainerReport> containerListMultiple =
client.getContainers(appAttemptIdMultiple);
+
+ assertThat(containerListMultiple.size()).isEqualTo(numContainers);
+ for (int containerIdx = 0; containerIdx < containerListMultiple.size();
++containerIdx) {
+ ContainerReport report = containerListMultiple.get(containerIdx);
+
assertThat(report.getContainerId().getContainerId()).isEqualTo(containerIdx);
+
assertThat(report.getContainerId().getApplicationAttemptId().getAttemptId())
+ .isEqualTo(applicationAttemptId);
+
assertThat(report.getContainerId().getApplicationAttemptId().getApplicationId().getId())
+ .isEqualTo(applicationId);
+ }
+ }
+
+ @Test
public void testGetAppReport() throws IOException, YarnException {
final ApplicationId appId = ApplicationId.newInstance(0, 1);
when(spyTimelineReaderClient.getApplicationEntity(appId, "ALL", null))
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]