#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/vnfsdk

covered_functions=(
"clone_all_vnfsdk_repos" "compile_all_vnfsdk_repos" "get_vnfsdk_images" "install_vnfsdk"
)

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

    asserts_file_exist $vnfsdk_src_folder/compliance/veslibrary/README
    asserts_file_exist $vnfsdk_src_folder/functest/pom.xml
    asserts_file_exist $vnfsdk_src_folder/lctest/pom.xml
    asserts_file_exist $vnfsdk_src_folder/model/docs/index.rst
    asserts_file_exist $vnfsdk_src_folder/pkgtools/pom.xml
    asserts_file_exist $vnfsdk_src_folder/refrepo/pom.xml
    asserts_file_exist $vnfsdk_src_folder/validation/pom.xml
}

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

    asserts_file_exist $vnfsdk_src_folder/lctest/lifecycle-test/target/lifecycle-test-service-1.0.0-SNAPSHOT.war
    asserts_file_exist $vnfsdk_src_folder/pkgtools/target/vnf-sdk-pkgtools-1.0.0-SNAPSHOT.zip
    asserts_file_exist $vnfsdk_src_folder/refrepo/vnfmarket-be/vnf-sdk-marketplace/target/ROOT.war
    asserts_file_exist $vnfsdk_src_folder/validation/csarvalidation/target/validation-csar-1.0.0-SNAPSHOT.jar
}

# test_get_vnfsdk_images() - Verify that the VNFSDK images are created or retrieved
function test_get_vnfsdk_images {
    clone_repos "vnfsdk"
    get_vnfsdk_images

    asserts_image refrepo:1.0-STAGING-latest
    asserts_image refrepo:latest
}

# test_install_vnfsdk() - Verify that VNFSDK docker images are running.
function test_install_vnfsdk {
    clone_repos "vnfsdk"
    get_vnfsdk_images
    install_vnfsdk

    asserts_image_running refrepo:1.0-STAGING-latest
    asserts_image refrepo:latest
}

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