From 36f26adf85e42049f8df5b42267348469249f611 Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Mon, 9 Aug 2021 15:15:14 +0200
Subject: [PATCH] Added test on JobService

---
 .../java/it/inaf/oats/vospace/JobService.java |  2 +-
 .../it/inaf/oats/vospace/JobServiceTest.java  | 43 +++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/src/main/java/it/inaf/oats/vospace/JobService.java b/src/main/java/it/inaf/oats/vospace/JobService.java
index 938fbee..852b05f 100644
--- a/src/main/java/it/inaf/oats/vospace/JobService.java
+++ b/src/main/java/it/inaf/oats/vospace/JobService.java
@@ -203,7 +203,7 @@ public class JobService {
                 List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user);
                 // Call file service and command copy
                 try{                
-                fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user);
+                    fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user);
                 } catch (Exception e) {
                     // We decided not to purge metadata in case of failure
                     // just release busy nodes setting job_id = null
diff --git a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
index ee017ed..7c824f3 100644
--- a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
+++ b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
@@ -55,6 +55,12 @@ public class JobServiceTest {
 
     @Mock
     private MoveService moveService;
+    
+    @Mock
+    private CopyService copyService;
+    
+    @Mock
+    private FileServiceClient fileServiceClient;
 
     @InjectMocks
     private JobService jobService;
@@ -217,6 +223,43 @@ public class JobServiceTest {
         assertEquals(ExecutionPhase.COMPLETED, phases.get(2));
     }
 
+    @Test
+    public void testStartJobCopyNode() {
+
+        Transfer copyNode = new Transfer();
+        copyNode.setDirection("vos://example.com!vospace/myfile");
+        copyNode.setKeepBytes(true);
+
+        JobSummary job = new JobSummary();
+        setJobInfo(job, copyNode);
+
+        when(uriService.getTransfer(any())).thenReturn(copyNode);
+
+        List<ExecutionPhase> phases = new ArrayList<>();
+        doAnswer(invocation -> {
+            JobSummary j = invocation.getArgument(0);
+            phases.add(j.getPhase());
+            return null;
+        }).when(jobDAO).updateJob(any(), any());
+
+        when(copyService.processCopyNodes(any(), any(), any())).thenReturn(List.of("source", "dest"));
+        
+        jobService.setJobPhase(job, "RUN");
+
+        verify(fileServiceClient, timeout(1000).times(1)).startFileCopyJob(eq("source"), eq("dest"), any(), any());
+
+        verify(jobDAO, timeout(1000).times(3)).updateJob(any(), any());
+
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException ex) {
+        }
+
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(0));
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(1));
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(2));
+    }
+
     private Transfer getPullFromVoSpaceHttpTransfer() {
         Transfer transfer = new Transfer();
         transfer.setTarget("vos://example.com!vospace/myfile");
-- 
GitLab