Skip to content

Commit

Permalink
Merge pull request #845 from kyonRay/dev
Browse files Browse the repository at this point in the history
<sync>(code): sync code from master.
  • Loading branch information
kyonRay authored Apr 28, 2024
2 parents f9914e8 + 704084c commit c138fd9
Show file tree
Hide file tree
Showing 65 changed files with 4,281 additions and 884 deletions.
69 changes: 69 additions & 0 deletions .ci/check_rare_string.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/bash

concatenatedString=$1

function LOG_ERROR()
{
local content=${1}
echo -e "\033[31m"${content}"\033[0m"
}

function LOG_INFO()
{
local content=${1}
echo -e "\033[32m"${content}"\033[0m"
}

get_md5sum_cmd() {
local md5sum_cmd="md5sum"
if [ "$(uname)" == "Darwin" ]; then
md5sum_cmd="md5"
fi
echo "$md5sum_cmd"
}

function checkConcatenatedRareString() {
local contract_address=${1}
md5sum_cmd=$(get_md5sum_cmd)

md5_concatenatedString=$(echo -n "$concatenatedString" | $md5sum_cmd | awk '{print $1}')

local set_output=$(./dist/console.sh call HelloWorld "${contract_address}" set "${concatenatedString}")
eventLogsFromSet=$(echo "set_output" | grep -o 'Event: {}' | sed 's/Event: {\(.*\)}/\1/')
if [ ! -z "$eventLogsFromSet" ]; then
echo "eventLogsFromSet=${eventLogsFromSet}"
md5_eventLogsFromSet=$(echo -n "$eventLogsFromSet" | $md5sum_cmd | awk '{print $1}')
if [ "$md5_concatenatedString" != "$md5_eventLogsFromSet" ]; then
LOG_ERROR "error: check failed, the md5 values of rareString and eventLogsFromSet are not equal, fail concatenatedString: ${concatenatedString}"
exit 1
fi
fi

# compare rare string and stringFromGet
get_output=$(./dist/console.sh call HelloWorld "${contract_address}" get)
stringFromGet=$(echo "$get_output" | grep "Return values" | sed 's/Return values:\(.*\)/\1/' | tr -d '()')
md5_stringFromGet=$(echo -n "$stringFromGet" | $md5sum_cmd | awk '{print $1}')
if [ "$md5_concatenatedString" != "$md5_stringFromGet" ]; then
LOG_ERROR "error: check failed, the md5 values of rareString and stringFromGet are not equal, fail concatenatedString: ${concatenatedString}"
exit 1
else
LOG_INFO "check success, concatenatedString: ${concatenatedString}"
fi
}

main() {
LOG_INFO "check rare string start, concatenatedString: ${concatenatedString}"

# deploy HelloWorld contract
console_output=$(./dist/console.sh deploy HelloWorld)
contract_address=$(echo "$console_output" | grep -oE 'contract address: 0x[0-9a-fA-F]+' | sed 's/contract address: //')
if [ -z "$contract_address" ]; then
LOG_ERROR "deploy HelloWorld contract failed, contract_address: ${contract_address}"
exit 1
fi

checkConcatenatedRareString $contract_address
LOG_INFO "check rare string finished!"
}

main "$@"
190 changes: 171 additions & 19 deletions .ci/ci_check.sh
Original file line number Diff line number Diff line change
@@ -1,47 +1,164 @@
#!/bin/bash

set -e

rare_str_range_names=("CJKUnifiedIdeographs" "CJKCompatibilityIdeographs" "CJKCompatibilityIdeographsSupplement" "KangxiRadicals" "CJKRadicalsSupplement" "IdeographicDescriptionCharacters" "Bopomofo" "BopomofoExtended" "CJKStrokes" "CJKSymbolsandPunctuation" "CJKCompatibilityForms" "CJKCompatibility" "EnclosedCJKLettersandMonths" "CJKUnifiedIdeographsExtensionA" "CJKUnifiedIdeographsExtensionB" "CJKUnifiedIdeographsExtensionC" "CJKUnifiedIdeographsExtensionD" "CJKUnifiedIdeographsExtensionE" "CJKUnifiedIdeographsExtensionF")
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")

