[146716] trunk/base/src/port1.0/tests/portbuild.test
cal at macports.org
cal at macports.org
Tue Mar 15 10:49:37 PDT 2016
Revision: 146716
https://trac.macports.org/changeset/146716
Author: cal at macports.org
Date: 2016-03-15 10:49:37 -0700 (Tue, 15 Mar 2016)
Log Message:
-----------
port1.0: Add tests for portbuild::build_getjobs
Added Paths:
-----------
trunk/base/src/port1.0/tests/portbuild.test
Added: trunk/base/src/port1.0/tests/portbuild.test
===================================================================
--- trunk/base/src/port1.0/tests/portbuild.test (rev 0)
+++ trunk/base/src/port1.0/tests/portbuild.test 2016-03-15 17:49:37 UTC (rev 146716)
@@ -0,0 +1,139 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+
+package require tcltest 2
+namespace import tcltest::*
+
+set pwd [file dirname [file normalize $argv0]]
+
+source ../port_test_autoconf.tcl
+package require macports 1.0
+
+array set ui_options {}
+#set ui_options(ports_debug) yes
+#set ui_options(ports_verbose) yes
+mportinit ui_options
+
+# Provide a stub for the port callback mechanism
+namespace eval port {
+ proc register_callback {args} {}
+ proc run_callbacks {args} {}
+}
+
+package require portbuild 1.0
+
+set build_getjobs_fixture_setup {
+ # Move away sysctl and replace it with our own implementation
+ rename sysctl sysctl_backup
+ proc sysctl {sysctlname} {
+ global _activecpus _memsize _activecpus_fail _memsize_fail
+ switch -exact $sysctlname {
+ hw.activecpu {
+ if {${_activecpus_fail}} {
+ error "error requested"
+ }
+ return ${_activecpus}
+ }
+ hw.memsize {
+ if {${_memsize_fail}} {
+ error "error requested"
+ }
+ return [expr {${_memsize} * 1024 * 1024 * 1024}]
+ }
+ default {
+ error "Unknown sysctl property $sysctlname"
+ }
+ }
+ }
+}
+set build_getjobs_fixture_cleanup {
+ global buildmakejobs
+
+ # Restore modified state
+ rename sysctl ""
+ rename sysctl_backup sysctl
+}
+
+test build_getjobs_auto_cpubound {
+ Verify that portbuild::build_getjobs correctly computes the number of parallel executors in the CPU-bound case
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ # Make sure that buildmakejobs is 0 so the auto-detection is being run
+ set buildmakejobs 0
+ set _activecpus 8
+ set _activecpus_fail no
+ set _memsize 16
+ set _memsize_fail no
+
+ return [portbuild::build_getjobs]
+} -result 8
+
+test build_getjobs_auto_memlimited {
+ Verify that portbuild::build_getjobs correctly computes the number of parallel executors in the memory-bound case
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ # Make sure that buildmakejobs is 0 so the auto-detection is being run
+ set buildmakejobs 0
+ set _activecpus 8
+ set _activecpus_fail no
+ set _memsize 4
+ set _memsize_fail no
+
+ return [portbuild::build_getjobs]
+} -result 5
+
+test build_getjobs_configured {
+ Verify that portbuild::build_getjobs correctly returns the number of configured parallel executors
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ set buildmakejobs 42
+ return [portbuild::build_getjobs]
+} -result 42
+
+test build_getjobs_nonnegative {
+ Verify that portbuild::build_getjobs doesn't return negative numbers, even if configured
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ set buildmakejobs -42
+ return [portbuild::build_getjobs]
+} -result 1
+
+test build_getjobs_nonnumeric {
+ Verify that portbuild::build_getjobs doesn't return junk if the configuration is non-numeric
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ set buildmakejobs "foobar"
+ return [portbuild::build_getjobs]
+} -result 1
+
+test build_getjobs_cpus_fail {
+ Verify that a failing [sysctl hw.activecpus] will print a warning
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ # Make sure that buildmakejobs is 0 so the auto-detection is being run
+ set buildmakejobs 0
+ set _activecpus_fail yes
+
+ return [portbuild::build_getjobs]
+} -result 2 -match glob -errorOutput "Warning:*failed to determine the number of available CPUs*"
+
+test build_getjobs_mem_fail {
+ Verify that a failing [sysctl hw.memsize] will print a warning
+} -setup $build_getjobs_fixture_setup -cleanup $build_getjobs_fixture_cleanup -body {
+ global buildmakejobs
+
+ # Make sure that buildmakejobs is 0 so the auto-detection is being run
+ set buildmakejobs 0
+ set _activecpus 8
+ set _activecpus_fail no
+ set _memsize_fail yes
+
+ return [portbuild::build_getjobs]
+} -result 8
+
+cleanupTests
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20160315/50c1e487/attachment.html>
More information about the macports-changes
mailing list