#!/bin/bash
#
-# Copyright (C) - 2017 Julien Desfossez <jdesfossez@efficios.com>
+# Copyright (C) 2017 Julien Desfossez <jdesfossez@efficios.com>
#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+# SPDX-License-Identifier: LGPL-2.1-only
# Clean everything under directory but keep directory
function clean_path ()
local_path=$1
today=$2
app_path=$3
- domain=$4
- per_pid=$5
+ shift 3
+ domains=("$@")
local path=
local chunk_pattern=$(get_chunk_pattern ${today})
# Make sure we don't have anything else in the first 2 chunk directories
# besides the kernel folder.
for chunk in $(seq 0 1); do
- nr_stale=$(ls -A $local_path/${chunk_pattern}-${chunk} | grep -v $domain | wc -l)
- ok $nr_stale "No stale folders in chunk ${chunk} directory"
+ local stale_files
+
+ stale_files=$(ls -A $local_path/${chunk_pattern}-${chunk})
+ for domain in "${domains[@]}"; do
+ stale_files=$(echo "$stale_files" | grep -v $domain)
+ done
+ nr_stale=$(echo -n "$stale_files" | wc -l)
+ ok "$nr_stale" "No stale folders in chunk ${chunk} directory"
done
# We expect a complete session of 30 events
# chunks should be empty folders
if test $per_pid = 1; then
validate_trace_empty $local_path/${chunk_pattern}-0
- nr=$(ls $local_path/${chunk_pattern}-1/ | wc -l)
- test $nr = 0
+ nr=$(find $local_path/${chunk_pattern}-1/ | wc -l)
+ # contains self and may contain ust/ subdir (local) or not (remote).
+ test $nr -le 2
ok $? "Chunk 2 is empty"
- nr=$(ls $local_path/${chunk_pattern}-2/ | wc -l)
- test $nr = 0
+ nr=$(find $local_path/${chunk_pattern}-2/ | wc -l)
+ # contains self and may contain ust/ subdir (local) or not (remote).
+ test $nr -le 2
ok $? "Chunk 3 is empty"
else
while [ $i -le $expected_chunks ]; do
fi
shopt -u extglob
}
+
+function trace_until_n_archives ()
+{
+ local produce_events=$1
+ local trace_path=$2
+ local target_archive_count=$3
+ local trace_size_cutoff=$4
+ local archive_count=0
+ local trace_size=0
+
+ diag "Waiting for $target_archive_count size-based rotations to occur"
+ while [[ archive_count -lt $target_archive_count && $trace_size -lt $trace_size_cutoff ]]
+ do
+ archive_count=$(find "$trace_path" -mindepth 2 -maxdepth 2 -type d -path "*archives*" | wc -l)
+ trace_size=$(du -b "$trace_path" | tail -n1 | cut -f1)
+ $produce_events 2000
+ done
+
+ if [[ $trace_size -ge $trace_size_cutoff ]]; then
+ diag "Exceeded size cutoff of $trace_size_cutoff bytes while waiting for $target_archive_count rotations"
+ fi
+
+ [[ $archive_count -eq $target_archive_count ]]
+ ok $? "Found $target_archive_count trace archives resulting from trace archive rotations"
+}