|
2 | 2 |
|
3 | 3 | from lib.commands import SSHCommandFailed |
4 | 4 | from lib.common import Defer, vm_image, wait_for |
| 5 | +from lib.host import Host |
5 | 6 | from lib.sr import SR |
6 | | -from lib.vdi import VDI, ImageFormat |
| 7 | +from lib.vdi import VDI |
7 | 8 | from lib.vm import VM |
8 | 9 | from tests.storage import ( |
9 | 10 | MAX_VDI_SIZE, |
| 11 | + CBTTest, |
10 | 12 | CoalesceOperation, |
11 | 13 | ImageFormat, |
12 | 14 | XVACompression, |
| 15 | + assert_cbt_log_does_not_exist_lvm_sr, |
| 16 | + assert_cbt_log_exists_lvm_sr, |
13 | 17 | coalesce_integrity, |
14 | 18 | full_vdi_write, |
15 | 19 | vdi_export_import, |
@@ -93,3 +97,63 @@ def test_reboot(self, host, lvmohba_sr, vm_on_lvmohba_sr): |
93 | 97 | vm.shutdown(verify=True) |
94 | 98 |
|
95 | 99 | # *** End of tests with reboots |
| 100 | + |
| 101 | + |
| 102 | +class TestLVMoHBACBT(CBTTest): |
| 103 | + """Test CBT functionality on LVMOHBA SR""" |
| 104 | + |
| 105 | + @staticmethod |
| 106 | + def assert_cbt_log_exists(host: Host, sr: SR, vdi: VDI) -> None: |
| 107 | + assert_cbt_log_exists_lvm_sr(host, sr, vdi) |
| 108 | + |
| 109 | + @staticmethod |
| 110 | + def assert_cbt_log_does_not_exist(host: Host, sr: SR, vdi: VDI) -> None: |
| 111 | + assert_cbt_log_does_not_exist_lvm_sr(host, sr, vdi) |
| 112 | + |
| 113 | + def test_enable_disable_cbt(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 114 | + self._test_enable_disable_cbt(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 115 | + |
| 116 | + def test_cbt_log_creation(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 117 | + self._test_cbt_log_creation(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 118 | + |
| 119 | + def test_snapshot_with_cbt(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 120 | + self._test_snapshot_with_cbt(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 121 | + |
| 122 | + @pytest.mark.small_vm |
| 123 | + def test_changed_blocks_tracking(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI, |
| 124 | + vm_on_lvmohba_sr: VM) -> None: |
| 125 | + self._test_changed_blocks_tracking(host, lvmohba_sr, vdi_on_lvmohba_sr, vm_on_lvmohba_sr) |
| 126 | + |
| 127 | + @pytest.mark.small_vm |
| 128 | + def test_cbt_after_coalesce(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI, |
| 129 | + vm_on_lvmohba_sr: VM) -> None: |
| 130 | + self._test_cbt_after_coalesce(host, lvmohba_sr, vdi_on_lvmohba_sr, vm_on_lvmohba_sr) |
| 131 | + |
| 132 | + @pytest.mark.small_vm |
| 133 | + def test_incremental_snap_scenario(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI, |
| 134 | + vm_on_lvmohba_sr: VM) -> None: |
| 135 | + self._test_incremental_snap_scenario(host, lvmohba_sr, vdi_on_lvmohba_sr, vm_on_lvmohba_sr) |
| 136 | + |
| 137 | + def test_disable_cbt_removes_log(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 138 | + self._test_disable_cbt_removes_log(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 139 | + |
| 140 | + def test_destroy_vdi_removes_cbt_log(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 141 | + self._test_destroy_vdi_removes_cbt_log(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 142 | + |
| 143 | + def test_cbt_persist_after_sr_reboot(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 144 | + self._test_cbt_persist_after_sr_reboot(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 145 | + |
| 146 | + def test_cbt_on_snapshot_chain(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 147 | + self._test_cbt_on_snapshot_chain(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 148 | + |
| 149 | + def test_cbt_parent_disable_does_not_affect_snapshot(self, host: Host, lvmohba_sr: SR, |
| 150 | + vdi_on_lvmohba_sr: VDI) -> None: |
| 151 | + self._test_cbt_parent_disable_does_not_affect_snapshot(host, lvmohba_sr, vdi_on_lvmohba_sr) |
| 152 | + |
| 153 | + @pytest.mark.small_vm |
| 154 | + def test_cbt_bitmap_non_zero_after_write(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI, |
| 155 | + vm_on_lvmohba_sr: VM) -> None: |
| 156 | + self._test_cbt_bitmap_non_zero_after_write(host, lvmohba_sr, vdi_on_lvmohba_sr, vm_on_lvmohba_sr) |
| 157 | + |
| 158 | + def test_cbt_data_destroy(self, host: Host, lvmohba_sr: SR, vdi_on_lvmohba_sr: VDI) -> None: |
| 159 | + self._test_cbt_data_destroy(host, lvmohba_sr, vdi_on_lvmohba_sr) |
0 commit comments