#!/bin/bash # Global variables REPO="" # Path to repo CLEAR_CACHE=true # Clear cache? # Param check if [ $# -lt "1" -o $# -gt "2" ]; then echo "Usage: `basename $0` [--cache]" exit 1 fi if [ $1 == "-h" ]; then echo "Tool for comparsion of speed between createrepo and createrepo_c." echo "WARNING! This tool changes (removes) repodata if exits!" echo "Usage: `basename $0` [--cache]" echo "Options:" echo " --cache Skip cleaning of disk cache" exit 0 fi if [ $# -eq "2" ]; then if [ $2 != "--cache" ]; then echo "Unknown param $2" exit 1 else CLEAR_CACHE=false fi fi if $CLEAR_CACHE; then if [ `id --user` != "0" ]; then echo "Note:" echo "You are not root!" echo "For cleaning disk caches you have to have a root permissions." echo "You will be asked for sudo password." echo "(Maybe even several times)" sudo bash -c "echo \"OK\"" echo fi fi REPO=$1 if [ ! -d "$REPO" ]; then echo "Directory $REPO doesn't exists" exit 1 fi # Main function clear_cache { # Clear cache if CLEAR_CACHE is true if ! $CLEAR_CACHE; then return fi if [ `id --user` != "0" ]; then sudo bash -c "echo 3 > /proc/sys/vm/drop_caches" else echo 3 > /proc/sys/vm/drop_caches fi } function run { # Run - entire metadata from scratch rm -rf "$REPO"/.repodata # Just in case previous run of createrepo_c failed rm -rf "$REPO"/repodata echo -e "\n\$ createrepo_c $1 $REPO" clear_cache (time createrepo_c $1 "$REPO") 2>&1 rm -rf "$REPO"/repodata echo -e "\n\$ createrepo $1 $REPO" clear_cache (time createrepo $1 "$REPO") 2>&1 echo } function dirty_run { # Run - repodata already exists in place rm -rf "$REPO"/.repodata # Just in case previous run of createrepo_c failed # Prepare metadata rm -rf "$REPO"/repodata createrepo --quiet --database "$REPO" > /dev/null echo -e "\n\$ createrepo_c $1 $REPO" clear_cache (time createrepo_c $1 "$REPO") 2>&1 # Prepare metadata rm -rf "$REPO"/repodata createrepo --quiet --database "$REPO" > /dev/null echo -e "\n\$ createrepo $1 $REPO" clear_cache (time createrepo $1 "$REPO") 2>&1 echo } echo "Test setup" echo "+---------------------------------------------------------------+" echo "System:" uname --operating-system --kernel-release if [ -e /etc/issue ]; then head -q -n 1 /etc/issue fi grep "model name" /proc/cpuinfo uname --processor grep "MemTotal" /proc/meminfo echo echo "Package versions:" rpm -qa|grep createrepo echo echo "Test repo:" echo "$REPO" echo echo "Case-1: generating entire metadata from scratch" echo "+---------------------------------------------------------------+" echo "+ With sqlite DB" echo "+----------------------+" run "--database" echo "+ Without sqlite DB" echo "+----------------------+" run "--no-database" echo "Case-2: re-generating metadata (with existing repodata in place)" echo "+---------------------------------------------------------------+" echo "+ With sqlite DB" echo "+----------------------+" dirty_run "--update --database" echo "+ Without sqlite DB" echo "+----------------------+" dirty_run "--update --no-database" # Final clean up rm -rf "$REPO"/repodata rm -rf "$REPO"/.repodata