You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by GitBox <gi...@apache.org> on 2022/09/14 20:47:34 UTC

[GitHub] [nifi] doodzio commented on a diff in pull request #6335: NIFI-9920 Fetching all bulletins of a process group on update process…

doodzio commented on code in PR #6335:
URL: https://github.com/apache/nifi/pull/6335#discussion_r970107044


##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -114,6 +127,21 @@ public class StandardNiFiServiceFacadeTest {
     private static final Integer ACTION_ID_2 = 2;
     private static final String PROCESSOR_ID_2 = "processor-2";
 
+    private static final String GROUP_NAME_1 = "group-name-1";
+    private static final String GROUP_NAME_2 = "group-name-2";
+    private static final String PROCESSOR_NAME_1 = "Processor1";
+    private static final String PROCESSOR_NAME_2 = "Processor2";
+    private static final String BULLETIN_CATEGORY = "Log Message";
+    private static final String BULLETIN_SEVERITY = "ERROR";
+    private static final String BULLETIN_MESSAGE_1 = "Error1";
+    private static final String BULLETIN_MESSAGE_2 = "Error2";
+    private static final String PATH_TO_GROUP_1 = "Path1";
+    private static final String PATH_TO_GROUP_2 = "Path2";
+    private static final String RANDOM_GROUP_ID = "randomGroupId";
+
+
+
+

Review Comment:
   Unnecessary empty lines 142 - 143
   



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithNoBulletinForProcessGroup() {
+
+        //GIVEN
+

Review Comment:
   Unnecessary empt line before and after `//Given`



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithNoBulletinForProcessGroup() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(0,result.getBulletins().size());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorGroupBulletin() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, groupId,
+        ComponentType.PROCESSOR,GROUP_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    private static class MockTestBulletinRepository extends MockBulletinRepository {
+
+        List<Bulletin> bulletinList;
+
+        public MockTestBulletinRepository() {
+            bulletinList = new ArrayList<>();
+        }
+
+        @Override
+        public void addBulletin(Bulletin bulletin) {
+            bulletinList.add(bulletin);
+        }
+
+        public List<Bulletin> findBulletinsForGroupBySource(String groupId) {
+            List<Bulletin> ans  = new ArrayList<Bulletin>();

Review Comment:
   Can be simplified
   
   List<Bulletin> ans = new ArrayList<>();



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);

Review Comment:
   This factory is used only here, seems redundant, mock already similar one.



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithNoBulletinForProcessGroup() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(0,result.getBulletins().size());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorGroupBulletin() {
+
+        //GIVEN

Review Comment:
   Unnecessary empt line before and after //Given



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN

Review Comment:
   Can you make these lines more readable 621-623.
   
   Also, please add empty line before `//WHEN` 



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithNoBulletinForProcessGroup() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(0,result.getBulletins().size());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorGroupBulletin() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);

Review Comment:
   This factory is used only here, seems redundant, mock already similar one.



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+

Review Comment:
   Unnecessary empty line



##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/test/java/org/apache/nifi/web/StandardNiFiServiceFacadeTest.java:
##########
@@ -555,4 +583,179 @@ private RemoteProcessGroupDTO createRemoteProcessGroupDTO(String id, boolean tra
 
         return remoteProcessGroup;
     }
+
+
+    @Test
+    public void testUpdateProcessGroup_WithProcessorBulletin() {
+        //GIVEN
+        final String groupId = UUID.randomUUID().toString();
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName(GROUP_NAME_1);
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+        final DtoFactory dtoFactory = new DtoFactory();
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);
+
+        MockTestBulletinRepository bulletinRepository = new MockTestBulletinRepository();
+        serviceFacadeSpy.setBulletinRepository(bulletinRepository);
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(groupId, GROUP_NAME_1, PROCESSOR_ID_1,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_1,BULLETIN_CATEGORY,BULLETIN_SEVERITY,BULLETIN_MESSAGE_1,PATH_TO_GROUP_1));
+        bulletinRepository.addBulletin(BulletinFactory.createBulletin(RANDOM_GROUP_ID,GROUP_NAME_2, PROCESSOR_ID_2,
+        ComponentType.PROCESSOR,PROCESSOR_NAME_2, BULLETIN_CATEGORY,BULLETIN_SEVERITY, BULLETIN_MESSAGE_2,PATH_TO_GROUP_2));
+        //WHEN
+        ProcessGroupEntity result = serviceFacadeSpy.updateProcessGroup(revision, processGroupDTO);
+        //THEN
+        Assert.assertNotNull(result);
+        Assert.assertEquals(1,result.getBulletins().size());
+        Assert.assertEquals(groupId,result.getBulletins().get(0).getGroupId());
+    }
+
+    @Test
+    public void testUpdateProcessGroup_WithNoBulletinForProcessGroup() {
+
+        //GIVEN
+
+        final String groupId = UUID.randomUUID().toString();
+
+        final ProcessGroup processGroup = mock(ProcessGroup.class);
+        when(processGroup.getIdentifier()).thenReturn(groupId);
+
+        ProcessGroupStatus processGroupStatus = new ProcessGroupStatus();
+        processGroupStatus.setId(groupId);
+        processGroupStatus.setName("group-name-1");
+
+        final ControllerFacade controllerFacade = mock(ControllerFacade.class);
+        when(controllerFacade.getProcessGroupStatus(any())).thenReturn(processGroupStatus);
+
+        final StandardNiFiServiceFacade serviceFacadeSpy = spy(serviceFacade);
+        serviceFacadeSpy.setControllerFacade(controllerFacade);
+
+        final DtoFactory dtoFactory = new DtoFactory();
+
+        ProcessGroupDTO processGroupDTO = new ProcessGroupDTO();
+        processGroupDTO.setId(groupId);
+        when(processGroupDAO.getProcessGroup(groupId)).thenReturn(processGroup);
+        when(processGroupDAO.updateProcessGroup(processGroupDTO)).thenReturn(processGroup);
+
+        final RevisionManager revisionManager = mock(RevisionManager.class);
+        Revision revision = new Revision(1L,"a","b");
+        final FlowModification lastModification = new FlowModification(revision,"a");
+
+        RevisionUpdate<Object> snapshot = new StandardRevisionUpdate<>(processGroupDTO,lastModification);
+        when(revisionManager.updateRevision(any(),any(),any())).thenReturn((RevisionUpdate<Object> )snapshot);
+
+        serviceFacadeSpy.setRevisionManager(revisionManager);
+        serviceFacadeSpy.setDtoFactory(dtoFactory);

Review Comment:
   This factory is used only here, seems redundant, mock already similar one.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org