LOG_INFO() {
local content=${1}
echo -e "\033[32m ${content}\033[0m"
}

download_tassl()
{
local OPENSSL_CMD=${HOME}/.fisco/tassl-1.1.1b
if [ -f "${OPENSSL_CMD}" ];then
return
fi
local package_name="tassl-1.1.1b-linux-x86_64"
if [ "$(uname)" == "Darwin" ];then
package_name="tassl-1.1.1b-macOS-x86_64"
fi
curl -LO "https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/${package_name}.tar.gz" && tar -zxvf "${package_name}.tar.gz" && mv "${package_name}" tassl-1.1.1b && mkdir -p ~/.fisco && mv tassl-1.1.1b ~/.fisco/
}

get_sed_cmd()
{
local sed_cmd="sed -i"
if [ "$(uname)" == "Darwin" ];then
sed_cmd="sed -i .bkp"
fi
echo "$sed_cmd"
}

download_rare_string_jar() {
LOG_INFO "----- Downloading get-rare-string-with-unicode.jar -------"
curl -LO "https://github.com/FISCO-BCOS/LargeFiles/raw/master/binaries/jar/get-rare-string-with-unicode.jar"
}

download_build_chain()
{
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)
local tag="${1}"
if [ -z "${tag}" ]; then
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)
fi
LOG_INFO "--- current tag: $tag"
curl -LO "https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/${tag}/build_chain.sh" && chmod u+x build_chain.sh
}

prepare_environment()
download_binary()
{
## prepare resources for integration test
mkdir -p src/test/resources/
mkdir -p conf
cp -r nodes/127.0.0.1/sdk/* conf
local tag="${1}"
LOG_INFO "--- current tag: $tag"
local package_name="fisco-bcos-linux-x86_64.tar.gz"
if [ "$(uname)" == "Darwin" ];then
package_name="fisco-bcos-macOS-x86_64.tar.gz"
fi
curl -LO "https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/${tag}/${package_name}" && tar -zxvf "${package_name}"
}

build_node()
prepare_environment()
{
## prepare resources for integration test
pwd
ls -a
local node_type="${1}"
mkdir -p "./src/integration-test/resources/conf"
cp -r nodes/127.0.0.1/sdk/* ./src/integration-test/resources/conf
cp ./src/integration-test/resources/config-example.toml ./src/integration-test/resources/config.toml
cp -r ./src/main/resources/contract ./contracts
if [ "${node_type}" == "sm" ];then
./build_chain.sh -l 127.0.0.1:4 -g
sed_cmd=$(get_sed_cmd)
$sed_cmd 's/sm_crypto_channel=false/sm_crypto_channel=true/g' nodes/127.0.0.1/node*/config.ini
else
./build_chain.sh -l 127.0.0.1:4
sed_cmd=$(get_sed_cmd)
$sed_cmd 's/useSMCrypto = "false"/useSMCrypto = "true"/g' ./src/integration-test/resources/config.toml
fi
}

build_node()
{
curl -LO https://github.com/FISCO-BCOS/console/releases/download/v3.0.0/get_account.sh
curl -LO https://github.com/FISCO-BCOS/console/releases/download/v3.0.0/get_gm_account.sh
bash build_chain.sh -l 127.0.0.1:4 ${@} -e ./fisco-bcos
./nodes/127.0.0.1/fisco-bcos -v
./nodes/127.0.0.1/start_all.sh
}

clean_node()
{
bash nodes/127.0.0.1/stop_all.sh
rm -rf nodes
if [ "${1}" == "true" ]; then
rm -rf ./fisco-bcos*
fi
}

getRangeValues() {
local rangeValue=$1
IFS=',' read -r startValue endValue <<<"$rangeValue"

echo "$startValue $endValue"
}

