1
from . import VMBaseClass
2
from .releases import base_vm_classes as relbase
8
class TestNvmeAbs(VMBaseClass):
10
"s390x", # nvme is a pci device, no pci on s390x
13
conf_file = "examples/tests/nvme.yaml"
15
nvme_disks = ['4G', '4G']
16
disk_to_check = [('main_disk', 1), ('main_disk', 2), ('main_disk', 15),
17
('nvme_disk', 1), ('nvme_disk', 2), ('nvme_disk', 3),
19
collect_scripts = [textwrap.dedent("""
21
ls /sys/class/ > sys_class
22
ls /sys/class/nvme/ > ls_nvme
23
ls /dev/nvme* > ls_dev_nvme
24
ls /dev/disk/by-dname/ > ls_dname
25
blkid -o export /dev/vda > blkid_output_vda
26
blkid -o export /dev/vda1 > blkid_output_vda1
27
blkid -o export /dev/vda2 > blkid_output_vda2
28
cat /proc/partitions > proc_partitions
29
ls -al /dev/disk/by-uuid/ > ls_uuid
30
cat /etc/fstab > fstab
31
mkdir -p /dev/disk/by-dname
32
ls /dev/disk/by-dname/ > ls_dname
33
find /etc/network/interfaces.d > find_interfacesd
36
out=$(apt-config shell v Acquire::HTTP::Proxy)
41
def test_output_files_exist(self):
42
self.output_files_exist(["ls_nvme", "ls_dname", "ls_dev_nvme"])
44
def test_nvme_device_names(self):
45
ls_nvme = self.collect_path('ls_nvme')
46
# trusty and vivid do not have sys/class/nvme but
47
# nvme devices do work
48
if os.path.getsize(ls_nvme) > 0:
49
self.check_file_strippedline("ls_nvme", "nvme0")
50
self.check_file_strippedline("ls_nvme", "nvme1")
52
self.check_file_strippedline("ls_dev_nvme", "/dev/nvme0")
53
self.check_file_strippedline("ls_dev_nvme", "/dev/nvme1")
56
class TrustyTestNvme(relbase.trusty, TestNvmeAbs):
59
# FIXME(LP: #1523037): dname does not work on trusty, so we cannot expect
60
# sda-part2 to exist in /dev/disk/by-dname as we can on other releases
61
# when dname works on trusty, then we need to re-enable by removing line.
63
print("test_dname does not work for Trusty")
65
def test_ptable(self):
66
print("test_ptable does not work for Trusty")
69
class TrustyHWEXTestNvme(relbase.trusty_hwe_x, TestNvmeAbs):
72
# FIXME(LP: #1523037): dname does not work on trusty, so we cannot expect
73
# sda-part2 to exist in /dev/disk/by-dname as we can on other releases
74
# when dname works on trusty, then we need to re-enable by removing line.
76
print("test_dname does not work for Trusty")
78
def test_ptable(self):
79
print("test_ptable does not work for Trusty")
82
class XenialTestNvme(relbase.xenial, TestNvmeAbs):
86
class ZestyTestNvme(relbase.zesty, TestNvmeAbs):
90
class ArtfulTestNvme(relbase.artful, TestNvmeAbs):
94
class BionicTestNvme(relbase.bionic, TestNvmeAbs):
98
class TestNvmeBcacheAbs(VMBaseClass):
100
"s390x", # nvme is a pci device, no pci on s390x
103
conf_file = "examples/tests/nvme_bcache.yaml"
104
extra_disks = ['10G']
107
disk_to_check = [('sda', 1), ('sda', 2), ('sda', 3)]
109
collect_scripts = [textwrap.dedent("""
111
ls /sys/class/ > sys_class
112
ls /sys/class/nvme/ > ls_nvme
113
ls /dev/nvme* > ls_dev_nvme
114
ls /dev/disk/by-dname/ > ls_dname
115
ls -al /dev/bcache/by-uuid/ > ls_bcache_by_uuid |:
116
blkid -o export /dev/vda > blkid_output_vda
117
blkid -o export /dev/vda1 > blkid_output_vda1
118
blkid -o export /dev/vda2 > blkid_output_vda2
119
bcache-super-show /dev/nvme0n1p1 > bcache_super_nvme0n1p1
120
ls /sys/fs/bcache > bcache_ls
121
cat /sys/block/bcache0/bcache/cache_mode > bcache_cache_mode
122
cat /proc/partitions > proc_partitions
123
ls -al /dev/disk/by-uuid/ > ls_uuid
124
cat /etc/fstab > fstab
125
mkdir -p /dev/disk/by-dname
126
ls /dev/disk/by-dname/ > ls_dname
127
find /etc/network/interfaces.d > find_interfacesd
130
out=$(apt-config shell v Acquire::HTTP::Proxy)
132
echo "$v" > apt-proxy
135
def test_output_files_exist(self):
136
self.output_files_exist(["ls_nvme", "ls_dname", "ls_dev_nvme"])
138
def test_nvme_device_names(self):
139
ls_nvme = self.collect_path('ls_nvme')
140
# trusty and vivid do not have sys/class/nvme but
141
# nvme devices do work
142
if os.path.getsize(ls_nvme) > 0:
143
self.check_file_strippedline("ls_nvme", "nvme0")
145
self.check_file_strippedline("ls_dev_nvme", "/dev/nvme0")
146
self.check_file_strippedline("ls_dev_nvme", "/dev/nvme0n1")
147
self.check_file_strippedline("ls_dev_nvme", "/dev/nvme0n1p1")
149
def test_bcache_output_files_exist(self):
150
self.output_files_exist(["bcache_super_nvme0n1p1", "bcache_ls",
151
"bcache_cache_mode"])
153
def test_bcache_status(self):
154
bcache_cset_uuid = None
155
bcache_super = self.load_collect_file("bcache_super_nvme0n1p1")
156
for line in bcache_super.splitlines():
157
if line != "" and line.split()[0] == "cset.uuid":
158
bcache_cset_uuid = line.split()[-1].rstrip()
159
self.assertIsNotNone(bcache_cset_uuid)
160
self.assertTrue(bcache_cset_uuid in
161
self.load_collect_file("bcache_ls").splitlines())
163
def test_bcache_cachemode(self):
164
self.check_file_regex("bcache_cache_mode", r"\[writeback\]")
167
class XenialTestNvmeBcache(relbase.xenial, TestNvmeBcacheAbs):
171
class ZestyTestNvmeBcache(relbase.zesty, TestNvmeBcacheAbs):
175
class ArtfulTestNvmeBcache(relbase.artful, TestNvmeBcacheAbs):
179
class BionicTestNvmeBcache(relbase.bionic, TestNvmeBcacheAbs):