Add VVP integration tests

Add VVP engagement manager container to integration tests (full flow)

Change-Id: Iad7297f199b34f429005e8778d23c3c65b688e4d
Issue-ID: VVP-31
Signed-off-by: Almog Laktivi <al942u@att.com>
diff --git a/test/csit/plans/vvp/sanity/setup.sh b/test/csit/plans/vvp/sanity/setup.sh
index e775846..cab074c 100644
--- a/test/csit/plans/vvp/sanity/setup.sh
+++ b/test/csit/plans/vvp/sanity/setup.sh
@@ -28,7 +28,7 @@
 source ${WORKSPACE}/test/csit/scripts/vvp/start_vvp_sanity.sh
 
 
-VVP_IP=`get-instance-ip.sh vvp-engagementmgr`
+VVP_IP=`${WORKSPACE}/test/csit/scripts/get-instance-ip.sh vvp-engagementmgr`
 echo VVP_IP=${VVP_IP}
 
 
diff --git a/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh b/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
index aae8d94..a39ed08 100644
--- a/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
+++ b/test/csit/scripts/vvp/clone_and_setup_vvp_data.sh
@@ -27,6 +27,7 @@
 # Clone vvp enviroment template
 mkdir -p ${WORKSPACE}/data/environments/
 mkdir -p ${WORKSPACE}/data/clone/
+mkdir -p /opt/configmaps/settings/
 
 cd ${WORKSPACE}/data/clone
 git clone --depth 1 http://gerrit.onap.org/r/vvp/engagementmgr -b master
@@ -34,33 +35,74 @@
 chmod -R 775 ${WORKSPACE}/data/
 
 # copy settings file from tox environment infrastructure:
-cp -rf ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings/tox_settings.py ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings/__init__.py
+cp -f ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings/tox_settings.py /opt/configmaps/settings/__init__.py
+
+# uwsgi.ini file creation
+echo "[uwsgi]
+http = :80
+plugin = python
+chdir = /srv
+module = vvp.wsgi:application
+master = True
+pidfile = /tmp/project-master.pid
+vacuum = True
+max-requests = 5000
+enable-threads = True
+stats = 0.0.0.0:9000
+stats-http = True" > /opt/configmaps/settings/uwsgi.ini
+
+# storage.py file creation
+echo "from storages.backends.s3boto import S3BotoStorage
+from django.conf import settings
+class S3StaticStorage(S3BotoStorage):
+    custom_domain = '%s/%s' % (settings.AWS_S3_HOST, settings.STATIC_BUCKET)
+    bucket_name = settings.STATIC_BUCKET
+class S3MediaStorage(S3BotoStorage):
+    custom_domain = '%s/%s' % (settings.AWS_S3_HOST, settings.MEDIA_BUCKET)
+    bucket_name = settings.MEDIA_BUCKET" > /opt/configmaps/settings/storage.py
+
+# envbool.py file creation
+echo "import os
+def envbool(key, default=False, unknown=True):
+    return {'true': True, '1': True, 'false': False, '0': False,
+        '': default,}.get(os.getenv(key, '').lower(), unknown)" > /opt/configmaps/settings/envbool.py
+
+# vvp_env.list file creation
 echo "# set enviroment variables
-DJANGO_SETTINGS_MODULE='vvp.settings.tox_settings'
+OAUTHLIB_INSECURE_TRANSPORT=1
+HOST_IP=${IP}
+ENVNAME=${ENVIRONMENT}
+http_proxy=${http_proxy}
+https_proxy=${https_proxy}
+no_proxy=${no_proxy}
+DJANGO_SETTINGS_MODULE=vvp.settings
 # export PYTHONPATH={pwd}
