Test Fixtures¶
This section documents the test fixtures provided by sts-libs. These fixtures help set up test environments for various storage technologies.
Common Fixtures¶
sts.fixtures.common_fixtures
¶
Common test fixtures.
This module provides fixtures that can be used across different test suites: - Virtual block devices (loop, scsi_debug) - System resources - Common utilities
Fixture Dependencies: 1. loop_devices - Independent fixture - Creates temporary loop devices - Handles cleanup automatically
- scsi_debug_devices
- Independent fixture
- Creates SCSI debug devices
- Handles cleanup automatically
Common Usage:
-
Basic device testing:
def test_single_device(loop_devices): device = loop_devices[0] # Test with single device
-
Multi-device testing:
@pytest.mark.parametrize('loop_devices', [2], indirect=True) def test_multiple_devices(loop_devices): dev1, dev2 = loop_devices # Test with multiple devices
-
SCSI debug testing:
@pytest.mark.parametrize('scsi_debug_devices', [2], indirect=True) def test_scsi_devices(scsi_debug_devices): dev1, dev2 = scsi_debug_devices # Test with SCSI debug devices
Error Handling: - Device creation failures skip the test - Cleanup runs even if test fails - Resource limits are checked
ensure_minimum_devices()
¶
Fixture that ensures minimum number of devices without block size filtering.
Source code in sts_libs/src/sts/fixtures/common_fixtures.py
258 259 260 261 |
|
ensure_minimum_devices_with_same_block_sizes()
¶
Fixture that ensures minimum number of devices with same block sizes.
Source code in sts_libs/src/sts/fixtures/common_fixtures.py
252 253 254 255 |
|
loop_devices(request)
¶
Create loop devices for testing.
Creates virtual block devices using the loop driver: - Each device is 1GB in size - Devices are sparse (only allocate used space) - Devices are automatically cleaned up - Supports multiple devicesce(loop_devices): assert len(loop_devices) == 1 assert loop_d per test
Configuration: - count: Number of devices to create (default: 1) Set via parametrize: @pytest.mark.parametrize('loop_devices', [2])
Error Handling: - Skips test if device creation fails - Cleans up any created devices on failure - Validates device paths before yielding
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
FixtureRequest
|
Pytest fixture request with 'count' parameter |
required |
Yields:
Type | Description |
---|---|
list[str]
|
List of loop device paths (e.g. ['/dev/loop0', '/dev/loop1']) |
Example
Single device¶
def test_device(loop_devices):
assert len(loop_devices) == 1
assert loop_devices[0].startswith('/dev/loop')
Multiple devices¶
@pytest.mark.parametrize('loop_devices', [2], indirect=True)
def test_devices(loop_devices):
assert len(loop_devices) == 2
assert all(d.startswith('/dev/loop') for d in loop_devices)
Source code in sts_libs/src/sts/fixtures/common_fixtures.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
|
multipath_setup()
¶
Fixture to set up and tear down multipath devices for testing.
This fixture performs the following steps: 1. Checks if the multipath service is running. 2. If not running, starts the multipath service. 3. Retrieves all multipath devices. 4. Yields the list of multipath devices for use in tests. 5. Stops the multipath service if it was started by this fixture.
Yields:
Type | Description |
---|---|
Sequence[DmDevice]
|
list[MultipathDevice]: A list of multipath devices available for testing. |
Source code in sts_libs/src/sts/fixtures/common_fixtures.py
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 |
|
scsi_debug_devices(request)
¶
Create SCSI debug devices for testing.
Creates virtual SCSI devices using the scsi_debug module: - Each device is 1GB in size - Devices share a single scsi_debug instance - Devices are automatically cleaned up - Supports multiple devices per test
Configuration: - count: Number of devices to create (default: 1) Set via parametrize: @pytest.mark.parametrize('scsi_debug_devices', [2])
Error Handling: - Skips test if module loading fails - Skips test if device creation fails - Cleans up module and devices on failure - Validates device count before yielding
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
FixtureRequest
|
Pytest fixture request with 'count' parameter |
required |
Yields:
Type | Description |
---|---|
list[str]
|
List of SCSI device paths (e.g. ['/dev/sda', '/dev/sdb']) |
Example
# Single device
def test_device(scsi_debug_devices):
assert len(scsi_debug_devices) == 1
assert scsi_debug_devices[0].startswith('/dev/sd')
# Multiple devices
@pytest.mark.parametrize('scsi_debug_devices', [2], indirect=True)
def test_devices(scsi_debug_devices):
assert len(scsi_debug_devices) == 2
assert all(d.startswith('/dev/sd') for d in scsi_debug_devices)
Source code in sts_libs/src/sts/fixtures/common_fixtures.py
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
|
iSCSI Fixtures¶
sts.fixtures.iscsi_fixtures
¶
iSCSI test fixtures.
This module provides fixtures for testing iSCSI: - Package installation - Service management - Device configuration - Parameter verification - Session management
Fixture Dependencies: 1. _iscsi_test (base fixture) - Installs iSCSI utilities - Manages sessions 2. iscsi_localhost_test (depends on _iscsi_test) - Sets up target environment 3. iscsi_target (depends on iscsi_localhost_test) - Creates target and initiator - Manages connections
IscsiTestConfig
dataclass
¶
Configuration for iSCSI test environment.
Attributes:
Name | Type | Description |
---|---|---|
base_iqn |
str
|
Base IQN for test |
target_iqn |
str
|
Target IQN |
initiator_iqn |
str
|
Initiator IQN |
size |
str
|
Size of LUNs |
n_luns |
int
|
Number of LUNs |
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
generate_test_iqns(test_name)
¶
Generate IQNs for test environment.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
test_name
|
str
|
Name of the test |
required |
Returns:
Type | Description |
---|---|
tuple[str, str, str]
|
Tuple of (base_iqn, target_iqn, initiator_iqn) |
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
get_test_device()
¶
Get test device path.
Returns:
Type | Description |
---|---|
Callable[[], Path]
|
Function to get device path |
Example
def test_device(get_test_device):
device = get_test_device()
assert device.exists()
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
|
iscsi_localhost_test(request, _iscsi_test)
¶
Set up iSCSI target environment.
This fixture: - Installs target utilities - Creates target configuration - Cleans up environment
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
FixtureRequest
|
Fixture request |
required |
_iscsi_test
|
None
|
Parent fixture providing base setup |
required |
Yields:
Type | Description |
---|---|
str
|
Target IQN |
Example
def test_target(iscsi_localhost_test):
target_iqn = iscsi_localhost_test
assert Iscsi(target_iqn).exists()
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
|
iscsi_target(request, iscsi_localhost_test)
¶
Create iSCSI target and connect initiator.
This fixture: - Creates target with specified size and number of LUNs - Sets up initiator - Logs in to target - Yields connected node - Cleans up on exit
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
FixtureRequest
|
Fixture request with parameters: - size: Size of each LUN (default: '1G') - n_luns: Number of LUNs (default: 1) |
required |
iscsi_localhost_test
|
None
|
Parent fixture providing target IQN |
required |
Example
@pytest.mark.parametrize('iscsi_target', [{'size': '2G', 'n_luns': 2}], indirect=True)
def test_something(iscsi_target):
assert iscsi_target.exists()
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
|
manage_iscsi_session(node)
¶
Context manager for iSCSI session management.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node
|
IscsiNode
|
IscsiNode instance to manage |
required |
Yields:
Type | Description |
---|---|
None
|
None |
Source code in sts_libs/src/sts/fixtures/iscsi_fixtures.py
80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
|
LVM Fixtures¶
sts.fixtures.lvm_fixtures
¶
LVM test fixtures.
This module provides fixtures for testing LVM (Logical Volume Management): - Package installation and cleanup - Service management - Device configuration - VDO (Virtual Data Optimizer) support
Fixture Dependencies: 1. _lvm_test (base fixture) - Installs LVM packages - Manages volume cleanup - Logs system information
- _vdo_test (depends on _lvm_test)
- Installs VDO packages
- Manages kernel module
- Provides data reduction features
Common Usage: 1. Basic LVM testing: @pytest.mark.usefixtures('_lvm_test') def test_lvm(): # LVM utilities are installed # Volumes are cleaned up after test
- VDO-enabled testing: @pytest.mark.usefixtures('_vdo_test') def test_vdo(): # VDO module is loaded # Data reduction is available
Error Handling: - Package installation failures fail the test - Module loading failures fail the test - Volume cleanup runs even if test fails - Service issues are logged
setup_vg(ensure_minimum_devices_with_same_block_sizes)
¶
Set up an LVM Volume Group (VG) with Physical Volumes (PVs) for testing.
This fixture creates a Volume Group using the provided block devices. It handles the creation of Physical Volumes from the block devices and ensures proper cleanup after tests, even if they fail.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ensure_minimum_devices_with_same_block_sizes
|
list[BlockDevice]
|
List of BlockDevice objects with matching block sizes to be used for creating Physical Volumes. |
required |
Yields:
Name | Type | Description |
---|---|---|
str |
str
|
Name of the created Volume Group. |
Raises:
Type | Description |
---|---|
AssertionError
|
If PV creation fails for any device. |
Example
def test_volume_group(setup_vg): vg_name = setup_vg # Use vg_name in your test...
Source code in sts_libs/src/sts/fixtures/lvm_fixtures.py
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
|
RDMA Fixtures¶
sts.fixtures.rdma_fixtures
¶
RDMA test fixtures.
This module provides fixtures for testing RDMA (Remote Direct Memory Access): - Device discovery and validation - Device configuration and management - Port and interface handling - SR-IOV configuration
Fixture Dependencies: 1. _exists_rdma (base fixture) - Validates RDMA device presence - Skips tests if no devices found
- rdma_device (independent fixture)
- Creates device factory function
- Validates device existence
- Provides device management
Common Usage: 1. Basic device validation: @pytest.mark.usefixtures('_exists_rdma') def test_rdma(): # Test runs only if RDMA device exists
-
Specific device testing: def test_device(rdma_device): device = rdma_device('mlx5_0') # Test specific RDMA device
-
Port configuration: def test_ports(rdma_device): device = rdma_device('mlx5_0') ports = device.get_ports() # Test port configuration
-
SR-IOV setup: def test_sriov(rdma_device): device = rdma_device('mlx5_0') sriov = device.get_sriov() # Test SR-IOV configuration
Error Handling: - Missing devices skip tests - Invalid device IDs raise assertion errors - Device access issues are logged - Configuration failures are reported
rdma_device()
¶
Create RDMA device factory.
This fixture provides a factory function for RDMA devices: - Creates device instances on demand - Validates device existence - Provides device management interface - Supports multiple device types
Device Management: - Port configuration - Interface binding - SR-IOV setup - Power management
Returns:
Type | Description |
---|---|
Callable[[str], RdmaDevice]
|
Factory function that takes HCA ID and returns RdmaDevice |
Example
def test_rdma(rdma_device):
# Create device instance
device = rdma_device('mlx5_0')
...
# Access device information
assert device.exists
...
# Configure ports
ports = device.get_ports()
for port in ports:
print(f'Port {port.name}: {port.state}')
...
# Set up SR-IOV if supported
if device.is_sriov_capable:
sriov = device.get_sriov()
sriov.set_numvfs('4')
Source code in sts_libs/src/sts/fixtures/rdma_fixtures.py
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
|
Stratis Fixtures¶
sts.fixtures.stratis_fixtures
¶
Stratis test fixtures.
This module provides fixtures for testing Stratis storage: - Pool creation and management - Filesystem operations - Encryption configuration - Error injection and recovery
Fixture Dependencies: 1. _stratis_test (base fixture) - Installs Stratis packages - Manages pool cleanup - Logs system information
- setup_stratis_key (independent fixture)
- Creates encryption key
- Manages key registration
-
Handles key cleanup
-
stratis_test_pool (depends on loop_devices)
- Creates test pool
- Manages devices
-
Handles cleanup
-
stratis_encrypted_pool (depends on loop_devices, setup_stratis_key)
- Creates encrypted pool
- Manages key and devices
-
Handles secure cleanup
-
stratis_failing_pool (depends on scsi_debug_devices)
- Creates pool with failing device
- Injects failures
- Tests error handling
Common Usage: 1. Basic pool testing: @pytest.mark.usefixtures('_stratis_test') def test_stratis(): # Create and test pools # Pools are cleaned up after test
-
Encrypted pool testing: def test_encryption(stratis_encrypted_pool): assert stratis_encrypted_pool.is_encrypted # Test encrypted operations
-
Error handling testing: def test_failures(stratis_failing_pool): assert not stratis_failing_pool.stop() # Test failure handling
Error Handling: - Package installation failures fail test - Pool creation failures skip test - Device failures are handled gracefully - Resources are cleaned up on failure
setup_stratis_key()
¶
Set up Stratis encryption key.
Creates and manages encryption key: - Creates temporary key file - Registers key with Stratis - Handles key cleanup - Supports custom key configuration
Configuration (via environment): - STRATIS_KEY_DESC: Key description (default: 'sts-stratis-test-key') - STRATIS_KEY_PATH: Key file path (default: '/tmp/sts-stratis-test-key') - STRATIS_KEY: Key content (default: 'Stra123tisKey45')
Key Management: 1. Creates key file with specified content 2. Registers key with Stratis daemon 3. Yields key description for use 4. Unregisters key and removes file
Example
def test_encryption(setup_stratis_key):
# Create encrypted pool
pool = StratisPool()
pool.create(key_desc=setup_stratis_key)
assert pool.is_encrypted
Source code in sts_libs/src/sts/fixtures/stratis_fixtures.py
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
|
stratis_encrypted_pool(loop_devices, setup_stratis_key)
¶
Create encrypted test pool with loop devices.
Creates and manages encrypted pool: - Uses loop devices as storage - Creates encrypted pool - Manages encryption key - Handles secure cleanup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
loop_devices
|
list[str]
|
Loop device fixture (requires 2 devices) |
required |
setup_stratis_key
|
str
|
Stratis key fixture |
required |
Pool Configuration: - Name: 'sts-stratis-test-pool' - Devices: Provided loop devices - Encrypted with provided key - Default settings
Example
@pytest.mark.parametrize('loop_devices', [2], indirect=True)
def test_pool(stratis_encrypted_pool):
# Test encrypted operations
assert stratis_encrypted_pool.is_encrypted
fs = stratis_encrypted_pool.create_filesystem('test')
assert fs.exists
Source code in sts_libs/src/sts/fixtures/stratis_fixtures.py
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
|
stratis_failing_pool(scsi_debug_devices)
¶
Create test pool with failing devices.
Creates pool for failure testing: - Uses SCSI debug devices - Injects device failures - Tests error handling - Manages cleanup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
scsi_debug_devices
|
list[str]
|
SCSI debug device fixture |
required |
Failure Injection: - Every operation fails - Noisy error reporting - Tests error handling - Recovery procedures
Example
@pytest.mark.parametrize('scsi_debug_devices', [2], indirect=True)
def test_pool(stratis_failing_pool):
# Test failure handling
assert not stratis_failing_pool.stop()
assert 'error' in stratis_failing_pool.status
Source code in sts_libs/src/sts/fixtures/stratis_fixtures.py
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
|
stratis_test_pool(loop_devices)
¶
Create test pool with loop devices.
Creates and manages test pool: - Uses loop devices as storage - Creates standard pool - Handles cleanup - Supports testing operations
Parameters:
Name | Type | Description | Default |
---|---|---|---|
loop_devices
|
list[str]
|
Loop device fixture (requires 2 devices) |
required |
Pool Configuration: - Name: 'sts-stratis-test-pool' - Devices: Provided loop devices - Standard (non-encrypted) pool - Default settings
Example
@pytest.mark.parametrize('loop_devices', [2], indirect=True)
def test_pool(stratis_test_pool):
# Test pool operations
fs = stratis_test_pool.create_filesystem('test')
assert fs.exists
Source code in sts_libs/src/sts/fixtures/stratis_fixtures.py
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
|
Target Fixtures¶
sts.fixtures.target_fixtures
¶
Target test fixtures.
This module provides fixtures for testing storage targets: - Target creation and configuration - Backstore management (block, fileio, ramdisk) - ACL and authentication setup - LUN management
Fixture Dependencies: 1. _target_test (base fixture) - Installs target utilities - Manages target cleanup - Logs system information
- backstore_*_setup (depends on _target_test)
- block: Creates block backstore with loop device
- fileio: Creates fileio backstore
-
ramdisk: Creates ramdisk backstore
-
iscsi_target_setup (depends on _target_test)
- Creates iSCSI target
- Configures ACLs and LUNs
-
Manages cleanup
-
configure_auth (depends on _target_test)
- Sets up CHAP authentication
- Configures mutual CHAP
- Manages credentials
Common Usage: 1. Basic target testing: @pytest.mark.usefixtures('_target_test') def test_target(): # Create and test targets # Targets are cleaned up after test
-
Backstore testing: @pytest.mark.parametrize('backstore_block_setup', [{'name': 'test', 'size': 1024*1024}], indirect=True) def test_backstore(backstore_block_setup): # Test backstore operations
-
iSCSI target testing: @pytest.mark.parametrize('iscsi_target_setup', [{'t_iqn': 'iqn.test', 'n_luns': 2}], indirect=True) def test_iscsi(iscsi_target_setup): # Test iSCSI target operations
-
Authentication testing: @pytest.mark.parametrize('configure_auth', [{'t_iqn': 'iqn.test', 'chap_username': 'user', 'chap_password': 'pass'}], indirect=True) def test_auth(configure_auth): # Test authentication
Error Handling: - Package installation failures fail test - Target creation failures are handled - Resource cleanup runs on failure - Authentication errors are logged
backstore_block_setup(_target_test, request)
¶
Create block backstore with loop device.
Creates block backstore using loop device: - Creates temporary loop device - Sets up block backstore - Manages cleanup - Supports custom size
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
SubRequest
|
Fixture request with parameters: - name: Backstore name - size: Loop device size in MB |
required |
Example
@pytest.mark.parametrize('backstore_block_setup', [{'name': 'test', 'size': 1024}], indirect=True)
def test_backstore(backstore_block_setup):
assert backstore_block_setup.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
|
backstore_fileio_setup(_target_test, request)
¶
Create fileio backstore.
Creates fileio backstore: - Creates backing file - Sets up fileio backstore - Manages cleanup - Supports custom size
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
SubRequest
|
Fixture request with parameters: - name: Backstore name - size: File size in bytes - file_or_dev: File path |
required |
Example
@pytest.mark.parametrize('backstore_fileio_setup', [{'name': 'test', 'size': 1024 * 1024}], indirect=True)
def test_backstore(backstore_fileio_setup):
assert backstore_fileio_setup.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
|
backstore_ramdisk_setup(_target_test, request)
¶
Create ramdisk backstore.
Creates ramdisk backstore: - Allocates memory - Sets up ramdisk backstore - Manages cleanup - Supports custom size
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
SubRequest
|
Fixture request with parameters: - name: Backstore name - size: Size in bytes |
required |
Example
@pytest.mark.parametrize('backstore_ramdisk_setup', [{'name': 'test', 'size': 1024 * 1024}], indirect=True)
def test_backstore(backstore_ramdisk_setup):
assert backstore_ramdisk_setup.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 |
|
configure_auth(request)
¶
Configure CHAP authentication.
Sets up CHAP authentication: - Creates target with auth - Configures CHAP credentials - Supports mutual CHAP - Manages cleanup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
SubRequest
|
Fixture request with parameters: - t_iqn: Target IQN - i_iqn: Initiator IQN - chap_username: CHAP username - chap_password: CHAP password - chap_target_username: Mutual CHAP username (optional) - chap_target_password: Mutual CHAP password (optional) - tpg_or_acl: Configure TPG or ACL auth |
required |
Example
@pytest.mark.parametrize(
'configure_auth', [{'t_iqn': 'iqn.test', 'chap_username': 'user', 'chap_password': 'pass'}], indirect=True
)
def test_auth(configure_auth):
assert configure_auth.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 |
|
iscsi_target_setup(_target_test, request)
¶
Create iSCSI target with ACLs and LUNs.
Creates complete iSCSI target: - Creates target with IQN - Sets up ACLs - Creates LUNs - Manages cleanup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
request
|
SubRequest
|
Fixture request with parameters: - t_iqn: Target IQN (optional) - i_iqn: Initiator IQN (optional) - n_luns: Number of LUNs (optional) - back_size: Backstore size in bytes (optional) |
required |
Example
@pytest.mark.parametrize('iscsi_target_setup', [{'t_iqn': 'iqn.test', 'n_luns': 2}], indirect=True)
def test_target(iscsi_target_setup):
assert iscsi_target_setup.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 |
|
target_setup(*, t_iqn=None, i_iqn=None, n_luns=0, back_size=None)
¶
Set up iSCSI target.
Creates and manages iSCSI target: - Creates target with IQN - Sets up ACLs if needed - Creates LUNs if needed - Manages cleanup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
t_iqn
|
str | None
|
Target IQN |
None
|
i_iqn
|
str | None
|
Initiator IQN |
None
|
n_luns
|
int
|
Number of LUNs |
0
|
back_size
|
int | None
|
Backstore size in bytes |
None
|
Yields:
Type | Description |
---|---|
Iscsi
|
iSCSI target instance |
Example
with target_setup(t_iqn='iqn.test', n_luns=2) as target:
# Use target
assert target.exists
Source code in sts_libs/src/sts/fixtures/target_fixtures.py
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
|