-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests: add media controller regression test scripts and document
Add regression test scripts open_loop_test.sh, and bind_unbind_sample.sh. Also add regression_test.txt that describes the regression test procedure. Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
- Loading branch information
Shuah Khan
committed
Jun 27, 2016
1 parent
b96da0f
commit fe8777a
Showing
3 changed files
with
65 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
# Find device number in /sys/bus/usb/drivers/drivername | ||
# Edit this file to update the driver numer and name | ||
# Example test for uvcvideo driver | ||
#i=0 | ||
# while :; do | ||
# i=$((i+1)) | ||
# echo 1-5:1.0 > /sys/bus/usb/drivers/uvcvideo/unbind; | ||
# echo 1-5:1.0 > /sys/bus/usb/drivers/uvcvideo/bind; | ||
# clear | ||
# echo $i | ||
#done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!/bin/bash | ||
i=0 | ||
file=/dev/media$1 | ||
while :; do | ||
echo $file | ||
i=$((i+1)) | ||
R=$(./media_device_open -d $file); | ||
# clear | ||
echo -e "Loop $i\n$R" | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
Testing for regressions in Media Controller API register, ioctl, syscall, | ||
and unregister paths. There have a few problems that result in user-after | ||
free on media_device, media_devnode, and cdev pointers when the driver is | ||
unbound while ioctl is in progress. | ||
|
||
Test Procedure: | ||
|
||
Run bin/unbind loop while ioctls are in progress. | ||
Run rmmod and modprobe. | ||
Disconnect the device. | ||
|
||
Setup: | ||
|
||
Build media_device_test | ||
cd tools/testing/selftests/media_tests | ||
make | ||
|
||
Regressions test for cdev user-after free error on /dev/mediaX when driver | ||
is unbound: | ||
|
||
Start media_device_test to regression test media devnode dynamic alloc | ||
and cdev user-after-free fixes. This opens media dev files and sits in | ||
a loop running media ioctl MEDIA_IOC_DEVICE_INFO command once every 10 | ||
seconds. The idea is when device file goes away, media devnode and cdev | ||
should stick around until this test exits. | ||
|
||
The test for a random number of iterations or until user kills it with a | ||
sleep 10 in between the ioctl calls. | ||
|
||
sudo ./media_device_test -d /dev/mediaX | ||
|
||
Regression test for media_devnode unregister race with ioctl_syscall: | ||
|
||
Start 6 open_loop_test.sh tests with different /dev/mediaX files. When | ||
device file goes away after unbind, device file name changes. Start the | ||
test with possible device names. If we start with /dev/media0 for example, | ||
after unbind, /dev/media1 or /dev/media2 could get created. The idea is | ||
keep ioctls going while bind/unbind runs. | ||
|
||
Copy bind_unbind_sample.txt and make changes to specify the driver name | ||
and number to run bind and unbind. Start the bind_unbind.sh | ||
|
||
Run dmesg looking for any user-after free errors or mutex lock errors. |