179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin#!/bin/bash
279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# Copyright (C) 2016 The Android Open Source Project
379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin#
479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# Licensed under the Apache License, Version 2.0 (the "License");
579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# you may not use this file except in compliance with the License.
679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# You may obtain a copy of the License at
779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin#
879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin#      http://www.apache.org/licenses/LICENSE-2.0
979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin#
1079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# Unless required by applicable law or agreed to in writing, software
1179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# distributed under the License is distributed on an "AS IS" BASIS,
1279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# See the License for the specific language governing permissions and
1479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# limitations under the License.
1579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
1679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin# Include some functions from common.sh.
1779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei LinSCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
1879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Linsource ${SCRIPT_DIR}/common.sh
1979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
2079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei LinOUT_DATA_DIR="test_out"
2179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
2279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei LinDEBUG=false
2379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
2479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
2579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Linapply_overlay() {
2679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local overaly="$1"
2779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local base_dts="$2"
2879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local overlay_dts="$3"
2979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local merged_dts="$4"
3079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
3179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  ./apply_overlay.sh "--$overaly" "$base_dts" "$overlay_dts" "$merged_dts"
3279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin}
3379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
3479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Linrun_stress_test() {
3579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # see ufdt_gen_test_dts.c for detail
3679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local node_depth="$1"
3779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local node_unused="$2"
3879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local node_count="$3"
3979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local append_count="$4"
4079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local override_count="$5"
4179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
4279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  mkdir -p "$OUT_DATA_DIR" >& /dev/null
4379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
4479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  #
4579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # Prepare dtb and dtbo files
4679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  #
4779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local base_dts="${OUT_DATA_DIR}/base.dts"
4879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  echo "  Base DT: depth=$node_depth unused=$node_unused nodes=$node_count"
4979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  ufdt_gen_test_dts -n $node_count -d $node_depth -u $node_unused \
5079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    -o "$base_dts"
5179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  if $DEBUG; then
5279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    cat "$base_dts"
5379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  fi
5479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
5579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local overlay_dts="${OUT_DATA_DIR}/overlay.dts"
5679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  echo "  Overlay DT: append=$append_count override=$override_count"
5779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  ufdt_gen_test_dts -p -a $append_count -w $override_count \
5879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    -o "$overlay_dts"
5979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  if $DEBUG; then
6079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    cat "$overlay_dts"
6179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  fi
6279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
6379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  local merged_dts="${OUT_DATA_DIR}/overlay_merged.dts"
6479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  apply_overlay ufdt $base_dts $overlay_dts $merged_dts
6579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
6679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  rm -rf "$OUT_DATA_DIR"
6779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin}
6879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
6979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Linmain() {
7079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  alert "========== Running Stress Tests =========="
7179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
7279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  if [ -z "$ANDROID_BUILD_TOP" ]; then
7379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    die "Run envsetup.sh / lunch yet?"
7479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  fi
7579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
7679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  if ! command_exists ufdt_gen_test_dts ||
7779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin     ! command_exists dtc; then
7879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    die "Run mmma $(dirname $SCRIPT_DIR) yet?"
7979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  fi
8079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
8179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  (
8279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
8379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # cd to ${SCRIPT_DIR} in a subshell because gen_test.sh uses relative
8479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # paths for dependent files.
8579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  cd "${SCRIPT_DIR}"
8679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
8779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # node_depth      = 2
8879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # node_unused     = 0
8979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # node_count      = 5000
9079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # append_count    = 2500
9179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  # override_count  = 2500
9279ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  run_stress_test 2 0 5000 2500 2500
9379ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
9479ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  )
9579ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
9679ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  if [ $? -ne 0 ]; then
9779ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin    die "Some test cases failed, please check error message..."
9879ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin  fi
9979ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin}
10079ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Lin
10179ba2aefbbc7fcf8f8b60b5efab417e5684b13b6SzuWei Linmain "$@"
102