Skip to content

Commit d1f8ddb

Browse files
committed
cleanup tests
1 parent f64ab46 commit d1f8ddb

File tree

5 files changed

+69
-59
lines changed

5 files changed

+69
-59
lines changed

tests/browser_tests/tests.py

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,62 +3,48 @@
33
from typing import Any
44
from selenium import webdriver # type: ignore
55
import sys
6-
import subprocess
76

8-
from browser_tests import zfs
9-
from browser_tests import fs
7+
import fs
108
from browser_tests.page import Page
9+
from zfs import ZFS
1110

1211
class Tests(unittest.TestCase):
13-
pool: str
14-
dataset = "zsd-browser-test"
15-
mountpoint: str
16-
17-
@classmethod
18-
def setUpClass(cls) -> None:
19-
# use the first found zfs pool (dirty, unsafe code!)
20-
cls.pool = subprocess.run(["sudo", "zpool", "list", "-Ho", "name"]
21-
, text=True
22-
, capture_output=True).stdout.strip()
23-
24-
# create test dataset
25-
cls.mountpoint = zfs.createDataset(cls.pool, cls.dataset)
26-
12+
zfs = ZFS()
2713

2814
def setUp(self) -> None:
2915
self.page = Page(headless = True)
3016
self.assertIn("ZFS-Snap-Diff", self.page.title())
3117

3218

