Skip to content

Commit 216099e

Browse files
authored
<add>(CI) check rare string for CI (#785)
1 parent 0a1b267 commit 216099e

File tree

2 files changed

+158
-35
lines changed

2 files changed

+158
-35
lines changed

.ci/check_rare_string.sh

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#!/bin/bash
2+
3+
concatenatedString=$1
4+
5+
function LOG_ERROR()
6+
{
7+
local content=${1}
8+
echo -e "\033[31m"${content}"\033[0m"
9+
}
10+
11+
function LOG_INFO()
12+
{
13+
local content=${1}
14+
echo -e "\033[32m"${content}"\033[0m"
15+
}
16+
17+
get_md5sum_cmd() {
18+
local md5sum_cmd="md5sum"
19+
if [ "$(uname)" == "Darwin" ]; then
20+
md5sum_cmd="md5"
21+
fi
22+
echo "$md5sum_cmd"
23+
}
24+
25+
function checkConcatenatedRareString() {
26+
local contract_address=${1}
27+
md5sum_cmd=$(get_md5sum_cmd)
28+
29+
md5_concatenatedString=$(echo -n "$concatenatedString" | $md5sum_cmd | awk '{print $1}')
30+
31+
local set_output=$(./dist/console.sh call HelloWorld "${contract_address}" set "${concatenatedString}")
32+
eventLogsFromSet=$(echo "set_output" | grep -o 'Event: {}' | sed 's/Event: {\(.*\)}/\1/')
33+
if [ ! -z "$eventLogsFromSet" ]; then
34+
echo "eventLogsFromSet=${eventLogsFromSet}"
35+
md5_eventLogsFromSet=$(echo -n "$eventLogsFromSet" | $md5sum_cmd | awk '{print $1}')
36+
if [ "$md5_concatenatedString" != "$md5_eventLogsFromSet" ]; then
37+
LOG_ERROR "error: check failed, the md5 values of rareString and eventLogsFromSet are not equal, fail concatenatedString: ${concatenatedString}"
38+
exit 1
39+
fi
40+
fi
41+
42+
# compare rare string and stringFromGet
43+
get_output=$(./dist/console.sh call HelloWorld "${contract_address}" get)
44+
stringFromGet=$(echo "$get_output" | grep "Return values" | sed 's/Return values:\(.*\)/\1/' | tr -d '()')
45+
md5_stringFromGet=$(echo -n "$stringFromGet" | $md5sum_cmd | awk '{print $1}')
46+
if [ "$md5_concatenatedString" != "$md5_stringFromGet" ]; then
47+
LOG_ERROR "error: check failed, the md5 values of rareString and stringFromGet are not equal, fail concatenatedString: ${concatenatedString}"
48+
exit 1
49+
else
50+
LOG_INFO "check success, concatenatedString: ${concatenatedString}"
51+
fi
52+
}
53+
54+
main() {
55+
LOG_INFO "check rare string start, concatenatedString: ${concatenatedString}"
56+
57+
# deploy HelloWorld contract
58+
console_output=$(./dist/console.sh deploy HelloWorld)
59+
contract_address=$(echo "$console_output" | grep -oE 'contract address: 0x[0-9a-fA-F]+' | sed 's/contract address: //')
60+
if [ -z "$contract_address" ]; then
61+
LOG_ERROR "deploy HelloWorld contract failed, contract_address: ${contract_address}"
62+
exit 1
63+
fi
64+
65+
checkConcatenatedRareString $contract_address
66+
LOG_INFO "check rare string finished!"
67+
}
68+
69+
main "$@"
70+

.ci/ci_check.sh

Lines changed: 88 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,29 @@
22

33
set -e
44
default_tag=v3.1.1
5+
6+
rare_str_range_names=("CJKUnifiedIdeographs" "CJKCompatibilityIdeographs" "CJKCompatibilityIdeographsSupplement" "KangxiRadicals" "CJKRadicalsSupplement" "IdeographicDescriptionCharacters" "Bopomofo" "BopomofoExtended" "CJKStrokes" "CJKSymbolsandPunctuation" "CJKCompatibilityForms" "CJKCompatibility" "EnclosedCJKLettersandMonths" "CJKUnifiedIdeographsExtensionA" "CJKUnifiedIdeographsExtensionB" "CJKUnifiedIdeographsExtensionC" "CJKUnifiedIdeographsExtensionD" "CJKUnifiedIdeographsExtensionE" "CJKUnifiedIdeographsExtensionF")
7+
rare_str_range_values=("19968,40959" "63744,64255" "194560,195103" "12032,12255" "11904,12031" "12272,12287" "12544,12591" "12704,12735" "12736,12783" "12288,12351" "65072,65103" "13056,13311" "12800,13055" "13312,19903" "131072,173791" "173824,177977" "177984,178205" "178208,183969" "183984,191456")
8+
59
LOG_INFO() {
6-
local content=${1}
7-
echo -e "\033[32m ${content}\033[0m"
10+
local content=${1}
11+
echo -e "\033[32m ${content}\033[0m"
812
}
913

10-
get_sed_cmd()
11-
{
14+
get_sed_cmd() {
1215
local sed_cmd="sed -i"
13-
if [ "$(uname)" == "Darwin" ];then
14-
sed_cmd="sed -i .bkp"
16+
if [ "$(uname)" == "Darwin" ]; then
17+
sed_cmd="sed -i .bkp"
1518
fi
1619
echo "$sed_cmd"
1720
}
1821

19-
download_build_chain()
20-
{
22+
download_rare_string_jar() {
23+
LOG_INFO "----- Downloading get-rare-string-with-unicode.jar -------"
24+
curl -LO "https://github.com/FISCO-BCOS/LargeFiles/raw/master/binaries/jar/get-rare-string-with-unicode.jar"
25+
}
26+
27+
download_build_chain() {
2128
tag=$(curl -sS "https://gitee.com/api/v5/repos/FISCO-BCOS/FISCO-BCOS/tags" | grep -oe "\"name\":\"v[2-9]*\.[0-9]*\.[0-9]*\"" | cut -d \" -f 4 | sort -V | tail -n 1)
2229
LOG_INFO "--- current tag: $tag"
2330
if [[ -z ${tag} ]]; then
@@ -27,8 +34,7 @@ download_build_chain()
2734
curl -#LO "https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/${tag}/build_chain.sh" && chmod u+x build_chain.sh
2835
}
2936

30-
prepare_environment()
31-
{
37+
prepare_environment() {
3238
## prepare resources for integration test
3339
pwd
3440
ls -a
@@ -37,53 +43,100 @@ prepare_environment()
3743
cp -r nodes/127.0.0.1/sdk/* ./src/integration-test/resources/conf
3844
cp ./src/integration-test/resources/config-example.toml ./src/integration-test/resources/config.toml
3945
cp -r ./src/main/resources/contract ./contracts
40-
if [ "${node_type}" == "sm" ];then
41-
sed_cmd=$(get_sed_cmd)
42-
$sed_cmd 's/useSMCrypto = "false"/useSMCrypto = "true"/g' ./src/integration-test/resources/config.toml
46+
if [ "${node_type}" == "sm" ]; then
47+
sed_cmd=$(get_sed_cmd)
48+
$sed_cmd 's/useSMCrypto = "false"/useSMCrypto = "true"/g' ./src/integration-test/resources/config.toml
4349
fi
4450
}
4551

46-
build_node()
47-
{
52+
build_node() {
4853
local node_type="${1}"
49-
if [ "${node_type}" == "sm" ];then
50-
bash -x build_chain.sh -l 127.0.0.1:4 -s
51-
sed_cmd=$(get_sed_cmd)
52-
$sed_cmd 's/sm_crypto_channel=false/sm_crypto_channel=true/g' nodes/127.0.0.1/node*/config.ini
54+
if [ "${node_type}" == "sm" ]; then
55+
bash -x build_chain.sh -l 127.0.0.1:4 -s
56+
sed_cmd=$(get_sed_cmd)
57+
$sed_cmd 's/sm_crypto_channel=false/sm_crypto_channel=true/g' nodes/127.0.0.1/node*/config.ini
5358
else
54-
bash -x build_chain.sh -l 127.0.0.1:4
59+
bash -x build_chain.sh -l 127.0.0.1:4
5560
fi
5661
./nodes/127.0.0.1/fisco-bcos -v
5762
./nodes/127.0.0.1/start_all.sh
5863
}
5964

60-
check_standard_node()
61-
{
65+
check_standard_node() {
6266
build_node
6367
prepare_environment
64-
## run integration test
68+
# run integration test
6569
bash gradlew test --info
6670
bash gradlew integrationTest --info
71+
72+
LOG_INFO "------ standard_node check_rare_string---------"
73+
check_rare_string
6774
}
6875

69-
check_sm_node()
70-
{
76+
check_sm_node() {
7177
build_node sm
7278
prepare_environment sm
73-
## run integration test
79+
# run integration test
7480
bash gradlew test --info
7581
bash gradlew integrationTest --info
82+
83+
LOG_INFO "------ sm_node check_rare_string---------"
84+
check_rare_string
85+
}
86+
87+
check_basic() {
88+
# check code format
89+
bash gradlew verifyGoogleJavaFormat
90+
# build
91+
bash gradlew build
92+
# test
93+
bash gradlew test
94+
bash gradlew integrationTest --info
7695
}
7796

78-
check_basic()
79-
{
80-
# check code format
81-
bash gradlew verifyGoogleJavaFormat
82-
# build
83-
bash gradlew build
84-
# test
85-
bash gradlew test
86-
bash gradlew integrationTest --info
97+
getRangeValues() {
98+
local rangeValue=$1
99+
IFS=',' read -r startValue endValue <<<"$rangeValue"
100+
101+
echo "$startValue $endValue"
102+
}
103+
104+
getConcatenatedRareStringWithRange() {
105+
local startUnicode=${1}
106+
local endUnicode=${2}
107+
108+
# concatenate strings with begin middle end
109+
local concatenatedString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${startUnicode})
110+
local midUnicode=$((($startUnicode + $endUnicode) / 2))
111+
for ((i = midUnicode; i <= midUnicode + 5; i++)); do
112+
local currentRareString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${i})
113+
concatenatedString+="$currentRareString"
114+
done
115+
local endRareString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${endUnicode})
116+
concatenatedString+="$endRareString"
117+
echo "$concatenatedString"
118+
}
119+
120+
check_rare_string() {
121+
download_rare_string_jar
122+
bash gradlew assemble
123+
cp ./src/integration-test/resources/config.toml ./dist/conf/config.toml
124+
cp -r ./nodes/127.0.0.1/sdk/* ./dist/conf/
125+
export LC_ALL=en_US.UTF-8
126+
export LANG=en_US.UTF-8
127+
export LANGUAGE=en_US.UTF-8
128+
129+
finalConcatenatedInputString=""
130+
for ((i = 0; i < ${#rare_str_range_names[@]}; i++)); do
131+
rangeName="${rare_str_range_names[$i]}"
132+
rangeValue="${rare_str_range_values[$i]}"
133+
134+
read -r startValue endValue <<<$(getRangeValues "$rangeValue")
135+
concatenatedString=$(getConcatenatedRareStringWithRange $startValue $endValue)
136+
finalConcatenatedInputString+="$concatenatedString"
137+
done
138+
139+
bash -x .ci/check_rare_string.sh ${finalConcatenatedInputString}
87140
}
88141

89142
#cp src/integration-test/resources/config-example.toml src/integration-test/resources/config.toml

0 commit comments

Comments
 (0)