github.com/metacurrency/holochain@v0.1.0-alpha-26.0.20200915073418-5c83169c9b5b/bin/holochain.app.testScenario (about) 1 #!/usr/bin/env bash 2 echo "HC: $0" 3 4 holochainBinDir="$GOPATH/src/github.com/holochain/holochain-proto/bin" 5 6 scenarioName=$1 7 8 #set the HOLOCHAIN_SYSTEM_BIN variable 9 . $holochainBinDir/holochain.system.checkInstalled || { echo "HC: cannot find holochain bin directory. exiting" && exit 1 ; } 10 #set the HOLOCHAIN_APPNAME and HOLOCHAIN_APPDIR variables 11 . $holochainBinDir/holochain.app.findAppDir || exit 1 12 13 14 export dockerBaseRun=" -e LOCAL_USER_ID=`id -u $USER` " 15 export LOCAL_USER_ID=`id -u $USER` 16 17 . $HOLOCHAIN_SYSTEM_BIN/app/createRuntime || exit 1 18 19 #creates a single script for each role in the testScenario, which is run by the respective container 20 $HOLOCHAIN_SYSTEM_BIN/app/testScenario.createClusterScripts $scenarioName || exit 1 21 22 #begin log for this session 23 logFile=$HOLOCHAIN_APPLOGDIR/testScenario.$scenarioName.log 24 printf "########################################################################\n########################################################################\n########################################################################\n" | tee -a $logFile 25 echo "HC: testScenario $scenarioName started `date`" | tee -a $HOLOCHAIN_APPLOGDIR/cluster.log >> $logFile 26 27 set -x 28 29 ####docker stuff 30 mkdir -p "$HOLOCHAIN_APPDIR/runtime/docker" > /dev/null 31 #cp the Dockerfile in preparation for dependency injection 32 cp $HOLOCHAIN_SYSTEM_BIN/../docker/app.docker/Dockerfile.BASE $HOLOCHAIN_APPDIR/runtime/docker/Dockerfile.BASE 33 #build the image to use as the base for the bs instance and hc instances 34 35 holochainImageTag="holochain.app.testing.$HOLOCHAIN_APP_MACHINENAME" 36 docker image inspect Holochain/holochain-proto/core.docker.forapptests || { printf "HC: no current docker image for testing app.\n\n run: $ holochain.system.buildImageForAppTests" && exit 1 ; } 37 docker build --no-cache=true -f $HOLOCHAIN_APPDIR/runtime/docker/Dockerfile.BASE -t $holochainImageTag $HOLOCHAIN_APPDIR 38 39 40 #TODO COMMENT AND MAKE WORK 41 #CONSTANTS 42 systemAppDockerDir="$HOLOCHAIN_SYSTEM_BIN/../docker/app.docker" 43 appAppDockerDir="$HOLOCHAIN_APPDIR/runtime/docker" 44 45 #appScriptDir="$HOLOCHAIN_APPDIR/runtime/Scripts" 46 47 #configureThis 48 systemDockerCompose="$systemAppDockerDir/docker-compose.with.bs.syncedHCMultiNode.yml" 49 #constants 50 appDockerCompose="$HOLOCHAIN_APPDIR/__tmp__.holochain.2134837348734.docker-compose.runCluster.yml" 51 rm $appDockerCompose &> /dev/null 52 ln $systemDockerCompose $appDockerCompose 53 54 #these depend on what your systemDockerCompose file requires 55 dockerfiles="app.seedService app.bsService app.syncedHCMultiNode app.syncedHCMultiNode.releaseSyncService app.externalStartEvent" 56 for dockerFileName in $dockerfiles 57 do 58 cp "$systemAppDockerDir/Dockerfile.$dockerFileName" "$appAppDockerDir/Dockerfile.$dockerFileName" 59 done 60 sed -i'' s/{{FROM_DOCKERIMAGETAG}}/$holochainImageTag/g $appAppDockerDir/Dockerfile.app.* 61 62 #give access to the scripts .. maybe, might not work ( symlinks ) 63 ln -s $HOLOCHAIN_SYSTEM_BIN/../docker/app.docker $HOLOCHAIN_APPDIR/runtime/Scripts 64 65 #add own flowcontrol over docker start order 66 mkdir -p $HOLOCHAIN_APPDIR/runtime/cluster/sync &> /dev/null 67 touch $HOLOCHAIN_APPDIR/runtime/cluster/sync/externalStartEvent || { echo "HC: Could not add start event" && exit 1 ; } 68 69 echo "$HOLOCHAIN_SYSTEM_BIN/app/runCluster $scenarioName $systemDockerCompose $logFile" 70 $HOLOCHAIN_SYSTEM_BIN/app/runCluster $scenarioName $logFile 71 72 rm $appDockerCompose & 73 rm -r $HOLOCHAIN_APPDIR/runtime & 74 75 set +x 76 77 #otherwise bash prompt gets injured 78 sleep 1