Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.6 KiB
112 lines
2.6 KiB
8 years ago
|
#!/bin/bash
|
||
|
|
||
|
use_php() {
|
||
|
VERSION=$1
|
||
|
PHP=`which php`
|
||
|
PHP_CONFIG=`which php-config`
|
||
|
PHPIZE=`which phpize`
|
||
|
ln -sfn "/usr/local/php-${VERSION}/bin/php" $PHP
|
||
|
ln -sfn "/usr/local/php-${VERSION}/bin/php-config" $PHP_CONFIG
|
||
|
ln -sfn "/usr/local/php-${VERSION}/bin/phpize" $PHPIZE
|
||
|
}
|
||
|
|
||
|
generate_proto() {
|
||
|
PROTOC1=$1
|
||
|
PROTOC2=$2
|
||
|
|
||
|
rm -rf generated
|
||
|
mkdir generated
|
||
|
|
||
|
$PROTOC1 --php_out=generated proto/test_include.proto
|
||
|
$PROTOC2 --php_out=generated proto/test.proto proto/test_no_namespace.proto proto/test_prefix.proto
|
||
|
pushd ../../src
|
||
|
$PROTOC2 --php_out=../php/tests/generated google/protobuf/empty.proto
|
||
|
$PROTOC2 --php_out=../php/tests/generated -I../php/tests -I. ../php/tests/proto/test_import_descriptor_proto.proto
|
||
|
popd
|
||
|
}
|
||
|
|
||
|
set -ex
|
||
|
|
||
|
# Change to the script's directory.
|
||
|
cd $(dirname $0)
|
||
|
|
||
|
# The old version of protobuf that we are testing compatibility against.
|
||
|
case "$1" in
|
||
|
""|3.3.0)
|
||
|
OLD_VERSION=3.3.0
|
||
|
OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-linux-x86_64.exe
|
||
|
;;
|
||
|
*)
|
||
|
echo "[ERROR]: Unknown version number: $1"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# Extract the latest protobuf version number.
|
||
|
VERSION_NUMBER=`grep "PHP_PROTOBUF_VERSION" ../ext/google/protobuf/protobuf.h | sed "s|#define PHP_PROTOBUF_VERSION \"\(.*\)\"|\1|"`
|
||
|
|
||
|
echo "Running compatibility tests between $VERSION_NUMBER and $OLD_VERSION"
|
||
|
|
||
|
# Check protoc
|
||
|
[ -f ../../src/protoc ] || {
|
||
|
echo "[ERROR]: Please build protoc first."
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
# Download old test.
|
||
|
rm -rf protobuf
|
||
|
git clone https://github.com/google/protobuf.git
|
||
|
pushd protobuf
|
||
|
git checkout v$OLD_VERSION
|
||
|
popd
|
||
|
|
||
|
# Build and copy the new runtime
|
||
|
use_php 5.5
|
||
|
pushd ../ext/google/protobuf
|
||
|
make clean || true
|
||
|
phpize && ./configure && make
|
||
|
popd
|
||
|
|
||
|
rm -rf protobuf/php/ext
|
||
|
rm -rf protobuf/php/src
|
||
|
cp -r ../ext protobuf/php/ext/
|
||
|
cp -r ../src protobuf/php/src/
|
||
|
|
||
|
# Download old version protoc compiler (for linux)
|
||
|
wget $OLD_VERSION_PROTOC -O old_protoc
|
||
|
chmod +x old_protoc
|
||
|
|
||
|
NEW_PROTOC=`pwd`/../../src/protoc
|
||
|
OLD_PROTOC=`pwd`/old_protoc
|
||
|
cd protobuf/php
|
||
|
cp -r /usr/local/vendor-5.5 vendor
|
||
|
wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit
|
||
|
cd tests
|
||
|
|
||
|
# Test A.1:
|
||
|
# proto set 1: use old version
|
||
|
# proto set 2 which may import protos in set 1: use old version
|
||
|
generate_proto $OLD_PROTOC $OLD_PROTOC
|
||
|
./test.sh
|
||
|
pushd ..
|
||
|
phpunit
|
||
|
popd
|
||
|
|
||
|
# Test A.2:
|
||
|
# proto set 1: use new version
|
||
|
# proto set 2 which may import protos in set 1: use old version
|
||
|
generate_proto $NEW_PROTOC $OLD_PROTOC
|
||
|
./test.sh
|
||
|
pushd ..
|
||
|
phpunit
|
||
|
popd
|
||
|
|
||
|
# Test A.3:
|
||
|
# proto set 1: use old version
|
||
|
# proto set 2 which may import protos in set 1: use new version
|
||
|
generate_proto $OLD_PROTOC $NEW_PROTOC
|
||
|
./test.sh
|
||
|
pushd ..
|
||
|
phpunit
|
||
|
popd
|