v 1.0.0 - Added functionnal testing - Needs Travis integration

This commit is contained in:
Brendan LE GLAUNEC
2016-06-21 10:53:24 +02:00
parent 08231074b9
commit 1f5e9fc502
24 changed files with 1138 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
{
"Output": "cameratest.log.xml",
"Cameradar" : {
"Path": "/cctv/bin/cameradar",
"Args": "-l 1 -c tmp_config",
"Ports": "554,5554,8554,5548",
"IdsPath": "/conf/ids.json",
"RoutesPath": "/conf/url.json",
"ThumbPath": "/thumbnails",
"dbHost": "mysql_cameradar",
"dbPort": 3306,
"dbUser": "root",
"dbPassword": "root",
"dbName": "cctv",
"Console": false
},
"Tests" : __CAMERAS__
}
+31
View File
@@ -0,0 +1,31 @@
{
"username": [
"",
"admin",
"Admin",
"root",
"supervisor",
"ubnt"
],
"password" : [
"",
"admin",
"9999",
"123456",
"pass",
"camera",
"1234",
"12345",
"fliradmin",
"system",
"jvc",
"meinsm",
"root",
"4321",
"1111111",
"password",
"ikwd",
"supervisor",
"ubnt"
]
}
+77
View File
@@ -0,0 +1,77 @@
{
"urls" : [
"/",
"/1.AMP",
"/1/stream1",
"/CAM_ID.password.mp2",
"/GetData.cgi",
"/MediaInput/h264",
"/MediaInput/mpeg4",
"/VideoInput/1/h264/1",
"/access_code",
"/access_name_for_stream_1_to_5",
"/av0_0",
"/av2",
"/avn=2",
"/axis-media/media.amp",
"/cam",
"/cam0_0",
"/cam0_1",
"/cam1/h264",
"/cam1/h264/multicast",
"/cam1/mjpeg",
"/cam1/mpeg4",
"/camera.stm",
"/ch0",
"/ch001.sdp",
"/ch0_unicast_firststream",
"/ch0_unicast_secondstream",
"/channel1",
"/h264",
"/h264/media.amp",
"/image.mpg",
"/img/media.sav",
"/img/video.asf",
"/img/video.sav",
"/ioImage/1",
"/ipcam.sdp",
"/ipcam_h264.sdp",
"/live.sdp",
"/live/h264",
"/live/mpeg4",
"/live_mpeg4.sdp",
"/livestream",
"/livestream/",
"/media/media.amp",
"/media/video1",
"/mjpeg/media.smp",
"/mp4",
"/mpeg4",
"/mpeg4/1/media.amp",
"/mpeg4/media.amp",
"/mpeg4/media.smp",
"/mpeg4unicast",
"/mpg4/rtsp.amp",
"/multicaststream",
"/now.mp4",
"/nph-h264.cgi",
"/nphMpeg4/g726-640x",
"/nphMpeg4/g726-640x480",
"/nphMpeg4/nil-320x240",
"/play1.sdp",
"/play2.sdp",
"/rtpvideo1.sdp",
"/rtsp_tunnel",
"/rtsph264",
"/stream1",
"/user.pin.mp2",
"/user_defined",
"/video",
"/video.3gp",
"/video.mp4",
"/video1",
"/video1+audio1",
"/vis",
"/wfov"
]
}
+107
View File
@@ -0,0 +1,107 @@
#!/bin/bash
ports=('8554' '8554' '8554' '8554' '8554' '8554')
users=('admin' 'root' 'ubnt' 'Admin' 'supervisor' '')
passwords=('admin' 'root' '12345' 'ubnt' 'password' '')
routes=('live.sdp' 'live.sdp' 'ch001.sdp' '' 'invalid' 'live_mpeg4.sdp')
cams_name_pattern="fake_camera_"
# json generation variable only
json="[\n"
first=true
# $1 = adress, $2 = port, $3 = path, $4 = usernam $5 = password, $6 = valid
function make_json {
if [ "$first" = true ] ; then first=false
else json="$json,\n"; fi
json="$json{"
json="$json\"address\":\"$1\","
json="$json\"port\":\"$2\","
json="$json\"route\":\"$3\","
json="$json\"username\":\"$4\","
json="$json\"password\":\"$5\","
json="$json\"valid\":$6"
json="$json}"
}
# $1 = configuration template path
function generate_conf {
echo "generate configuration"
sed s#__CAMERAS__#$json#g $1 > cameradartest.conf.json
}
# $1 = numbers of cameras to generate
function start {
# Seed random generator
RANDOM=$(date +%s)
# start cameras
for (( i=1; i<=$1; i++ )); do
name="$cams_name_pattern$i"
# random conf
conf_idx=$(($RANDOM % ${#ports[@]}))
# get conf variables
port=${ports[$conf_idx]}
user=${users[$conf_idx]}
passw=${passwords[$conf_idx]}
route=${routes[$conf_idx]}
is_valid=true
# if conf_idx = 4 -> invalid conf
if [ "$conf_idx" == "4" ] ; then is_valid=false; fi
docker run -d --name "$name" fake-camera /start.sh "$port" "$user" "$passw" "$route"
make_json "$name" "$port" "$route" "$user" "$passw" $is_valid
done
# finalize json
json="$json]"
echo "$json"
}
function stop {
# if no cameras containers are started just exit
camera_count="`docker ps -a -q --filter="name=$cams_name_pattern" | wc -l`"
if [ "$camera_count" == "0" ]; then
echo "error: no cameras started"; exit 1
fi
echo "stopping and removing $camera_count containers"
# docker stop $(docker ps -a -q --filter="name=$cams_name_pattern")
docker rm -f $(docker ps -a -q --filter="name=$cams_name_pattern") > /dev/null
}
# need first argument at least
if [ "$1" == "" ]; then
echo "error: invalid number of argument"
exit 1
fi
case $1 in
"start")
# check if the argument is a number.
re='^[0-9]+$'
if ! [[ $2 =~ $re ]] ; then
echo "error: argument is not a number"; exit 1
fi
if [[ "$3" == "" ]] ; then
echo "error: missing path to the configuration file template"; exit 1
fi
echo "starting $2 cameras"
start $2
generate_conf $3
;;
"stop")
echo "stopping all cameras tests"
stop
;;
"help")
echo "./gen_cameras.sh start CAMS_NB - start CAMS_NB cameras"
echo " stop - stop all started cameras"
echo " help - display this help"
exit 0
;;
*)
echo "invalid test name"
exit 1
;;
esac
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
while ! mysqladmin ping -h"mysql_cameradar" -P3306 --silent; do
sleep 1
done
ls -alhR /conf
cat /etc/hosts
# build
go build
# run test
./cameradartest /tmp/tests/cameradartest.conf.json
cp cameratest.log.xml /tmp/tests/
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
port=$1
user=$2
passw=$3
route=$4
url=""
# need first argument at least
if [ "$2" == "" ]; then
url="rtsp://:$port/$route"
else
url="rtsp://$user:$passw@:$port/$route"
fi
./etix_rtsp_server -u $s -p $3 -r $4
# cvlc /vlc/screen.png -I dummy --sout-keep --no-drop-late-frames --no-skip-frames --image-duration 9999 --sout="#transcode{vcodec=h264,fps=15,venc=x264{preset=ultrafast,tune=zerolatency,keyint=30,bframes=0,ref=1,level=30,profile=baseline,hrd=cbr,crf=20,ratetol=1.0,vbv-maxrate=1200,vbv-bufsize=1200,lookahead=0}}:rtp{sdp=$url}" --sout-all
Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB