This is an automated email from the ASF dual-hosted git repository.

harikrishna-patnala pushed a commit to branch FixMountFormatBackupAndRestore
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 7af5fc0c5ac25371f477cf6cafeb8a2cfd3f2d83
Author: Harikrishna Patnala <[email protected]>
AuthorDate: Tue Mar 10 14:26:24 2026 +0530

    Unit test fixes
---
 .../LibvirtRestoreBackupCommandWrapper.java        |  9 ++++++--
 .../LibvirtRestoreBackupCommandWrapperTest.java    | 27 ++++++++++++++++++----
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapper.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapper.java
index 2b2e09df690..ca85535a89c 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapper.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapper.java
@@ -214,6 +214,13 @@ public class LibvirtRestoreBackupCommandWrapper extends 
CommandWrapper<RestoreBa
             }
         }
 
+        executeMount(backupRepoAddress, backupRepoType, mountOptions, 
mountDirectory, mountTimeout);
+
+        return mountDirectory;
+    }
+
+    private void executeMount(String backupRepoAddress, String backupRepoType, 
String mountOptions,
+                              String mountDirectory, Integer mountTimeout) {
         List<String[]> commands = new ArrayList<>();
         List<String> cmd = new ArrayList<>();
         cmd.add("sudo");
@@ -234,8 +241,6 @@ public class LibvirtRestoreBackupCommandWrapper extends 
CommandWrapper<RestoreBa
                     backupRepoAddress, backupRepoType, mountDirectory, 
result.second());
             throw new CloudRuntimeException("Failed to mount the backup 
repository on the KVM host");
         }
-
-        return mountDirectory;
     }
 
     private void unmountBackupDirectory(String backupDirectory) {
diff --git 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapperTest.java
 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapperTest.java
index ef6b5c08189..b956d3d3730 100644
--- 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapperTest.java
+++ 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreBackupCommandWrapperTest.java
@@ -18,6 +18,7 @@ package com.cloud.hypervisor.kvm.resource.wrapper;
 
 import com.cloud.agent.api.Answer;
 import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource;
+import com.cloud.utils.Pair;
 import com.cloud.storage.Storage;
 import com.cloud.utils.script.Script;
 import com.cloud.vm.VirtualMachine;
@@ -83,6 +84,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
@@ -126,6 +129,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
@@ -165,6 +170,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
@@ -207,6 +214,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
@@ -251,8 +260,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
-                scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
-                        .thenReturn(1); // Mount failure
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(1, "Failed"));
 
                 Answer result = wrapper.execute(command, 
libvirtComputingResource);
 
@@ -290,6 +299,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
@@ -339,8 +350,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
-                scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
-                        .thenReturn(0); // Mount success
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
                         .thenAnswer(invocation -> {
                             String command = invocation.getArgument(0);
@@ -390,6 +401,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenAnswer(invocation -> {
                             String command = invocation.getArgument(0);
@@ -449,6 +462,8 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
                         .thenAnswer(invocation -> {
                             String command = invocation.getArgument(0);
@@ -551,6 +566,10 @@ public class LibvirtRestoreBackupCommandWrapperTest {
             filesMock.when(() -> 
Files.createTempDirectory(anyString())).thenReturn(tempPath);
 
             try (MockedStatic<Script> scriptMock = mockStatic(Script.class)) {
+                Mockito.when(Script.executePipedCommands(Mockito.anyList(), 
Mockito.anyLong()))
+                        .thenReturn(new Pair<>(0, "success"));
+                scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))
+                        .thenReturn(0); // Mount success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString()))
                         .thenReturn(0); // All commands success
                 scriptMock.when(() -> 
Script.runSimpleBashScriptForExitValue(anyString(), anyInt(), 
any(Boolean.class)))

Reply via email to