22
33from lib .commands import SSHCommandFailed
44from lib .common import Defer , vm_image , wait_for
5+ from lib .host import Host
56from lib .sr import SR
6- from lib .vdi import VDI , ImageFormat
7+ from lib .vdi import VDI
78from lib .vm import VM
89from tests .storage import (
910 MAX_VDI_SIZE ,
11+ CBTTest ,
1012 CoalesceOperation ,
1113 ImageFormat ,
1214 XVACompression ,
15+ assert_cbt_log_does_not_exist_lvm_sr ,
16+ assert_cbt_log_exists_lvm_sr ,
1317 coalesce_integrity ,
1418 full_vdi_write ,
1519 vdi_export_import ,
2125# - one XCP-ng host >= 8.2
2226# - a valid lvmohba config
2327
28+
2429class TestLVMOHBASRCreateDestroy :
2530 """
2631 Tests that do not use fixtures that setup the SR or import VMs,
@@ -39,6 +44,7 @@ def test_create_and_destroy_sr(self, host, lvmohba_device_config, image_format:
3944 vm .destroy (verify = True )
4045 sr .destroy (verify = True )
4146
47+
4248@pytest .mark .usefixtures ('image_format' )
4349@pytest .mark .usefixtures ("lvmohba_sr" )
4450@pytest .mark .thick_provisioned
@@ -111,3 +117,63 @@ def test_reboot(self, host, lvmohba_sr, vm_on_lvmohba_sr):
111117 vm .shutdown (verify = True )
112118
113119 # *** End of tests with reboots
120+
121+
122+ class TestLVMoHBACBT (CBTTest ):
123+ """Test CBT functionality on LVMOHBA SR"""
124+
125+ @staticmethod
126+ def assert_cbt_log_exists (host : Host , sr : SR , vdi : VDI ) -> None :
127+ assert_cbt_log_exists_lvm_sr (host , sr , vdi )
128+
129+ @staticmethod
130+ def assert_cbt_log_does_not_exist (host : Host , sr : SR , vdi : VDI ) -> None :
131+ assert_cbt_log_does_not_exist_lvm_sr (host , sr , vdi )
132+
133+ def test_enable_disable_cbt (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
134+ self ._test_enable_disable_cbt (host , lvmohba_sr , vdi_on_lvmohba_sr )
135+
136+ def test_cbt_log_creation (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
137+ self ._test_cbt_log_creation (host , lvmohba_sr , vdi_on_lvmohba_sr )
138+
139+ def test_snapshot_with_cbt (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
140+ self ._test_snapshot_with_cbt (host , lvmohba_sr , vdi_on_lvmohba_sr )
141+
142+ @pytest .mark .small_vm
143+ def test_changed_blocks_tracking (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ,
144+ vm_on_lvmohba_sr : VM ) -> None :
145+ self ._test_changed_blocks_tracking (host , lvmohba_sr , vdi_on_lvmohba_sr , vm_on_lvmohba_sr )
146+
147+ @pytest .mark .small_vm
148+ def test_cbt_after_coalesce (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ,
149+ vm_on_lvmohba_sr : VM ) -> None :
150+ self ._test_cbt_after_coalesce (host , lvmohba_sr , vdi_on_lvmohba_sr , vm_on_lvmohba_sr )
151+
152+ @pytest .mark .small_vm
153+ def test_incremental_snap_scenario (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ,
154+ vm_on_lvmohba_sr : VM ) -> None :
155+ self ._test_incremental_snap_scenario (host , lvmohba_sr , vdi_on_lvmohba_sr , vm_on_lvmohba_sr )
156+
157+ def test_disable_cbt_removes_log (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
158+ self ._test_disable_cbt_removes_log (host , lvmohba_sr , vdi_on_lvmohba_sr )
159+
160+ def test_destroy_vdi_removes_cbt_log (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
161+ self ._test_destroy_vdi_removes_cbt_log (host , lvmohba_sr , vdi_on_lvmohba_sr )
162+
163+ def test_cbt_persist_after_sr_reboot (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
164+ self ._test_cbt_persist_after_sr_reboot (host , lvmohba_sr , vdi_on_lvmohba_sr )
165+
166+ def test_cbt_on_snapshot_chain (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
167+ self ._test_cbt_on_snapshot_chain (host , lvmohba_sr , vdi_on_lvmohba_sr )
168+
169+ def test_cbt_parent_disable_does_not_affect_snapshot (self , host : Host , lvmohba_sr : SR ,
170+ vdi_on_lvmohba_sr : VDI ) -> None :
171+ self ._test_cbt_parent_disable_does_not_affect_snapshot (host , lvmohba_sr , vdi_on_lvmohba_sr )
172+
173+ @pytest .mark .small_vm
174+ def test_cbt_bitmap_non_zero_after_write (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ,
175+ vm_on_lvmohba_sr : VM ) -> None :
176+ self ._test_cbt_bitmap_non_zero_after_write (host , lvmohba_sr , vdi_on_lvmohba_sr , vm_on_lvmohba_sr )
177+
178+ def test_cbt_data_destroy (self , host : Host , lvmohba_sr : SR , vdi_on_lvmohba_sr : VDI ) -> None :
179+ self ._test_cbt_data_destroy (host , lvmohba_sr , vdi_on_lvmohba_sr )
0 commit comments