blob: 99c7ba338ee4df6afb849f22b21b89b58f8c36ba [file] [log] [blame]
#!/bin/sh
#
#
# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# UDEV event helper script that sets the system's WiFi regulatory domain
# from VPD data.
# Assertion helpers.
assert_equal() {
local actual="$1"
local expected="$2"
if [ "${actual}" != "${expected}" ]; then
echo "FAIL: expected |${expected}|, got |${actual}|"
exit 1
fi
}
assert_regdomain_is() {
local expected_code="$1"
g_vpd_data="$(cat)"
g_country_code=""
. $(dirname $0)/set_wifi_regulatory
assert_equal "${g_country_code}" "${expected_code}"
}
# Fake out the commands that are called by set_wifi_regulatory.
dump_vpd_log() {
assert_equal "$1" "--stdout"
echo "${g_vpd_data}"
}
iw() {
assert_equal "$1" "reg"
assert_equal "$2" "set"
g_country_code="$3"
}
# Simplest input.
assert_regdomain_is US <<-"EOF"
"region"="US"
EOF
# Properly handle lower-case region.
assert_regdomain_is US <<-"EOF"
"region"="us"
EOF
# If region exists multiple times, take the first one.
assert_regdomain_is JP <<-"EOF"
"region"="JP"
"region"="US"
EOF
# Other fields can come before.
assert_regdomain_is US <<-"EOF"
"initial_timezone"="America/Los_Angeles"
"region"="us"
EOF
# Other fields can come after.
assert_regdomain_is US <<-"EOF"
"region"="us"
"initial_timezone"="America/Los_Angeles"
EOF
# Region may include additional data after country code (1/2).
assert_regdomain_is CA <<-"EOF"
"region"="ca.hybrid"
EOF
# Region may include additional data after country code (2/2).
assert_regdomain_is BR <<-"EOF"
"region"="br.abnt"
EOF
# Virtual regions work correctly (1/2).
assert_regdomain_is SE <<-"EOF"
"region"="nordic"
EOF
# Virtual regions work correctly (2/2).
assert_regdomain_is "MX" <<-"EOF"
"region"="latam-es-419"
EOF
# End quote is required.
assert_regdomain_is "" <<-"EOF"
"region"="us
EOF
# Quotes are required.
assert_regdomain_is "" <<-"EOF"
region=us
EOF
# No junk allowed at end.
assert_regdomain_is "" <<-"EOF"
"region"="us"andmorestuff
EOF
# No junk allowed at beginning.
assert_regdomain_is "" <<-"EOF"
junk"region"="us"
EOF
# Must match "region" exactly.
assert_regdomain_is "" <<-"EOF"
"jregion"="us"
EOF
# Random shell meta-characters are not allowed.
assert_regdomain_is "" <<-"EOF"
"region"="ca>>/var/log/junk"
EOF
echo "PASS"