getConcatenatedRareStringWithRange() {
local startUnicode=${1}
local endUnicode=${2}

# concatenate strings with begin middle end
local concatenatedString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${startUnicode})
local midUnicode=$((($startUnicode + $endUnicode) / 2))
for ((i = midUnicode; i <= midUnicode + 5; i++)); do
local currentRareString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${i})
concatenatedString+="$currentRareString"
done
local endRareString=$(java -cp './get-rare-string-with-unicode.jar' org.example.Main ${endUnicode})
concatenatedString+="$endRareString"
echo "$concatenatedString"
}

check_rare_string() {
download_rare_string_jar
bash gradlew assemble
cp ./src/integration-test/resources/config.toml ./dist/conf/config.toml
cp -r ./nodes/127.0.0.1/sdk/* ./dist/conf/
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

finalConcatenatedInputString=""
for ((i = 0; i < ${#rare_str_range_names[@]}; i++)); do
rangeName="${rare_str_range_names[$i]}"
rangeValue="${rare_str_range_values[$i]}"

read -r startValue endValue <<<$(getRangeValues "$rangeValue")
concatenatedString=$(getConcatenatedRareStringWithRange $startValue $endValue)
finalConcatenatedInputString+="$concatenatedString"
done

bash -x .ci/check_rare_string.sh ${finalConcatenatedInputString}
}

check_standard_node()
{
build_node
build_node ${@:2}
prepare_environment
## run integration test
bash gradlew test --info
bash gradlew integrationTest --info
LOG_INFO "------ standard_node check_rare_string---------"
check_rare_string
clean_node "${1}"
}

check_sm_node()
{
build_node ${@:2} -s
prepare_environment sm
## run integration test
bash gradlew test --info
bash gradlew integrationTest --info
LOG_INFO "------ standard_node check_rare_string---------"
check_rare_string
clean_node "${1}"
}

check_basic()
Expand All @@ -55,10 +172,45 @@ bash gradlew test
bash gradlew integrationTest --info
}

LOG_INFO "------ check java version --------"
java -version
#cp src/integration-test/resources/config-example.toml src/integration-test/resources/config.toml
#LOG_INFO "------ download_build_chain---------"
#download_build_chain
#LOG_INFO "------ check_standard_node---------"
#check_standard_node
#LOG_INFO "------ check_basic---------"
#check_basic
download_tassl

LOG_INFO "------ download_binary: v3.4.0---------"
download_binary "v3.4.0"
download_build_chain "v3.4.0"
LOG_INFO "------ check_standard_node---------"
check_standard_node false
LOG_INFO "------ check_sm_node---------"
check_sm_node true
LOG_INFO "------ check_basic---------"
check_basic

LOG_INFO "------ download_binary: v3.3.0---------"
download_binary "v3.3.0"
download_build_chain "v3.3.0"
LOG_INFO "------ check_standard_node---------"
check_standard_node
rm -rf ./bin

LOG_INFO "------ download_binary: v3.2.0---------"
download_binary "v3.2.0"
download_build_chain "v3.2.0"
LOG_INFO "------ check_standard_node---------"
check_standard_node -s
rm -rf ./bin

LOG_INFO "------ download_binary: v3.1.0---------"
download_binary "v3.1.0"
download_build_chain "v3.1.0"
LOG_INFO "------ check_standard_node---------"
check_standard_node -s
rm -rf ./bin

LOG_INFO "------ download_binary: v3.0.0---------"
download_binary "v3.0.0"
download_build_chain "v3.0.0"
LOG_INFO "------ check_standard_node---------"
check_standard_node -s
rm -rf ./bin
63 changes: 63 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: "CodeQL"

on:
push:
branches: [ 'master*', 'dev*', 'release-*' ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ 'master', 'dev*', 'release-*' ]
schedule:
- cron: '57 14 * * 0'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'java' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

steps:
- name: Checkout repository
uses: actions/checkout@v3

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
queries: +security-and-quality


# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2

# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun

# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.

# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"
Loading

0 comments on commit c138fd9

Please sign in to comment.