mirror of
https://github.com/openwrt/packages.git
synced 2026-04-15 10:51:55 +00:00
python-rtslib-fb: add some basic tests
These are a massive help for keeping things stable on the mid-to-longterm when updating packages. We might even feel comfortable partially automating the process. Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
This commit is contained in:
committed by
Alexandru Ardelean
parent
d3c84656f7
commit
32c73213f2
65
lang/python/python-rtslib-fb/test.sh
Executable file
65
lang/python/python-rtslib-fb/test.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ "$1" = "python3-rtslib-fb" ] || exit 0
|
||||
|
||||
python3 - << EOF
|
||||
import sys
|
||||
|
||||
# Verify key classes and exceptions are importable
|
||||
from rtslib_fb import (
|
||||
RTSLibError,
|
||||
RTSLibNotInCFSError,
|
||||
FabricModule,
|
||||
RTSRoot,
|
||||
Target,
|
||||
TPG,
|
||||
LUN,
|
||||
NetworkPortal,
|
||||
NodeACL,
|
||||
BlockStorageObject,
|
||||
FileIOStorageObject,
|
||||
RDMCPStorageObject,
|
||||
)
|
||||
|
||||
# Test pure utility functions (no kernel/configfs required)
|
||||
from rtslib_fb.utils import colonize, generate_wwn, normalize_wwn
|
||||
|
||||
# colonize: inserts colons every 2 hex characters
|
||||
assert colonize("aabbccdd") == "aa:bb:cc:dd", f"Unexpected: {colonize('aabbccdd')}"
|
||||
assert colonize("112233445566") == "11:22:33:44:55:66"
|
||||
assert colonize("ab") == "ab"
|
||||
|
||||
# generate_wwn: returns correctly formatted WWNs
|
||||
import re
|
||||
|
||||
iqn = generate_wwn("iqn")
|
||||
assert iqn.startswith("iqn."), f"IQN should start with 'iqn.': {iqn}"
|
||||
assert re.match(r"iqn\.\d{4}-\d{2}\.", iqn), f"IQN format invalid: {iqn}"
|
||||
|
||||
naa = generate_wwn("naa")
|
||||
assert naa.startswith("naa."), f"NAA should start with 'naa.': {naa}"
|
||||
|
||||
serial = generate_wwn("unit_serial")
|
||||
assert re.match(r"[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", serial), \
|
||||
f"unit_serial format invalid: {serial}"
|
||||
|
||||
# normalize_wwn: accepts various representations and normalizes them
|
||||
wwn, wwn_type = normalize_wwn(["naa"], "naa.5000c50012345678")
|
||||
assert wwn_type == "naa", f"Expected naa, got {wwn_type}"
|
||||
assert wwn == "naa.5000c50012345678", f"Unexpected: {wwn}"
|
||||
|
||||
# NAA without prefix gets one added
|
||||
wwn2, _ = normalize_wwn(["naa"], "5000c50012345678")
|
||||
assert wwn2 == "naa.5000c50012345678", f"Unexpected: {wwn2}"
|
||||
|
||||
# RTSLibError is a proper exception
|
||||
try:
|
||||
raise RTSLibError("test error")
|
||||
except RTSLibError as e:
|
||||
assert str(e) == "test error"
|
||||
|
||||
# RTSLibNotInCFSError is a subclass of RTSLibError
|
||||
assert issubclass(RTSLibNotInCFSError, RTSLibError)
|
||||
|
||||
sys.exit(0)
|
||||
EOF
|
||||
Reference in New Issue
Block a user