#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/vvp

covered_functions=(
"clone_all_vvp_repos" "compile_all_vvp_repos" "get_vvp_images" "install_vvp"
)

# test_clone_all_vvp_repos() - Verify the cloning of VNFSDK source repo.
function test_clone_all_vvp_repos {
    clone_repos "vvp"

    asserts_file_exist $vvp_src_folder/cms/pom.xml
    asserts_file_exist $vvp_src_folder/devkit/LICENSE.TXT
    asserts_file_exist $vvp_src_folder/engagementmgr/pom.xml
    asserts_file_exist $vvp_src_folder/gitlab/pom.xml
    asserts_file_exist $vvp_src_folder/image-scanner/pom.xml
    asserts_file_exist $vvp_src_folder/jenkins/pom.xml
    asserts_file_exist $vvp_src_folder/portal/pom.xml
    asserts_file_exist $vvp_src_folder/postgresql/pom.xml
    asserts_file_exist $vvp_src_folder/test-engine/pom.xml
    asserts_file_exist $vvp_src_folder/validation-scripts/LICENSE.txt
}

# test_compile_all_vvp_repos () - Verify if VNFSDK source repo compiles correctly.
function test_compile_all_vvp_repos {
    clone_repos "vvp"
    compile_repos "vvp"

   # asserts_file_exist $vvp_src_folder/
}

# test_get_vvp_images() - Verify that the VNFSDK images are created or retrieved
function test_get_vvp_images {
    clone_repos "vvp"
    get_vvp_images

    #asserts_image refrepo:latest
}

# test_install_vvp() - Verify that VNFSDK docker images are running.
function test_install_vvp {
    clone_repos "vvp"
    get_vvp_images
    install_vvp

    #asserts_image_running refrepo:1.0-STAGING-latest
}

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