-SECRET_KEY='6mo22&_gtjf#wktqf1#ve^7=w6kx)uq0u*4ksk^aq8lte&)yul'
-ENVIRONMENT='development'
-PROGRAM_NAME_URL_PREFIX='vvp'
-EMAIL_HOST='localhost'
-EMAIL_HOST_PASSWORD=''
-EMAIL_HOST_USER=''
-EMAIL_PORT='25'
-PGDATABASE='icedb'
-PGUSER='iceuser'
-PGPASSWORD='Aa123456'
-PGHOST='localhost'
-PGPORT='5433'
-SECRET_WEBHOOK_TOKEN='Aiwi8se4ien0foW6eimahch2zahshaGi'
-SECRET_GITLAB_AUTH_TOKEN='ieNgathapoo4zohvee9a'
-SECRET_JENKINS_PASSWORD='xaiyie0wuoqueuBu'
-SECRET_CMS_APP_CLIENT_ID='MHmJo0ccDheVVsIiQHZnY6LXPAC6H6HAMzhCCM16'
-SECRET_CMS_APP_CLIENT_SECRET='nI8QCFrKMpnw5nTs'
-SLACK_API_TOKEN=''
-S3_HOST='dev-s3.d2ice.att.io'
-S3_PORT='443'
-AWS_ACCESS_KEY_ID='FD21HBU2KRN3UVD1MWRN'
-AWS_SECRET_ACCESS_KEY='TKoiwxziUWG9cTYUknUkFGmmyuQ27nP2lCiutEsD'
-STATIC_ROOT='/app/htdocs'" > ${WORKSPACE}/data/environments/vvp_env
+SECRET_KEY=6mo22&FAKEFALEFALEFKEuq0u*4ksk^aq8lte&)yul
+ENVIRONMENT=development
+SERVICE_PROVIDER=ExampleProvider
+PROGRAM_NAME=VVP
+PROGRAM_NAME_URL_PREFIX=vvp
+SERVICE_PROVIDER_DOMAIN=example-domain.com
+EMAIL_HOST=localhost
+EMAIL_HOST_PASSWORD=
+EMAIL_HOST_USER=
+EMAIL_PORT=25
+PGDATABASE=icedb
+PGUSER=iceuser
+PGPASSWORD=Aa123456
+PGHOST=localhost
+PGPORT=5433
+SECRET_WEBHOOK_TOKEN=AiwiFAKEFAKEFAKEmahch2zahshaGi
+SECRET_GITLAB_AUTH_TOKEN=ieNgFAKEFAKE4zohvee9a
+SECRET_JENKINS_PASSWORD=xaiyiFAKEFAKEqueuBu
+SECRET_CMS_APP_CLIENT_ID=MHmJo0ccDhFAKEFAKEFAKEPAC6H6HAMzhCCM16
+SECRET_CMS_APP_CLIENT_SECRET=nI8QFAKEEEpnw5nTs
+SLACK_API_TOKEN=
+S3_HOST=localhost
+S3_PORT=443
+AWS_ACCESS_KEY_ID=FD2FAKEFAKEFAKEVD1MWRN
+AWS_SECRET_ACCESS_KEY=TKoiwxzFAKEFAKEFAKEFAKEFAKEQ27nP2lCiutEsD
+STATIC_ROOT=/app/htdocs" > ${WORKSPACE}/data/environments/vvp_env.list
 
 ifconfig
 
diff --git a/test/csit/scripts/vvp/docker_health.sh b/test/csit/scripts/vvp/docker_health.sh
index d511a37..520b2dc 100644
--- a/test/csit/scripts/vvp/docker_health.sh
+++ b/test/csit/scripts/vvp/docker_health.sh
@@ -25,9 +25,8 @@
 echo "VVP-Engagement-Manager health-Check:"
 echo ""
 echo ""
-res=`curl -s -X GET -H "Accept: application/json" -H "Content-Type: application/json" -H "http://localhost:8000/vvp/v1/engmgr/vendors" | wc -l`
-if [[ ${res} == 0 ]]
-then
+res=`curl -s -X GET -H "Accept: application/json" -H "Content-Type: application/json" "http://localhost:9090/vvp/v1/engmgr/vendors" | wc -w`
+if [ ${res} == 0 ]; then
     echo "Error [${res}] while performing vvp engagement manager vendor existance check"
     exit 1
 fi
diff --git a/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh b/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
index 5b91c67..a6c108e 100644
--- a/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
+++ b/test/csit/scripts/vvp/kill_containers_and_remove_dataFolders.sh
@@ -19,11 +19,13 @@
 
 echo "This is ${WORKSPACE}/test/csit/scripts/vvp/kill_and_remove_dataFolder.sh"
 
+
+CONTAINER_NAME="vvp-engagementmgr"
+
 #kill and remove all vvp dockers
-docker stop $(docker ps -a -q --filter="name=vvp")
-docker rm $(docker ps -a -q --filter="name=vvp")
+docker stop $CONTAINER_NAME
+docker rm -f $CONTAINER_NAME
 
 
 #delete data folder
