#!/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" "run_vfc_images" "build_nfvo_lcm_image"
"build_gvnfm_lcm_image" "build_gvnfm_vnfmgr_image" "build_gvnfm_vnfres_image"
"build_nfvo_lcm_image" "build_nfvo_vnfm_gvnfmadapter_image"
)

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

    # TODO(sshank):  Add other asserts
    asserts_file_exist $src_folder/nfvo/lcm/run.sh

}

# test_compile_all_vfc_repos() - Verify that all the VFC modules are compiled properly
function test_compile_all_vfc_repos {
    clone_all_vfc_repos
    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 {
    get_vfc_images

    asserts_image nexus3.onap.org:10003/onap/vfc/nslcm
    asserts_image nexus3.onap.org:10003/onap/vfc/gvnfmdriver
    asserts_image nexus3.onap.org:10003/onap/vfc/vnfres
    asserts_image nexus3.onap.org:10003/onap/vfc/vnfmgr
    asserts_image nexus3.onap.org:10003/onap/vfc/vnflcm

    # TODO(sshank): Add asserts for other VFC component docker image builds.
}

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

    asserts_image_running nexus3.onap.org:10003/onap/vfc/nslcm:latest
    asserts_image_running nexus3.onap.org:10003/onap/vfc/gvnfmdriver:latest
    asserts_image_running nexus3.onap.org:10003/onap/vfc/vnfres:latest
    asserts_image_running nexus3.onap.org:10003/onap/vfc/vnfmgr:latest
    asserts_image_running nexus3.onap.org:10003/onap/vfc/vnflcm:latest

    # TODO(sshank): Add asserts for other running VFC component docker images.
}

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