#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/vfc

covered_functions=(
"clone_all_vfc_repos" "compile_all_vfc_repos" "install_vfc" "get_vfc_images"
)

# test_clone_all_vfc_repos() - Verify cloning and pulling source code from repositories
function test_clone_all_vfc_repos {
    clone_repos "vfc"

    #asserts_file_exist $vfc_src_folder/pom.xml
    #asserts_file_exist $vfc_src_folder/gvnfm
    asserts_file_exist $vfc_src_folder/gvnfm/vnflcm/pom.xml
    asserts_file_exist $vfc_src_folder/gvnfm/vnfmgr/pom.xml
    asserts_file_exist $vfc_src_folder/gvnfm/vnfres/pom.xml
    #asserts_file_exist $vfc_src_folder/nfvo
    asserts_file_exist $vfc_src_folder/nfvo/catalog/run.sh
    #asserts_file_exist $vfc_src_folder/nfvo/driver
    asserts_file_exist $vfc_src_folder/nfvo/driver/ems/pom.xml
    asserts_file_exist $vfc_src_folder/nfvo/driver/sfc/pom.xml
    #asserts_file_exist $vfc_src_folder/nfvo/driver/vnfm
    asserts_file_exist $vfc_src_folder/nfvo/driver/vnfm/gvnfm/pom.xml
    asserts_file_exist $vfc_src_folder/nfvo/driver/vnfm/svnfm/pom.xml
    asserts_file_exist $vfc_src_folder/nfvo/lcm/pom.xml
    asserts_file_exist $vfc_src_folder/nfvo/wfengine/wso2/pom.xml
}

# test_compile_all_vfc_repos() - Verify that all the VFC modules are compiled properly
function test_compile_all_vfc_repos {
    clone_repos "vfc"
    compile_all_vfc_repos

    # TODO(electrocucaracha): Add asserts_file_exist
}

# test_get_vfc_images() - Verify all VFC images are built correctly.
function test_get_vfc_images {
    clone_repos "vfc"
    get_vfc_images

    asserts_image onap/gvnfmdriver
    asserts_image onap/nslcm
    asserts_image onap/vnfres
    asserts_image onap/vnfmgr
    asserts_image onap/vnflcm
}

# test_install_vfc() - Verify that the VFC are up and running
function test_install_vfc {
    clone_repos "vfc"
    get_vfc_images
    install_vfc

    asserts_image_running onap/nslcm
    asserts_image_running onap/gvnfmdriver
    asserts_image_running onap/vnfres
    asserts_image_running onap/vnfmgr
    asserts_image_running onap/vnflcm
}

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