-#TODO: Remove the comment:
-#rm -rf ${WORKSPACE}/data/*
+rm -rf ${WORKSPACE}/data/*
diff --git a/test/csit/scripts/vvp/start_vvp_containers.sh b/test/csit/scripts/vvp/start_vvp_containers.sh
index d6cb88e..5f905b6 100644
--- a/test/csit/scripts/vvp/start_vvp_containers.sh
+++ b/test/csit/scripts/vvp/start_vvp_containers.sh
@@ -29,8 +29,23 @@
 export RELEASE='latest'
 
 #start Engagement Manager pod:
-docker run --detach --name vvp-engagementmgr --env HOST_IP=${IP} --env ENVNAME="${ENVIRONMENT}" --env http_proxy=${http_proxy} --env https_proxy=${https_proxy} --env no_proxy=${no_proxy} --env-file ${WORKSPACE}/data/environments/vvp_env --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1  --memory 4g --memory-swap=4g --ulimit nofile=4096:100000 --volume  /etc/localtime:/etc/localtime:ro --volume  ${WORKSPACE}/data/logs/engagementmgr/:/var/lib/jetty/logs  --volume  ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/clone/engagementmgr/django/vvp/settings:/opt/configmaps/settings/ --publish 8443:8443 --publish 8000:8000 ${PREFIX}/engagementmgr:${RELEASE}
+docker run \
+--detach \
+--entrypoint="" \
+--name vvp-engagementmgr \
+--env-file ${WORKSPACE}/data/environments/vvp_env.list \
+--log-driver=json-file \
+--log-opt max-size=100m \
+--log-opt max-file=10 \
+--ulimit memlock=-1:-1 \
+--memory 4g \
+--memory-swap=4g \
+--ulimit nofile=4096:100000 \
+--volume /etc/localtime:/etc/localtime:ro \
+--volume /opt/configmaps/settings:/opt/configmaps/settings/ \
+--publish 9090:80 ${PREFIX}/engagementmgr:${RELEASE}
 
+docker cp /opt/configmaps/settings/uwsgi.ini vvp-engagementmgr:/srv/vvp/settings/
 
 echo "please wait while Engagement Manager is starting..."
 echo ""
@@ -43,11 +58,23 @@
 done
 echo -e ""
 
+#run migration again:
+docker exec -d vvp-engagementmgr sh -c "python3 /srv/manage.py migrate"
+
+#run initial populate db again:
+docker exec -d vvp-engagementmgr sh -c "python3 /srv/manage.py initial_populate_db"
+
+
+echo "Will copy the generated DB sqlite3 file into the application directory in 30 seconds..."
+sleep 30
+#copy the generated DB sqlite3 file into the application directory:
+docker exec -d vvp-engagementmgr sh -c "cp emdb.db /srv/emdb.db -f"
+
 TIME_OUT=600
 INTERVAL=5
 TIME=0
 while [ "$TIME" -lt "$TIME_OUT" ]; do
-  response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://localhost:8000/vvp/v1/engmgr/vendors); echo $response
+  response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://localhost:9090/vvp/v1/engmgr/vendors); echo $response
 
   if [ "$response" == "200" ]; then
     echo VVP-Engagement-Manager well started in $TIME seconds
@@ -61,5 +88,6 @@
 
 if [ "$TIME" -ge "$TIME_OUT" ]; then
    echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
-
-
+else
+   echo "Done starting vvp containers!"
+fi
diff --git a/test/csit/tests/vvp/sanity/test1.robot b/test/csit/tests/vvp/sanity/test1.robot
index 21e1b5e..27612fd 100644
--- a/test/csit/tests/vvp/sanity/test1.robot
+++ b/test/csit/tests/vvp/sanity/test1.robot
@@ -4,13 +4,13 @@
 Library           RequestsLibrary
 Library           json
 
-# http://localhost:8000/vvp/v1/engmgr/vendors
+# http://localhost:9090/vvp/v1/engmgr/vendors
 # vvp-engagementmgr
 
 *** Test Cases ***
 Get Requests health check ok
     [Tags]    get
-    CreateSession    vvp-engagementmgr    http://localhost:8000
+    CreateSession    vvp-engagementmgr    http://localhost:9090
     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
     ${resp}=    Get Request    vvp-engagementmgr    /vvp/v1/engmgr/vendors    headers=&{headers}
     Should Be Equal As Strings    ${resp.status_code}    200