mars/test_suite/default-resource.conf
2014-02-05 08:43:18 +01:00

134 lines
5.3 KiB
Bash

#!/bin/bash
# Copyright 2013 Frank Liepold / 1&1 Internet AG
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
#####################################################################
## defaults for module resource
##
## this module administrates the test resources
## the names of the resources used in the current test. Must be a subset of
## lv_config_lv_name_list (default-lv_config.conf)
## These resource are created on all hosts in main_host_list using the first
## host as primary and the followings as secondaries
resource_name_list=(lv-1-2)
## mount points of the data devices
## resource_set_globals_depending_on_resource_name_list fills the list
declare -g -A resource_mount_point_list
## resource indexed list of resource directories in main_mars_directory
## resource_set_globals_depending_on_resource_name_list fills the list
declare -g -A resource_dir_list
## resource indexed list of filesystem types of the data devices
## resource_set_globals_depending_on_resource_name_list fills the list
declare -g -A resource_fs_type_list
## resource indexed list of resource specific messages to be grepped for in
## abnormal situations
## resource_set_globals_depending_on_resource_name_list fills the list
declare -g -A resource_mars_dir_full_err_pattern_list
## because some global variable depend from other global variables
## (e.g. resource_mount_point_list from resource_name_list) it's
## necessary to give *.conf files the possibility if they change a global
## variable to reset all dependend global variables.
## This can be done by a call to this function.
function resource_set_globals_depending_on_resource_name_list
{
# maps resource name lv-<i>-<size> to /mnt/mars-test-<i>
eval resource_mount_point_list=($(for i in ${!resource_name_list[*]};do printf "[${resource_name_list[$i]}]=/mnt/mars-test-$(($i + 1)) ";done))
# the resource dir of resource <res> is $main_mars_directory/resource-<res>
eval resource_dir_list=($(for i in ${!resource_name_list[*]};do printf "[${resource_name_list[$i]}]=$main_mars_directory/resource-${resource_name_list[$i]} ";done))
# use xfs for all data devices
eval resource_fs_type_list=($(for i in ${!resource_name_list[*]};do printf "[${resource_name_list[$i]}]=xfs ";done))
## messages to be grepped for in abnormal situations
resource_mars_dir_full_err_pattern_list["jammed"]='DISK SPACE IS EXTREMELY LOW on '"${resource_dir_list[${resource_name_list[0]}]}"
resource_mars_dir_full_err_pattern_list["sequence_hole"]='EMERGENCY MODE on '"${resource_dir_list[${resource_name_list[0]}]}"'.*stopped transaction logging.*created a hole in the logfile sequence'
}
resource_set_globals_depending_on_resource_name_list
## mounting of the data device must fail on a secondary resource. Because
## the marsadm join-resource command may return *before* the kernel has locked
## the data device, mounting may succeed in some cases. So we need to try
## the join-resource again.
resource_number_of_mount_join_resource_cycles=4
## create-resource may fail, because the data device is still locked by
## the kernel. So we try it a few times again.
resource_number_of_create_retries=5
## because nearly all tests start with create-resource we are using
## --force to avoid errors caused by already existing resource directories
resource_create_flag='--force'
## maxtime to wait for successfull ls /dev/mars - command
resource_maxtime_to_wait_for_ls=10
## max number of loops to wait for leave-resource to be done
resource_maxloop_leave_resource=10
## maxtime to wait for initial sync after join resource to stop
resource_maxtime_initial_sync=300
## time for which the amount of data to sync must be constant
## to declare the sync process as inactive
resource_time_constant_initial_sync=10
## time for which the amount of data to apply must be constant to declare
## the apply process as having stopped
resource_time_constant_apply=5
## time for which the amount of data to fetch must be constant to declare
## the fetch process as having stopped
resource_time_constant_fetch=10
## time for which the amount of data to sync must be constant
## to declare the sync process as inactive
resource_time_constant_sync=10
## maxtime to wait for apply to stop (after pause-apply)
resource_maxtime_apply=300
## maxtime to wait for fetch to stop (after pause-fetch)
resource_maxtime_fetch=300
## maxtime to wait for sync to stop
resource_maxtime_sync=300
## maxtime to wait for disk or replication state to take a required value
resource_maxtime_state_constant=300
## flag if a file system on the data device will be used for writing data
resource_fs_on_data_device_necessary=1
## flag if /mars should be filled by writing the data device or by writing
## a file
resource_use_data_dev_writes_to_fill_mars_dir=1
## file to use for filling /mars
resource_big_file=$main_mars_directory/mars_test_bigfile
## msg files
declare -g -A resource_msgfile_list
resource_msgfile_list=([err]='3.error.status' [warn]='2.warn.status')
## file used to reset after emergency mode
resource_proc_sys_mars_reset_emergency_file="/proc/sys/mars/mars_reset_emergency"
resource_mars_dir_full_warn_pattern_list[0]='EMERGENCY: the space on '$main_mars_directory'/ is very low.'