@Test
public void testGetGrouperMetadata() {
LocalityManager mockLocalityManager = mock(LocalityManager.class);
TaskAssignmentManager mockTaskAssignmentManager = Mockito.mock(TaskAssignmentManager.class);
Map<String, Map<String, String>> localityMappings = new HashMap<>();
localityMappings.put("0", ImmutableMap.of(SetContainerHostMapping.HOST_KEY, "abc-affinity"));
Map<String, String> taskAssignment = ImmutableMap.of("task-0", "0");
when(mockLocalityManager.readContainerLocality()).thenReturn(localityMappings);
when(mockTaskAssignmentManager.readTaskAssignment()).thenReturn(taskAssignment);
when(mockTaskAssignmentManager.readTaskModes()).thenReturn(Collections.singletonMap(new TaskName("task-0"), TaskMode.Active));
GrouperMetadataImpl grouperMetadata = JobModelManager.getGrouperMetadata(new MapConfig(), mockLocalityManager, mockTaskAssignmentManager);
Mockito.verify(mockLocalityManager).readContainerLocality();
Mockito.verify(mockTaskAssignmentManager).readTaskAssignment();
Assert.assertEquals(ImmutableMap.of("0", new LocationId("abc-affinity"), "1", new LocationId("ANY_HOST")), grouperMetadata.getProcessorLocality());
Assert.assertEquals(ImmutableMap.of(new TaskName("task-0"), new LocationId("abc-affinity")), grouperMetadata.getTaskLocality());
}