#!/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 ${src_folders[vfc]}/pom.xml
    #asserts_file_exist ${src_folders[vfc]}/gvnfm
    asserts_file_exist ${src_folders[vfc]}/gvnfm/vnflcm/pom.xml
    asserts_file_exist ${src_folders[vfc]}/gvnfm/vnfmgr/pom.xml
    asserts_file_exist ${src_folders[vfc]}/gvnfm/vnfres/pom.xml
    #asserts_file_exist ${src_folders[vfc]}/nfvo
    asserts_file_exist ${src_folders[vfc]}/nfvo/catalog/run.sh
    #asserts_file_exist ${src_folders[vfc]}/nfvo/driver
    asserts_file_exist ${src_folders[vfc]}/nfvo/driver/ems/pom.xml
    asserts_file_exist ${src_folders[vfc]}/nfvo/driver/sfc/pom.xml
    #asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm
    asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm/gvnfm/pom.xml
    asserts_file_exist ${src_folders[vfc]}/nfvo/driver/vnfm/svnfm/pom.xml
    asserts_file_exist ${src_folders[vfc]}/nfvo/lcm/pom.xml
    asserts_file_exist ${src_folders[vfc]}/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[@]}"
