blob: 4ddbcdbfb5bb2238ea200e817016a38e9cc76aa5 [file] [log] [blame]
#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
TITLE=AzureDatastoreTest
BENCH="ReadBinaryPropertiesTest"
ADMIN="false" # true"
RUNTIME=360
RANDOM_USER="true"
FIXS="Oak-Segment-Azure"
PROFILE=false
#DEBUG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
DEBUG=""
AZURITE="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1"
# Set DataStore connection string using DS_AZURE_CONNECTION_STRING environment variable. If not set, defaults to Azurite default test credentials
DATASTORE_AZURE_CONNECTION=${DS_AZURE_CONNECTION_STRING:-$AZURITE}
# Set SegmentStore connection string using AZURE_CONNECTION_STRING environment variable. If not set, defaults to Azurite default test credentials
AZURE_CONNECTION=${AZURE_CONNECTION_STRING:-$AZURITE}
AZURE_CONTAINER="segment"
AZURE_ROOT_PATH="/aem"
DATASTORE_CLASS="org.apache.jackrabbit.oak.blob.cloud.azure.blobstorage.AzureDataStore"
BINARIES_THRESHOLD="512"
TREE_MAX_NODES=300
TREE_BINARY_SIZE=100000
LOG=$TITLE"_$(date +'%Y%m%d_%H%M%S').csv"
echo "Benchmarks: $BENCH" > $LOG
echo "Fixtures: $FIXS" >> $LOG
echo "Admin User: $ADMIN" >> $LOG
echo "Runtime: $RUNTIME" >> $LOG
echo "Random User: $RANDOM_USER" >> $LOG
echo "Profiling: $PROFILE" >> $LOG
echo "Tree - Max nodes: $TREE_MAX_NODES" >> $LOG
echo "Tree - binary value size: $TREE_BINARY_SIZE" >> $LOG
echo "--------------------------------------" >> $LOG
rm -rf target/oak-benchmarks-*-tests.jar # remove unused but conflicting jar, if present
# Generate Datastore config file. Escape `=` in connection string
echo "azureConnectionString=\"$DATASTORE_AZURE_CONNECTION\"" | sed -e 's/=/\\=/g' -e 's/\\=/=/1' > target/datastore.properties
# Set DataStore#minRecordLength to same value as BINARIES_THRESHOLD to force writing binary records to the BlobStore instead of keeping them in memory
echo "minRecordLength=\"$BINARIES_THRESHOLD\"" >> target/datastore.properties
# Disable local caching of binary data
echo "cacheSize=\"0\"" >> target/datastore.properties
for bm in $BENCH
do
for user in $ADMIN
do
# we start new VMs for each fixture to minimize memory impacts between them
for fix in $FIXS
do
echo "Executing benchmarks as admin: $user on $fix" | tee -a $LOG
echo "-----------------------------------------------------------" | tee -a $LOG
rm -rf target/$FIXS-* # Remove dangling local repository caches, if any
cmd="java $DEBUG -Xmx2048m -Dprofile=$PROFILE -Druntime=$RUNTIME -DskipWarmup=true -DmaxNodes=$TREE_MAX_NODES -DbinaryValueSize=$TREE_BINARY_SIZE -DdataStore=$DATASTORE_CLASS -Dds.config=target/datastore.properties -jar target/oak-benchmarks-*.jar benchmark --csvFile $LOG --runAsAdmin $user --report false --randomUser $RANDOM_USER --binariesInlineThreshold $BINARIES_THRESHOLD --azure $AZURE_CONNECTION --azureContainerName $AZURE_CONTAINER --azureRootPath $AZURE_ROOT_PATH $bm $fix"
echo $cmd
$cmd
done
done
done
echo "-----------------------------------------"
echo "Benchmark completed. see $LOG for details:"
cat $LOG