3319
def testActualFileContent(self) -> None:
34-
fs.createTestFile(self.mountpoint + "/file.txt",
20+
fs.createTestFile(self.zfs.mountpoint() + "/file.txt",
3521
["firstline", "secondline", "thirdline"]
3622
)
3723

3824
self.page.selectView("Browse filesystem")
39-
self.page.selectDataset(self.dataset)
25+
self.page.selectDataset(self.zfs.dataset)
4026
self.page.findByXPath("//td[contains(.,'file.txt')]").click()
4127
self.assertIn("Current content of file.txt", self.page.findById("file-actions-header").text)
42-
self.assertIn("firstline\nsecondline\nthirdline", self.page.findById("file-actions-body").text)
28+
self.assertIn("firstline\nsecondline\nthirdline", self.page.findByCSS("#file-actions-body > pre > code").text)
4329

4430

4531
def testCreateSnapshotInBrowseFilesystem(self) -> None:
4632
self.page.selectView("Browse filesystem")
47-
self.page.selectDataset(self.dataset)
33+
self.page.selectDataset(self.zfs.dataset)
4834
self.page.createSnapshot("create-snapshot-in-browse-filesystem")
4935
self.assertIn("@create-snapshot-in-browse-filesystem' created", self.page.alertText())
5036

5137

5238
def testCreateSnapshotInBrowseSnapshots(self) -> None:
5339
self.page.selectView("Browse snapshots")
54-
self.page.selectDataset(self.dataset)
40+
self.page.selectDataset(self.zfs.dataset)
5541
self.page.createSnapshot("create-snapshot-in-browse-snapshots")
5642
self.assertIn("@create-snapshot-in-browse-snapshots' created", self.page.alertText())
5743

5844

5945
def testDestroySnapshot(self) -> None:
6046
self.page.selectView("Browse snapshots")
61-
self.page.selectDataset(self.dataset)
47+
self.page.selectDataset(self.zfs.dataset)
6248

6349

6450
# create snapshot
@@ -73,7 +59,7 @@ def testDestroySnapshot(self) -> None:
7359

7460
def testRenameSnapshot(self) -> None:
7561
self.page.selectView("Browse snapshots")
76-
self.page.selectDataset(self.dataset)
62+
self.page.selectDataset(self.zfs.dataset)
7763

7864
# create snapshot
7965
self.page.createSnapshot("rename-snapshot")
@@ -87,41 +73,37 @@ def testRenameSnapshot(self) -> None:
8773

8874
def testCloneSnapshot(self) -> None:
8975
self.page.selectView("Browse snapshots")
90-
self.page.selectDataset(self.dataset)
76+
self.page.selectDataset(self.zfs.dataset)
9177

9278
# create snapshot
9379
self.page.createSnapshot("clone-snapshot")
9480
self.page.closeAlert()
9581

9682
# clone snapshot
9783
self.page.cloneSnapshot("clone-snapshot", "cloned")
98-
self.assertIn("Snapshot 'clone-snapshot' cloned to '"+self.pool+"/cloned'", self.page.alertText())
84+
self.assertIn("Snapshot 'clone-snapshot' cloned to '"+self.zfs.pool+"/cloned'", self.page.alertText())
9985
self.page.closeAlert()
10086

10187

10288
def testRollbackSnapshot(self) -> None:
10389
self.page.selectView("Browse snapshots")
104-
self.page.selectDataset(self.dataset)
90+
self.page.selectDataset(self.zfs.dataset)
10591

10692
# create snapshot
10793
self.page.createSnapshot("rollback-snapshot")
10894
self.assertIn("@rollback-snapshot' created", self.page.alertText())
10995
self.page.closeAlert()
11096

11197
# create a file
112-
fs.createTestFile(self.mountpoint + "/rollback-test.txt", ["dummy"])
113-
self.assertTrue(fs.exists(self.mountpoint + "/rollback-test.txt"))
98+
fs.createTestFile(self.zfs.mountpoint() + "/rollback-test.txt", ["dummy"])
99+
self.assertTrue(fs.exists(self.zfs.mountpoint() + "/rollback-test.txt"))
114100

115101
# rollback
116102
self.page.rollbackSnapshot("rollback-snapshot")
117103
self.assertIn("Snapshot 'rollback-snapshot' rolled back", self.page.alertText())
118-
self.assertFalse(fs.exists(self.mountpoint + "/rollback-test.txt"))
104+
self.assertFalse(fs.exists(self.zfs.mountpoint() + "/rollback-test.txt"))
119105

120106

121107
def tearDown(self) -> None:
122108
self.page.close()
123109

124-
125-
@classmethod
126-
def tearDownClass(cls) -> None:
127-
zfs.destroyDataset(cls.pool, cls.dataset)

tests/browser_tests/zfs.py

Lines changed: 0 additions & 25 deletions
This file was deleted.
File renamed without changes.

tests/main.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import unittest
2+
from zfs import ZFS
3+
import fs
24

35
def main() -> None:
6+
zfs = ZFS()
7+
zfs.createDataset()
8+
49
loader = unittest.TestLoader()
510
tests = loader.discover('.')
611
testRunner = unittest.runner.TextTestRunner()
712
testRunner.run(tests)
813

14+
zfs.destroyDataset()
15+
916

1017
if __name__ == "__main__":
1118
main()

tests/zfs.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from typing import Any, Union, List
2+
import subprocess
3+
import os
4+
5+
6+
class ZFS:
7+
pool: str
8+
dataset: str
9+
10+
def __init__(self, dataset: str = "zsd-e2e-test") -> None:
11+
self.pool = self.lookupPool()
12+
self.dataset = dataset
13+
14+
15+
def mountpoint(self) -> str:
16+
return "/tmp/{}".format(self.dataset)
17+
18+
19+
def createDataset(self) -> None:
20+
args = "create -o mountpoint={} {}/{}".format(self.mountpoint(), self.pool, self.dataset)
21+
self.zfs(args)
22+
23+
# fix permission
24+
username = os.getlogin()
25+
subprocess.run(["sudo", "chown", username, self.mountpoint()])
26+
27+
28+
def destroyDataset(self) -> None:
29+
self.zfs("destroy -R {}/{}".format(self.pool, self.dataset))
30+
31+
32+
@classmethod
33+
def zfs(cls, args: Union[str, List[str]]) -> None:
34+
if isinstance(args, str):
35+
args = args.split()
36+
subprocess.run(["sudo", "zfs"] + args)
37+
38+
39+
@classmethod
40+
def lookupPool(cls) -> str:
41+
# dirty, unsafe code!
42+
out = subprocess.run(["sudo", "zpool", "list", "-Ho", "name"]
43+
, text=True
44+
, capture_output=True).stdout
45+
return out.strip()
46+

0 commit comments

Comments
 (0)