#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/vid

covered_functions=(
"clone_all_vid_repos" "compile_all_vid_repos" "get_vid_images" "install_vid"
)

# test_clone_all_vid_repos() - Verifies that VID repositories are retrieved properly
function test_clone_all_vid_repos {
    clone_repos "vid"

    asserts_file_exist ${src_folders[vid]}/pom.xml
    asserts_file_exist ${src_folders[vid]}/asdcclient/pom.xml
}

# test_compile_all_vid_repos() - Verifies that VID source code is compiled properly
function test_compile_all_vid_repos {
    clone_repos "vid"
    compile_repos "vid"

    asserts_file_exist ${src_folders[vid]}/asdcclient/target/asdcclient-1.0.2-SNAPSHOT.jar
    asserts_file_exist ${src_folders[vid]}/epsdk-app-onap/target/vid.war
    asserts_file_exist ${src_folders[vid]}/vid-app-common/target/vid-common.war
}

# test_get_vid_images() - Verifies that VID Docker images are built properly
function test_get_vid_images {
    clone_repos "vid"
    get_vid_images

    asserts_image openecomp/vid
    asserts_image mariadb:10
}

# test_install_vid() - Verifies taht VID services are up and running
function test_install_vid {
    clone_repos "vid"
    get_vid_images
    install_vid

    vid_image=`docker images | grep vid | grep latest| awk '{print $1 ":" $2}'`
    asserts_image_running $vid_image
}

if [ "$1" != '*' ]; then
    unset covered_functions
    covered_functions=$1
fi
main "${covered_functions[@]}"
