1#!/bin/bash 2# Copyright (C) 2015-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) 3# This Source Code Form is subject to the terms of the Mozilla Public 4# License, v. 2.0. If a copy of the MPL was not distributed with this 5# file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 7# Purpose: This script is needed to start the client and service with 8# one command. This is necessary as ctest - which is used to run the 9# tests - isn't able to start two binaries for one testcase. Therefore 10# the testcase simply executes this script. This script then runs client 11# and service and checks that both exit sucessfully. 12 13FAIL=0 14 15# NOW WITHOUT JSON 16echo "----------------------------------------------" 17echo "----------------------------------------------" 18echo " Run test with auto configuration " 19echo "----------------------------------------------" 20echo "----------------------------------------------" 21 22export VSOMEIP_CONFIGURATION=restart_routing_test_autoconfig.json 23 24../examples/routingmanagerd/./routingmanagerd & 25DAEMON_PID=$! 26 27sleep 2 28 29# Start the service 30export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 31./restart_routing_test_service & 32SERIVCE_PID=$! 33 34# Start the client1 35export VSOMEIP_APPLICATION_NAME=restart_routing_test_client1 36./restart_routing_test_client & 37CLIENT1_PID=$! 38 39# Start the client2 40export VSOMEIP_APPLICATION_NAME=restart_routing_test_client2 41./restart_routing_test_client & 42CLIENT2_PID=$! 43 44# Start the client3 45export VSOMEIP_APPLICATION_NAME=restart_routing_test_client3 46./restart_routing_test_client & 47CLIENT3_PID=$! 48 49# Start the client4 50export VSOMEIP_APPLICATION_NAME=restart_routing_test_client4 51./restart_routing_test_client & 52CLIENT4_PID=$! 53 54sleep 2 55echo "----------------------------------------------" 56echo " let routingmanagerd crash (kill -9) " 57echo "----------------------------------------------" 58kill -9 $DAEMON_PID 59echo "----------------------------------------------" 60echo " restart routingmanagerd " 61echo "----------------------------------------------" 62sleep 2 63 64../examples/routingmanagerd/./routingmanagerd & 65DAEMON_PID=$! 66 67wait $SERIVCE_PID || ((FAIL+=1)) 68wait $CLIENT1_PID || ((FAIL+=1)) 69wait $CLIENT2_PID || ((FAIL+=1)) 70wait $CLIENT3_PID || ((FAIL+=1)) 71wait $CLIENT4_PID || ((FAIL+=1)) 72 73kill $DAEMON_PID 74wait $DAEMON_PID 75 76# Check if client and server both exited sucessfully and the service didnt't 77# have any open tcp/udp sockets 78if [ $FAIL -eq 0 ] 79then 80 echo "Test Succeeded" 81else 82 exit 1 83fi 84 85# NOW WITHOUT VSOMEIPD 86echo "----------------------------------------------" 87echo "----------------------------------------------" 88echo " Run test with auto configuration no deamon " 89echo "----------------------------------------------" 90echo "----------------------------------------------" 91 92sleep 2 93 94# Start the service 95export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 96./restart_routing_test_service & 97SERIVCE_PID=$! 98 99# Start the client1 100export VSOMEIP_APPLICATION_NAME=restart_routing_test_client1 101./restart_routing_test_client & 102CLIENT1_PID=$! 103 104# Start the client2 105export VSOMEIP_APPLICATION_NAME=restart_routing_test_client2 106./restart_routing_test_client & 107CLIENT2_PID=$! 108 109# Start the client3 110export VSOMEIP_APPLICATION_NAME=restart_routing_test_client3 111./restart_routing_test_client & 112CLIENT3_PID=$! 113 114# Start the client4 115export VSOMEIP_APPLICATION_NAME=restart_routing_test_client4 116./restart_routing_test_client & 117CLIENT4_PID=$! 118 119sleep 2 120echo "----------------------------------------------" 121echo " let service (routing) crash (kill -9) " 122echo "----------------------------------------------" 123kill -9 $SERIVCE_PID 124echo "----------------------------------------------" 125echo " restart service (routing) " 126echo "----------------------------------------------" 127sleep 2 128 129# Start the service 130export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 131./restart_routing_test_service & 132SERIVCE_PID=$! 133 134wait $SERIVCE_PID || ((FAIL+=1)) 135wait $CLIENT1_PID || ((FAIL+=1)) 136wait $CLIENT2_PID || ((FAIL+=1)) 137wait $CLIENT3_PID || ((FAIL+=1)) 138wait $CLIENT4_PID || ((FAIL+=1)) 139 140# Check if client and server both exited sucessfully and the service didnt't 141# have any open tcp/udp sockets 142if [ $FAIL -eq 0 ] 143then 144 echo "Test Succeeded" 145else 146 exit 1 147fi 148 149 150echo "----------------------------------------------" 151echo "----------------------------------------------" 152echo " Run test with json configuration " 153echo "----------------------------------------------" 154echo "----------------------------------------------" 155 156sleep 2 157 158export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 159../examples/routingmanagerd/./routingmanagerd & 160DAEMON_PID=$! 161 162# Start the service 163export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 164export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 165./restart_routing_test_service & 166SERIVCE_PID=$! 167 168# Start the client1 169export VSOMEIP_APPLICATION_NAME=restart_routing_test_client1 170export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 171./restart_routing_test_client & 172CLIENT1_PID=$! 173 174# Start the client2 175export VSOMEIP_APPLICATION_NAME=restart_routing_test_client2 176export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 177./restart_routing_test_client & 178CLIENT2_PID=$! 179 180# Start the client3 181export VSOMEIP_APPLICATION_NAME=restart_routing_test_client3 182export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 183./restart_routing_test_client & 184CLIENT3_PID=$! 185 186# Start the client4 187export VSOMEIP_APPLICATION_NAME=restart_routing_test_client4 188export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 189./restart_routing_test_client & 190CLIENT4_PID=$! 191 192sleep 2 193echo "----------------------------------------------" 194echo " let routingmanagerd crash (kill -9) " 195echo "----------------------------------------------" 196kill -9 $DAEMON_PID 197echo "----------------------------------------------" 198echo " restart routingmanagerd " 199echo "----------------------------------------------" 200sleep 2 201 202export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 203../examples/routingmanagerd/./routingmanagerd & 204DAEMON_PID=$! 205 206wait $SERIVCE_PID || ((FAIL+=1)) 207wait $CLIENT1_PID || ((FAIL+=1)) 208wait $CLIENT2_PID || ((FAIL+=1)) 209wait $CLIENT3_PID || ((FAIL+=1)) 210wait $CLIENT4_PID || ((FAIL+=1)) 211 212kill $DAEMON_PID 213wait $DAEMON_PID 214 215# Check if client and server both exited sucessfully and the service didnt't 216# have any open tcp/udp sockets 217if [ $FAIL -eq 0 ] 218then 219 echo "Test Succeeded" 220else 221 exit 1 222fi 223 224echo "----------------------------------------------" 225echo "----------------------------------------------" 226echo "Run test with json configuration + kill service" 227echo "----------------------------------------------" 228echo "----------------------------------------------" 229 230sleep 2 231 232export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 233../examples/routingmanagerd/./routingmanagerd & 234DAEMON_PID=$! 235 236# Start the service 237export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 238export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 239./restart_routing_test_service & 240SERIVCE_PID=$! 241 242# Start the client1 243export VSOMEIP_APPLICATION_NAME=restart_routing_test_client1 244export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 245./restart_routing_test_client & 246CLIENT1_PID=$! 247 248# Start the client2 249export VSOMEIP_APPLICATION_NAME=restart_routing_test_client2 250export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 251./restart_routing_test_client & 252CLIENT2_PID=$! 253 254# Start the client3 255export VSOMEIP_APPLICATION_NAME=restart_routing_test_client3 256export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 257./restart_routing_test_client & 258CLIENT3_PID=$! 259 260# Start the client4 261export VSOMEIP_APPLICATION_NAME=restart_routing_test_client4 262export VSOMEIP_CONFIGURATION=restart_routing_test_client.json 263./restart_routing_test_client & 264CLIENT4_PID=$! 265 266sleep 2 267echo "----------------------------------------------" 268echo " let routingmanagerd crash (kill -9) " 269echo "----------------------------------------------" 270kill -9 $DAEMON_PID 271sleep 1 272echo "----------------------------------------------" 273echo " let service crash (kill -9) " 274echo "----------------------------------------------" 275kill -9 $SERIVCE_PID 276echo "----------------------------------------------" 277echo " restart routingmanagerd " 278echo "----------------------------------------------" 279sleep 2 280 281export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 282../examples/routingmanagerd/./routingmanagerd & 283DAEMON_PID=$! 284 285echo "----------------------------------------------" 286echo " restart service " 287echo "----------------------------------------------" 288sleep 1 289 290# Start the service again 291export VSOMEIP_APPLICATION_NAME=restart_routing_test_service 292export VSOMEIP_CONFIGURATION=restart_routing_test_service.json 293./restart_routing_test_service & 294SERIVCE_PID=$! 295 296wait $SERIVCE_PID || ((FAIL+=1)) 297wait $CLIENT1_PID || ((FAIL+=1)) 298wait $CLIENT2_PID || ((FAIL+=1)) 299wait $CLIENT3_PID || ((FAIL+=1)) 300wait $CLIENT4_PID || ((FAIL+=1)) 301 302kill $DAEMON_PID 303wait $DAEMON_PID 304 305# Check if client and server both exited sucessfully and the service didnt't 306# have any open tcp/udp sockets 307if [ $FAIL -eq 0 ] 308then 309 exit 0 310else 311 exit 1 312fi 313