1f8c8b86863b022eb380b70aab7f7923be6c1f43
[integration/csit.git] / plans / so / macroflow / setup.sh
1 #!/bin/bash
2 #
3 # ============LICENSE_START=======================================================
4 #   Copyright (C) 2021 Nordix Foundation.
5 # ================================================================================
6 #  Licensed under the Apache License, Version 2.0 (the "License");
7 #  you may not use this file except in compliance with the License.
8 #  You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #  Unless required by applicable law or agreed to in writing, software
13 #  distributed under the License is distributed on an "AS IS" BASIS,
14 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #  See the License for the specific language governing permissions and
16 #  limitations under the License.
17 #
18 #  SPDX-License-Identifier: Apache-2.0
19 # ============LICENSE_END=========================================================
20
21 # @author Waqas Ikram (waqas.ikram@est.tech)
22
23 MAVEN_VERSION_DIR="apache-maven-3.3.9"
24 MAVEN_TAR_FILE="$MAVEN_VERSION_DIR-bin.tar.gz"
25 MAVEN_TAR_LOCATION="https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/$MAVEN_TAR_FILE"
26
27 SCRIPT_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
28 SCRIPT_NAME=$(basename $0)
29 CONFIG_DIR=$SCRIPT_HOME/config
30 ENV_FILE=$CONFIG_DIR/env
31 TEMP_DIR_PATH=$SCRIPT_HOME/temp
32
33 DOCKER_COMPOSE_FILE_PATH=$SCRIPT_HOME/docker-compose.yml
34 TEAR_DOWN_SCRIPT=$SCRIPT_HOME/teardown.sh
35
36 INTEGRATION_ETSI_TESTING_DIR=$WORKSPACE/plans/so/integration-etsi-testing
37 INTEGRATION_ETSI_TESTING_CONFIG_DIR=$INTEGRATION_ETSI_TESTING_DIR/config
38
39 MAVEN_DIR=$TEMP_DIR_PATH/maven
40 INSTALLED_MAVEN_DIR=$MAVEN_DIR/$MAVEN_VERSION_DIR
41 MVN=$INSTALLED_MAVEN_DIR/bin/mvn
42 MVN_VERSION="$MVN -v"
43 MVN_SETTINGS_XML="$INTEGRATION_ETSI_TESTING_DIR/settings.xml"
44 MVN_CLEAN_INSTALL="$MVN clean install"
45 SIMULATOR_MAVEN_PROJECT_POM="$INTEGRATION_ETSI_TESTING_DIR/so-simulators/pom.xml"
46 WAIT_FOR_CONTAINER_SCRIPT=$INTEGRATION_ETSI_TESTING_CONFIG_DIR/"wait-for-container.sh"
47
48 echo "Running $SCRIPT_HOME/$SCRIPT_NAME ..."
49
50 export $(egrep -v '^#' $ENV_FILE | xargs)
51
52 MANDATORY_VARIABLES_NAMES=( "PROJECT_NAME" "DEFAULT_NETWORK_NAME" )
53
54 for var in "${MANDATORY_VARIABLES_NAMES[@]}"
55  do
56    if [ -z "${!var}" ]; then
57      echo "Missing mandatory attribute $var in $ENV_FILE"
58      exit 1
59   fi
60 done
61
62 if [[ ! "$TEMP_DIR_PATH" || ! -d "$TEMP_DIR_PATH" ]]; then
63         echo "Creating temporary directory $TEMP_DIR_PATH"
64         mkdir $TEMP_DIR_PATH
65
66         if [ $? -ne 0 ]; then
67                 echo "Could not create $TEMP_DIR_PATH"
68                 exit 1
69         fi
70
71 fi
72 echo "Will use ${TEMP_DIR_PATH} directory"
73
74 if [[ ! "$MAVEN_DIR" || ! -d "$MAVEN_DIR" ]]; then
75         echo "Creating temporary maven directory $MAVEN_DIR"
76         mkdir $MAVEN_DIR
77
78         if [ $? -ne 0 ]; then
79                 echo "Could not create $MAVEN_DIR"
80                 exit 1
81         fi
82 fi
83 echo "Will use ${MAVEN_DIR} directory for maven install"
84
85 if [[ ! "$INSTALLED_MAVEN_DIR" || ! -d "$INSTALLED_MAVEN_DIR" ]]; then
86         echo "Installing maven ..."
87         cd $MAVEN_DIR
88
89         CURL=`which curl`
90         if [[ ! "$CURL" ]]; then
91                 echo "curl command is not installed"
92                 echo "Unable to execute test plan"
93                 exit 1
94         fi
95         curl -O $MAVEN_TAR_LOCATION
96
97         TAR=`which tar`
98         if [[ ! "$TAR" ]]; then
99                 echo "tar command is not installed"
100                 echo "Unable to execute test plan"
101                 exit 1
102         fi
103
104         tar -xzvf $MAVEN_TAR_FILE
105
106         echo "Finished installing maven ..."
107 fi
108
109 echo "Maven installed under directory $INSTALLED_MAVEN_DIR"
110
111 $MVN_VERSION
112
113 if [ $? -ne 0 ]; then
114         echo "Unable to run mvn -v command"
115         exit 1
116 fi
117
118 cd $SCRIPT_HOME
119
120 echo "Will build simulator project using $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML"
121 $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML
122
123 if [ $? -ne 0 ]; then
124         echo "Maven build failed"
125         exit 1
126 fi
127
128 docker-compose -f $DOCKER_COMPOSE_FILE_PATH -p $PROJECT_NAME up -d
129
130 echo "Sleeping for 1m"
131 sleep 1m
132
133 AAI_SIMULATOR_CONTAINER_NAME="aai-simulator"
134 echo "Will execute $WAIT_FOR_CONTAINER_SCRIPT to wait for $AAI_SIMULATOR_CONTAINER_NAME container to start up"
135 $WAIT_FOR_CONTAINER_SCRIPT -c "$AAI_SIMULATOR_CONTAINER_NAME" -t "300" -n "$DEFAULT_NETWORK_NAME"
136 if [ $? -ne 0 ]; then
137    echo "ERROR: $WAIT_FOR_CONTAINER_SCRIPT failed"
138    echo "Will stop running docker containers . . ."
139    $TEAR_DOWN_SCRIPT
140    exit 1
141 fi
142
143 REPO_IP='127.0.0.1'
144 ROBOT_VARIABLES="-v REPO_IP:${REPO_IP}"
145
146 echo "Finished executing $SCRIPT_HOME/$SCRIPT_NAME"