On Sat, Jan 26, 2019 at 1:37 AM Waldemar Kozaczuk <[email protected]>
wrote:

> THIS is just for testing -> is not meant to be applied to OSv github tree.
>
> Helps recreating and testing issues #536, #1010 and #1018
>

Thanks. Since you said "not meant to be applied to OSv github tree", I
won't :-)

One thing you could do with these scripts is to paste them into the
different issues involved. So if some time in the future someone becomes
interested in one of these issues again, he can find these scripts there
instead of having to search the web or the mailing list for ideas how to
test them.


> Signed-off-by: Waldemar Kozaczuk <[email protected]>
> ---
>  fpu_test_scripts/poll_threads.sh              | 16 +++++
>  fpu_test_scripts/run_cassandra.sh             | 19 ++++++
>  fpu_test_scripts/run_ffmpeg_extract_frames.sh | 54 +++++++++++++++
>  fpu_test_scripts/run_ffmpeg_transcode_x265.sh | 65 +++++++++++++++++++
>  4 files changed, 154 insertions(+)
>  create mode 100755 fpu_test_scripts/poll_threads.sh
>  create mode 100755 fpu_test_scripts/run_cassandra.sh
>  create mode 100755 fpu_test_scripts/run_ffmpeg_extract_frames.sh
>  create mode 100755 fpu_test_scripts/run_ffmpeg_transcode_x265.sh
>
> diff --git a/fpu_test_scripts/poll_threads.sh
> b/fpu_test_scripts/poll_threads.sh
> new file mode 100755
> index 00000000..3013c942
> --- /dev/null
> +++ b/fpu_test_scripts/poll_threads.sh
> @@ -0,0 +1,16 @@
> +#!/bin/bash
> +
> +while true
> +do
> +  HTTP_RESPONSE=`curl -s -w "HTTPCODE:%{http_code}"
> http://localhost:8000/os/threads` <http://localhost:8000/os/threads>
> +
> +  HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPCODE\:.*//g')
> +
> +  HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e
> 's/.*HTTPCODE://')
> +  printf "HTTP code: $HTTP_STATUS\n"
> +  if [ ! $HTTP_STATUS -eq 200 ]; then
> +    exit 1
> +  fi
> +
> +  sleep .1
> +done
> diff --git a/fpu_test_scripts/run_cassandra.sh
> b/fpu_test_scripts/run_cassandra.sh
> new file mode 100755
> index 00000000..8c830c86
> --- /dev/null
> +++ b/fpu_test_scripts/run_cassandra.sh
> @@ -0,0 +1,19 @@
> +#!/bin/bash
> +
> +#
> +# Commands helpful to replicate issue #536
> +
> +#
> +# Build:
> +./scripts/build image=cassandra,httpserver-html5-gui
> +
> +# In 1st window run cassandra on OSv
> +sudo ./scripts/run.py -nv -m 4G -c 1
> +
> +# In 2nd window keep getting OSv thread info
> +while :; do curl http://192.168.122.76:8000/os/threads > /dev/null;done
> +
> +# In 3rd window execute cassandra stress test
> +# May need to execute number of times until error is reproduced
> +OSV_PATH=$(pwd $0)/..
> +$OSV_PATH/apps/cassandra/upstream/apache-cassandra-2.1.0/tools/bin$
> ./cassandra-stress write -node 192.168.122.76 -rate threads=50 &&
> ./cassandra-stress read -node 192.168.122.76 -rate threads=50
> diff --git a/fpu_test_scripts/run_ffmpeg_extract_frames.sh
> b/fpu_test_scripts/run_ffmpeg_extract_frames.sh
> new file mode 100755
> index 00000000..1bd111aa
> --- /dev/null
> +++ b/fpu_test_scripts/run_ffmpeg_extract_frames.sh
> @@ -0,0 +1,54 @@
> +#!/bin/bash
> +
> +#
> +# Script helpful to replicate issue #1010
> +
> +#
> +# Build
> +# ./scripts/build image=ffmpeg,httpserver-html5-gui.fg
> +
> +# In 1st start OSv with REST API httpserver listening for commands
> +# ./scripts/run.py -e '/libhttpserver-api.so' --api
> +
> +# In 2nd window keep getting OSv thread info using poll_threads.sh
> +
> +# In 3rd window run this script (takes number of times ffpmeg will be
> executed - up to 32 times)
> +# It keeps executing ffmpeg to extract frames from supplied video URL
> +COUNT=$1
> +COMMAND='/ffmpeg.so -i http://clips.vorwaerts-gmbh.de/VfE_html5.mp4 -r 1
> -f image2 image-%2d.png'
> +
> +make_api_call()
> +{
> +  METHOD=$1
> +  URL=$2
> +  HTTP_RESPONSE=$(curl -X${METHOD} -s -w "HTTPCODE:%{http_code}"
> http://localhost:8000${URL})
> +
> +  HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPCODE\:.*//g')
> +  #echo $HTTP_BODY
> +
> +  HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e
> 's/.*HTTPCODE://')
> +  if [ ! $HTTP_STATUS -eq 200 ]; then
> +    printf "HTTP code: $HTTP_STATUS\n"
> +    exit 1
> +  fi
> +}
> +
> +while [ $COUNT -ge 0 ]
> +do
> +  make_api_call PUT '/app/?command=%2Fffmpeg.so%20-i%20http%3A%2F%
> 2Fclips.vorwaerts-gmbh.de
> %2FVfE_html5.mp4%20-r%201%20-f%20image2%20image-%252d.png&new_program=true'
> +  TID=$(echo $HTTP_BODY | grep -oP "\d+")
> +  echo "App TID: $TID"
> +  printf "Checking statue of $TID "
> +
> +  FINISHED=0
> +  while [ $FINISHED -eq 0 ]
> +  do
> +    sleep 1
> +    printf "."
> +    make_api_call GET "/app/finished/?tid=$TID"
> +    FINISHED=$(echo $HTTP_BODY | grep -oP "\d+")
> +  done
> +
> +  printf "\n"
> +  COUNT=$((COUNT-1))
> +done
> diff --git a/fpu_test_scripts/run_ffmpeg_transcode_x265.sh
> b/fpu_test_scripts/run_ffmpeg_transcode_x265.sh
> new file mode 100755
> index 00000000..9386e984
> --- /dev/null
> +++ b/fpu_test_scripts/run_ffmpeg_transcode_x265.sh
> @@ -0,0 +1,65 @@
> +#!/bin/bash
> +
> +#
> +# Script helpful to replicate issue #1018
> +
> +#
> +# Build (please not you need to uncommend line in apps/ffmpeg/Makefile to
> enabled x265 code compiliation
> +# ./scripts/build image=ffmpeg,httpserver-html5-gui.fg
> +
> +# In 1st start OSv with REST API httpserver listening for commands
> +# ./scripts/run.py -e '/libhttpserver-api.so' --api
> +
> +# In 2nd window keep getting OSv thread info using poll_threads.sh
> +
> +# In 3rd window run this script (takes number of times ffpmeg will be
> executed - up to 32 times)
> +# It starts ffmpeg on a host to listen for incoming transcoded video
> stream and then
> +# send a request to OSv to start ffmpeg to transcode video
> http://clips.vorwaerts-gmbh.de/VfE_html5.mp4
> +# to h265 and send it over network to ther ffmpeg instance running on the
> host
> +
> +COUNT=$1
> +OSV_PATH=$(pwd $0)/..
> +FFMPEG_DIR=$OSV_PATH/apps/ffmpeg/ROOTFS
> +COMMAND='/ffmpeg.so -i http://clips.vorwaerts-gmbh.de/VfE_html5.mp4 -c:v
> libx265 -crf 28 -c:a aac -b:a 128k -f mpegts tcp://192.168.122.1:12345'
> +
> +make_api_call()
> +{
> +  METHOD=$1
> +  URL=$2
> +  HTTP_RESPONSE=$(curl -X${METHOD} -s -w "HTTPCODE:%{http_code}"
> http://localhost:8000${URL})
> +
> +  HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPCODE\:.*//g')
> +  #echo $HTTP_BODY
> +
> +  HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e
> 's/.*HTTPCODE://')
> +  if [ ! $HTTP_STATUS -eq 200 ]; then
> +    printf "HTTP code: $HTTP_STATUS\n"
> +    exit 1
> +  fi
> +}
> +
> +while [ $COUNT -ge 0 ]
> +do
> +  #Start ffmpeg TCP listener
> +  rm -f $HOME/test.mp4
> +  export LD_LIBRARY_PATH=$FFMPEG_DIR
> +  $FFMPEG_DIR/ffmpeg.so -i tcp://0.0.0.0:12345?listen -c copy
> $HOME/test.mp4 1>/dev/null 2>/dev/null &
> +  sleep .5
> +
> +  make_api_call PUT '/app/?command=%2Fffmpeg.so%20-i%20http%3A%2F%
> 2Fclips.vorwaerts-gmbh.de
> %2FVfE_html5.mp4%20-c%3Av%20libx265%20-crf%2028%20-c%3Aa%20aac%20-b%3Aa%20128k%20-f%20mpegts%20tcp%3A%2F%2F192.168.122.1%3A12345&new_program=true'
> +  TID=$(echo $HTTP_BODY | grep -oP "\d+")
> +  echo "App TID: $TID"
> +  printf "Checking statue of $TID "
> +
> +  FINISHED=0
> +  while [ $FINISHED -eq 0 ]
> +  do
> +    sleep 1
> +    printf "."
> +    make_api_call GET "/app/finished/?tid=$TID"
> +    FINISHED=$(echo $HTTP_BODY | grep -oP "\d+")
> +  done
> +
> +  printf "\n"
> +  COUNT=$((COUNT-1))
> +done
> --
> 2.19.1
>
> --
> You received this message because you are subscribed to the Google Groups
> "OSv Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to