#!/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_repos "robot" "testsuite"

    asserts_file_exist ${src_folders[robot]}/LICENSE.TXT
    asserts_file_exist ${src_folders[robot]}/heatbridge/pom.xml
    asserts_file_exist ${src_folders[robot]}/properties/LICENSE.TXT
    asserts_file_exist ${src_folders[robot]}/python-testing-utils/LICENSE.TXT
}

# test_compile_robot_repos() - Verify that Robot source code can be compiled properly
function test_compile_robot_repos {
    clone_repos "robot" "testsuite"
    compile_repos "robot"

    #asserts_file_exist $testsuite_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_robot_images {
    get_robot_images

    asserts_image $nexus_docker_repo/openecomp/testsuite
}

# test_install_robot() - Verify the built and start of Robot services
function test_install_robot {
    clone_repos "robot" "testsuite"
    get_robot_images
    install_robot

    asserts_image_running $nexus_docker_repo/openecomp/testsuite
}

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