#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/multicloud

covered_functions=(
"clone_multicloud_repos" "compile_multicloud_repos" "get_multicloud_images" "install_multicloud"
)

# test_clone_multicloud_repos() - Verify that Multi Cloud repositories are cloned properly
function test_clone_multicloud_repos {
    clone_multicloud_repos

    asserts_file_exist $multicloud_src_folder/framework/multivimbroker/pom.xml
    asserts_file_exist $multicloud_src_folder/openstack/pom.xml
    asserts_file_exist $multicloud_src_folder/openstack/vmware/pom.xml
}

# test_compile_multicloud_repos() -
function test_compile_multicloud_repos {
    clone_multicloud_repos
    compile_multicloud_repos

    asserts_file_exist $multicloud_src_folder/openstack/newton/target/multicloud-openstack-newton-1.0.0-SNAPSHOT.zip
}

# test_get_multicloud_images() -
function test_get_multicloud_images {
    clone_multicloud_repos
    get_multicloud_images
}

# test_install_multicloud() - Verify the built and start of Multi Cloud services
function test_install_multicloud {
    clone_multicloud_repos
    get_multicloud_images
    install_multicloud
}

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