#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/robot

covered_functions=(
"clone_robot_repos" "compile_robot_repos" "get_robot_images" "install_robot"
)

# test_clone_robot_repos() - Verify that Robot repositories are cloned properly
function test_clone_robot_repos {
    clone_robot_repos

    asserts_file_exist $robot_src_folder/LICENSE.TXT
    asserts_file_exist $robot_src_folder/heatbridge/pom.xml
    asserts_file_exist $robot_src_folder/properties/LICENSE.TXT
    asserts_file_exist $robot_src_folder/python-testing-utils/LICENSE.TXT
}

# test_compile_robot_repos() - Verify that Robot source code can be compiled properly
function test_compile_robot_repos {
    clone_robot_repos
    compile_robot_repos

    asserts_file_exist $robot_src_folder/heatbridge/target/maven-python/dist/heatbridge-0.3.0.dev0-py2-none-any.whl
}

# test_get_robot_images() - Verify that Robot Docker images are retrieved
function test_get_mr_images {
    get_robot_images

    asserts_image testsuite
}

# test_install_robot() - Verify the built and start of Robot services
function test_install_message_router {
    clone_robot_repos
    get_robot_images
    install_robot

    asserts_image_running testsuite
}

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