-
Notifications
You must be signed in to change notification settings - Fork 220
/
simple-test.sh
executable file
·135 lines (107 loc) · 2.35 KB
/
simple-test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
#!/usr/bin/env bash
#
# Do some simple operations with simplefs
#
# - create fs
# - create files in it
# - create dirs in it
# - read files in it
# - write files in it
#
# TODO: add support of perms into simplefs,
# to avoid calling this script from root.
#
set -e
echo 1 >| /sys/module/jbd2/parameters/jbd2_debug
root_pwd="$PWD"
test_dir="test-dir-$RANDOM"
test_mount_point="test-mount-point-$RANDOM"
test_journal_dev=""
function create_journal()
{
dd bs=1M count=10 if=/dev/zero of="$1"
mke2fs -b 4096 -O journal_dev "$1"
}
function create_test_image()
{
dd bs=4096 count=100 if=/dev/zero of="$1"
./mkfs-simplefs "$1"
}
function mount_fs_image()
{
insmod simplefs.ko
test_journal_dev=$(losetup -f --show "$1")
mount -o loop,owner,group,users,journal_path="$test_journal_dev" -t simplefs "$2" "$3"
dmesg | tail -n20
}
function unmount_fs()
{
umount "$1"
losetup -d $test_journal_dev
rmmod simplefs.ko
dmesg | tail -n20
}
function do_some_operations()
{
cd "$1"
ls
cat vanakkam
cp vanakkam hello
cat hello
echo "Hello World" > hello
cat hello
mkdir dir1 && cd dir1
cp ../hello .
cat hello
echo "First level directory" > hello
cat hello
mkdir dir2 && cd dir2
touch hello
cat hello
echo "Second level directory" > hello
cat hello
cp hello hello_smaller
echo "directory" > hello_smaller
cat hello_smaller
}
function do_read_operations()
{
cd "$1"
ls -lR
cat vanakkam
cat hello
cat hello
cd dir1
cat hello
cd dir2
cat hello
cat hello_smaller
}
function cleanup()
{
cd "$root_pwd"
[ -d "$test_mount_point" ] && umount -t simplefs "$test_mount_point"
lsmod | grep -q simplefs && rmmod "$root_pwd/simplefs.ko"
# TODO: prompt deletion
rm -fR "$test_dir" "$test_mount_point"
}
# Trace all commands
set -x
make
cleanup
trap cleanup SIGINT EXIT
mkdir "$test_dir" "$test_mount_point"
create_test_image "$test_dir/image"
create_journal "$test_dir/journal"
# 1
mount_fs_image "$test_dir/journal" "$test_dir/image" "$test_mount_point"
do_some_operations "$test_mount_point"
cd "$root_pwd"
unmount_fs "$test_mount_point"
# 2
mount_fs_image "$test_dir/journal" "$test_dir/image" "$test_mount_point"
do_read_operations "$test_mount_point"
cd "$root_pwd"
unmount_fs "$test_mount_point"
dmesg | tail -n40
cleanup