@@ -41,10 +41,6 @@ storage:
41
41
mode: 0777
42
42
- path: /var/nfs/share4
43
43
mode: 0777
44
- - path: /var/nfs/share5
45
- mode: 0777
46
- - path: /var/nfs/share6
47
- mode: 0777
48
44
files:
49
45
- path: "/etc/exports"
50
46
overwrite: true
@@ -55,13 +51,20 @@ storage:
55
51
/var/nfs/share2 *(rw,no_root_squash,insecure)
56
52
/var/nfs/share3 *(rw,no_root_squash,insecure)
57
53
/var/nfs/share4 *(rw,no_root_squash,insecure)
58
- /var/nfs/share5 *(rw,no_root_squash,insecure)
59
- /var/nfs/share6 *(rw,no_root_squash,insecure)
60
54
- path: "/var/lib/nfs/etab"
61
55
user:
62
56
name: nfsnobody
63
57
group:
64
58
name: nfsnobody
59
+ - path: /usr/local/bin/block-nfs.sh
60
+ mode: 0755
61
+ overwrite: true
62
+ contents:
63
+ inline: |
64
+ #!/bin/bash
65
+ nft add table inet nfs
66
+ nft add chain inet nfs INPUT { type filter hook input priority filter \; policy accept \; }
67
+ nft add rule inet nfs INPUT tcp dport 2049 drop
65
68
systemd:
66
69
units:
67
70
- name: "nfs-server.service"
@@ -152,10 +155,6 @@ storage:
152
155
mode: 0777
153
156
- path: /var/tmp/data4
154
157
mode: 0777
155
- - path: /var/tmp/data5
156
- mode: 0777
157
- - path: /var/tmp/data6
158
- mode: 0777
159
158
files:
160
159
- path: /etc/systemd/system.conf
161
160
overwrite: true
@@ -169,13 +168,11 @@ storage:
169
168
contents:
170
169
inline: |
171
170
#!/bin/bash
172
- for i in $(seq 6); do
173
- (while sudo rm -f /var/tmp/data$i/test; do
174
- for x in $(seq 6); do
175
- sudo dd if=/dev/urandom of=/var/tmp/data$i/test bs=4096 count=2048 conv=notrunc oflag=append &> /dev/null;
176
- sleep 0.5;
177
- done;
178
- done) &
171
+ i=$1
172
+ while true; do
173
+ sudo dd if=/dev/urandom of=/var/tmp/data$i/test bs=4096 count=2048 conv=notrunc oflag=append &> /dev/null
174
+ sleep 0.1
175
+ sudo rm -f /var/tmp/data$i/test
179
176
done` )
180
177
opts := platform.MachineOptions {
181
178
MinMemory : 2048 ,
@@ -197,12 +194,12 @@ storage:
197
194
err = util .Retry (6 , 10 * time .Second , func () error {
198
195
// entry point /var/nfs with fsid=0 will be root for clients
199
196
// refer to https://access.redhat.com/solutions/107793
200
- _ = c .MustSSHf (nfs_client , `for i in $(seq 6 ); do
197
+ _ = c .MustSSHf (nfs_client , `for i in $(seq 4 ); do
201
198
sudo mount -t nfs4 %s:/share$i /var/tmp/data$i
202
199
done` , nfs_server .MachineAddress )
203
200
204
201
mounts := c .MustSSH (nfs_client , "sudo df -Th | grep nfs | wc -l" )
205
- if string (mounts ) != "6 " {
202
+ if string (mounts ) != "4 " {
206
203
c .Fatalf ("Can not mount all nfs" )
207
204
}
208
205
c .Log ("Got NFS mount." )
@@ -212,34 +209,33 @@ storage:
212
209
c .Fatalf ("Timeout(1m) to get nfs mount: %v" , err )
213
210
}
214
211
215
- doSyncTest (c , nfs_client )
212
+ doSyncTest (c , nfs_client , nfs_server . Machine )
216
213
}
217
214
218
- func doSyncTest (c cluster.TestCluster , client platform.Machine ) {
215
+ func doSyncTest (c cluster.TestCluster , client platform.Machine , m platform.Machine ) {
216
+ // Do simple touch to make sure nfs server works
219
217
c .RunCmdSync (client , "sudo touch /var/tmp/data3/test" )
220
218
// Continue writing while doing test
221
- go func () {
222
- _ , err := c .SSH (client , "sudo sh /usr/local/bin/nfs-random-write.sh" )
219
+ // gets run using systemd unit
220
+ for i := 1 ; i <= 4 ; i ++ {
221
+ cmd := fmt .Sprintf ("sudo systemd-run --unit=nfs%d --no-block sh -c '/usr/local/bin/nfs-random-write.sh %d'" , i , i )
222
+ _ , err := c .SSH (client , cmd )
223
223
if err != nil {
224
- c .Fatalf ("failed to start write-to-nfs : %v" , err )
224
+ c .Fatalf ("failed to run nfs-random-write : %v" , err )
225
225
}
226
- }()
226
+ }
227
227
228
+ // block NFS traffic on nfs server
229
+ c .RunCmdSync (m , "sudo /usr/local/bin/block-nfs.sh" )
228
230
// Create a stage deploy using kargs while writing
229
231
c .RunCmdSync (client , "sudo rpm-ostree kargs --append=test=1" )
230
232
231
- netdevices := c .MustSSH (client , "ls /sys/class/net | grep -v lo" )
232
- netdevice := string (netdevices )
233
- if netdevice == "" {
234
- c .Fatalf ("failed to get net device" )
233
+ err := client .Reboot ()
234
+ if err != nil {
235
+ c .Fatalf ("Couldn't reboot machine: %v" , err )
235
236
}
236
- c .Log ("Set link down and rebooting." )
237
- // Skip the error check as it is expected
238
- cmd := fmt .Sprintf ("sudo systemd-run sh -c 'ip link set %s down && sleep 2 && systemctl reboot'" , netdevice )
239
- _ , _ = c .SSH (client , cmd )
240
237
241
- time .Sleep (5 * time .Second )
242
- err := util .Retry (8 , 10 * time .Second , func () error {
238
+ err = util .Retry (12 , 10 * time .Second , func () error {
243
239
// Look for the kernel argument test=1
244
240
kernelArguments , err := c .SSH (client , "cat /proc/cmdline" )
245
241
if err != nil {
0 commit comments