Skip to content

Commit e7c4244

Browse files
committed
Add draft of test script, simplify running
1 parent f13a539 commit e7c4244

File tree

5 files changed

+48
-6
lines changed

5 files changed

+48
-6
lines changed

Dockerfile

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ COPY passthrough.py .
55
COPY requirements.txt .
66
RUN pip3 install -r requirements.txt
77
RUN mkdir /real
8-
RUN mkdir /fuse
8+
RUN mkdir /fuse
9+
RUN mkdir /real2
10+
RUN mkdir /fuse2
11+
COPY test.sh .

README.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,4 @@ how to run
1212

1313
```
1414
docker-compose run fs
15-
python3 passthrough.py /real /fuse
16-
docker exec -ti <container id> bash
17-
```
15+
```

docker-compose.yml

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ services:
33
fs:
44
build: .
55
privileged: true
6+
command: bash ./test.sh

passthrough.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
from fuse import FUSE, FuseOSError, Operations
1010
from functools import wraps
1111

12+
PID = os.getpid()
1213

1314
def func_info(func):
1415
@wraps(func)
1516
def inner(*args, **kwargs):
16-
print("{}({},{})".format(func.__name__, ', '.join(map(str, args[1:])), ', '.join([f"{k}={v}" for k, v in kwargs])))
17+
print("[{}]: {}({})".format(PID ,func.__name__, ', '.join((map(str, list(args[1:]) + [f"{k}={v}" for k, v in kwargs])))))
1718
return func(*args, **kwargs)
1819

1920
return inner # this is the fun_obj mentioned in the above content
@@ -25,7 +26,6 @@ def decorate(cls):
2526
if callable(getattr(cls, attr)):
2627
if attr.startswith("_"):
2728
continue
28-
print(getattr(cls, attr), attr)
2929
setattr(cls, attr, decorator(getattr(cls, attr)))
3030
return cls
3131

test.sh

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
set -eu
4+
5+
hr() {
6+
echo "======================================" >>$log
7+
}
8+
9+
dumb_and_dangerous() {
10+
hr
11+
printf "\n" >>$log
12+
hr
13+
for x; do
14+
printf "%s " "$x" >>$log
15+
done
16+
printf "\n" >>$log
17+
hr
18+
sleep .1
19+
eval "$@" >/dev/null
20+
}
21+
22+
#log=log/$$.log
23+
log=/dev/stdout
24+
25+
printf "\n\n" >>$log
26+
hr
27+
echo "TEST RUN" >>$log
28+
date >>$log
29+
30+
(python3 passthrough.py /real /fuse >>$log) &
31+
(python3 passthrough.py /real2 /fuse2 >>$log) &
32+
33+
dumb_and_dangerous touch /fuse/touched
34+
dumb_and_dangerous ls /fuse/
35+
dumb_and_dangerous echo "xxx" \> /fuse/echo
36+
dumb_and_dangerous mv /fuse/echo /fuse/mv
37+
dumb_and_dangerous mv /fuse/mv /fuse2/mv
38+
dumb_and_dangerous mv /fuse/mv /fuse2/mv
39+
40+
hr

0 commit comments

Comments
 (0)