summaryrefslogtreecommitdiff
path: root/eclass/tests/eapi7-ver_benchmark.sh
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /eclass/tests/eapi7-ver_benchmark.sh
reinit the tree, so we can have metadata
Diffstat (limited to 'eclass/tests/eapi7-ver_benchmark.sh')
-rwxr-xr-xeclass/tests/eapi7-ver_benchmark.sh147
1 files changed, 147 insertions, 0 deletions
diff --git a/eclass/tests/eapi7-ver_benchmark.sh b/eclass/tests/eapi7-ver_benchmark.sh
new file mode 100755
index 000000000000..c46713713368
--- /dev/null
+++ b/eclass/tests/eapi7-ver_benchmark.sh
@@ -0,0 +1,147 @@
+#!/bin/bash
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+source tests-common.sh
+
+inherit eapi7-ver versionator
+
+cutting() {
+ local x
+ for x in {1..1000}; do
+ ver_cut 1 1.2.3
+ ver_cut 1-2 1.2.3
+ ver_cut 2- 1.2.3
+ ver_cut 1- 1.2.3
+ ver_cut 3-4 1.2.3b_alpha4
+ ver_cut 5 1.2.3b_alpha4
+ ver_cut 1-2 .1.2.3
+ ver_cut 0-2 .1.2.3
+ ver_cut 2-3 1.2.3.
+ ver_cut 2- 1.2.3.
+ ver_cut 2-4 1.2.3.
+ done >/dev/null
+}
+
+cutting_versionator() {
+ local x
+ for x in {1..100}; do
+ get_version_component_range 1 1.2.3
+ get_version_component_range 1-2 1.2.3
+ get_version_component_range 2- 1.2.3
+ get_version_component_range 1- 1.2.3
+ get_version_component_range 3-4 1.2.3b_alpha4
+ get_version_component_range 5 1.2.3b_alpha4
+ get_version_component_range 1-2 .1.2.3
+ get_version_component_range 0-2 .1.2.3
+ get_version_component_range 2-3 1.2.3.
+ get_version_component_range 2- 1.2.3.
+ get_version_component_range 2-4 1.2.3.
+ done >/dev/null
+}
+
+replacing() {
+ local x
+ for x in {1..1000}; do
+ ver_rs 1 - 1.2.3
+ ver_rs 2 - 1.2.3
+ ver_rs 1-2 - 1.2.3.4
+ ver_rs 2- - 1.2.3.4
+ ver_rs 2 . 1.2-3
+ ver_rs 3 . 1.2.3a
+ ver_rs 2-3 - 1.2_alpha4
+ #ver_rs 3 - 2 "" 1.2.3b_alpha4
+ #ver_rs 3-5 _ 4-6 - a1b2c3d4e5
+ ver_rs 1 - .1.2.3
+ ver_rs 0 - .1.2.3
+ done >/dev/null
+}
+
+replacing_versionator() {
+ local x
+ for x in {1..100}; do
+ replace_version_separator 1 - 1.2.3
+ replace_version_separator 2 - 1.2.3
+ replace_version_separator 1-2 - 1.2.3.4
+ replace_version_separator 2- - 1.2.3.4
+ replace_version_separator 2 . 1.2-3
+ replace_version_separator 3 . 1.2.3a
+ replace_version_separator 2-3 - 1.2_alpha4
+ #replace_version_separator 3 - 2 "" 1.2.3b_alpha4
+ #replace_version_separator 3-5 _ 4-6 - a1b2c3d4e5
+ replace_version_separator 1 - .1.2.3
+ replace_version_separator 0 - .1.2.3
+ done >/dev/null
+}
+
+comparing() {
+ local x
+ for x in {1..1000}; do
+ ver_test 1b_p1 -le 1_p1
+ ver_test 1.1b -le 1.1
+ ver_test 12.2.5 -le 12.2b
+ ver_test 4.0 -le 5.0
+ ver_test 5 -le 5.0
+ ver_test 1.0_pre2 -le 1.0_p2
+ ver_test 1.0_alpha2 -le 1.0_p2
+ ver_test 1.0_alpha1 -le 1.0_beta1
+ ver_test 1.0_beta3 -le 1.0_rc3
+ ver_test 1.001000000000000001 -le 1.001000000000000002
+ done
+}
+
+comparing_versionator() {
+ local x
+ for x in {1..100}; do
+ version_is_at_least 1b_p1 1_p1
+ version_is_at_least 1.1b 1.1
+ version_is_at_least 12.2.5 12.2b
+ version_is_at_least 4.0 5.0
+ version_is_at_least 5 5.0
+ version_is_at_least 1.0_pre2 1.0_p2
+ version_is_at_least 1.0_alpha2 1.0_p2
+ version_is_at_least 1.0_alpha1 1.0_beta1
+ version_is_at_least 1.0_beta3 1.0_rc3
+ version_is_at_least 1.001000000000000001 1.001000000000000002
+ done
+}
+
+get_times() {
+ local factor=${1}; shift
+ echo "${*}"
+ local real=()
+ local user=()
+
+ for x in {1..5}; do
+ while read tt tv; do
+ case ${tt} in
+ real) real+=( $(dc -e "${tv} ${factor} * p") );;
+ user) user+=( $(dc -e "${tv} ${factor} * p") );;
+ esac
+ done < <( ( time -p "${@}" ) 2>&1 )
+ done
+
+ [[ ${#real[@]} == 5 ]] || die "Did not get 5 real times"
+ [[ ${#user[@]} == 5 ]] || die "Did not get 5 user times"
+
+ local sum
+ for v in real user; do
+ vr="${v}[*]"
+ sum=$(dc -e "${!vr} + + + + 3 k 5 / p")
+
+ vr="${v}[@]"
+ printf '%s %4.2f %4.2f %4.2f %4.2f %4.2f => %4.2f avg\n' \
+ "${v}" "${!vr}" "${sum}"
+ done
+}
+
+export LC_ALL=C
+
+get_times 1 cutting
+get_times 10 cutting_versionator
+get_times 1 replacing
+get_times 10 replacing_versionator
+get_times 1 comparing
+get_times 10 comparing_versionator