Commit de7e7c4e authored by Hunter Loftis's avatar Hunter Loftis

tests and implementation for WEB_CONCURRENCY

parent 89c56f32
...@@ -215,6 +215,7 @@ write_profile() { ...@@ -215,6 +215,7 @@ write_profile() {
mkdir -p $build_dir/.profile.d mkdir -p $build_dir/.profile.d
echo "export PATH=\"\$HOME/.heroku/node/bin:\$HOME/bin:\$HOME/node_modules/.bin:\$PATH\"" > $build_dir/.profile.d/nodejs.sh echo "export PATH=\"\$HOME/.heroku/node/bin:\$HOME/bin:\$HOME/node_modules/.bin:\$PATH\"" > $build_dir/.profile.d/nodejs.sh
echo "export NODE_HOME=\"\$HOME/.heroku/node\"" >> $build_dir/.profile.d/nodejs.sh echo "export NODE_HOME=\"\$HOME/.heroku/node\"" >> $build_dir/.profile.d/nodejs.sh
cat $bp_dir/lib/concurrency.sh >> $build_dir/.profile.d/nodejs.sh
} }
write_export() { write_export() {
......
calculate_concurrency() {
MEMORY_AVAILABLE=${MEMORY_AVAILABLE-$(detect_memory 512)}
WEB_MEMORY=${WEB_MEMORY-512}
WEB_CONCURRENCY=${WEB_CONCURRENCY-$((MEMORY_AVAILABLE/WEB_MEMORY))}
if (( WEB_CONCURRENCY < 1 )); then
WEB_CONCURRENCY=1
elif (( WEB_CONCURRENCY > 32 )); then
WEB_CONCURRENCY=32
fi
WEB_CONCURRENCY=$WEB_CONCURRENCY
}
log_concurrency() {
echo "Detected $MEMORY_AVAILABLE MB available memory, $WEB_MEMORY MB limit per process (WEB_MEMORY)"
echo "Recommending WEB_CONCURRENCY=$WEB_CONCURRENCY"
}
detect_memory() {
local default=$1
local limit=$(ulimit -u)
case $limit in
256) echo "512";;
512) echo "1024";;
32768) echo "6144";;
*) echo "$default";;
esac
}
calculate_concurrency
log_concurrency
export MEMORY_AVAILABLE=$MEMORY_AVAILABLE
export WEB_MEMORY=$WEB_MEMORY
export WEB_CONCURRENCY=$WEB_CONCURRENCY
...@@ -18,13 +18,6 @@ testDetectWithoutPackageJson() { ...@@ -18,13 +18,6 @@ testDetectWithoutPackageJson() {
assertCapturedError 1 "" assertCapturedError 1 ""
} }
testUnstableVersion() {
compile "unstable-version"
assertCaptured "Resolving node version 0.11.x via semver.io"
assertCaptured "Downloading and installing node 0.11"
assertCapturedSuccess
}
testBadJson() { testBadJson() {
compile "bad-json" compile "bad-json"
assertCaptured "Build failed" assertCaptured "Build failed"
...@@ -68,13 +61,12 @@ testStableVersion() { ...@@ -68,13 +61,12 @@ testStableVersion() {
assertCapturedSuccess assertCapturedSuccess
} }
testUnstableVersion() {
compile "unstable-version"
assertCaptured "Resolving node version 0.11.x via semver.io"
assertCaptured "Downloading and installing node 0.11"
assertCapturedSuccess
}
testOldNpm() { testOldNpm() {
compile "old-npm" compile "old-npm"
...@@ -366,6 +358,42 @@ testMultiExport() { ...@@ -366,6 +358,42 @@ testMultiExport() {
assertCapturedSuccess assertCapturedSuccess
} }
testConcurrency1X() {
MEMORY_AVAILABLE=512 capture ${bp_dir}/lib/concurrency.sh
assertCaptured "Detected 512 MB available memory, 512 MB limit per process (WEB_MEMORY)"
assertCaptured "Recommending WEB_CONCURRENCY=1"
assertCapturedSuccess
}
testConcurrency2X() {
MEMORY_AVAILABLE=1024 capture ${bp_dir}/lib/concurrency.sh
assertCaptured "Detected 1024 MB available memory, 512 MB limit per process (WEB_MEMORY)"
assertCaptured "Recommending WEB_CONCURRENCY=2"
assertCapturedSuccess
}
testConcurrencyPX() {
MEMORY_AVAILABLE=6144 capture ${bp_dir}/lib/concurrency.sh
assertCaptured "Detected 6144 MB available memory, 512 MB limit per process (WEB_MEMORY)"
assertCaptured "Recommending WEB_CONCURRENCY=12"
assertCapturedSuccess
}
testConcurrencyCustomLimit() {
MEMORY_AVAILABLE=1024 WEB_MEMORY=256 capture ${bp_dir}/lib/concurrency.sh
assertCaptured "Detected 1024 MB available memory, 256 MB limit per process (WEB_MEMORY)"
assertCaptured "Recommending WEB_CONCURRENCY=4"
assertCapturedSuccess
}
testConcurrencySaneMaximum() {
MEMORY_AVAILABLE=6144 WEB_MEMORY=32 capture ${bp_dir}/lib/concurrency.sh
assertCaptured "Detected 6144 MB available memory, 32 MB limit per process (WEB_MEMORY)"
assertCaptured "Recommending WEB_CONCURRENCY=32"
assertCapturedSuccess
}
# Utils # Utils
pushd $(dirname 0) >/dev/null pushd $(dirname 0) >/dev/null
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment