Adding full build to 32 bit tests (#10589)

* Adding full build to 32 bit tests

* Running C++ tests in 32 bit builds

* Patching static assert test failure

* Test fixes for 32-bit architectures

* Cleanup after CMake build

* Save protoc before cleanup

* Route protoc better
pull/10621/head
Mike Kruskal 3 years ago committed by GitHub
parent f191ab0f35
commit 01c340d0bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      kokoro/linux/32-bit/test_php.sh
  2. 4
      php/generate_descriptor_protos.sh
  3. 4
      php/generate_test_protos.sh
  4. 2
      src/google/protobuf/compiler/cpp/message_size_unittest.cc
  5. 6
      src/google/protobuf/extension_set_unittest.cc
  6. 3
      src/google/protobuf/io/zero_copy_stream_unittest.cc
  7. 4
      src/google/protobuf/repeated_field_unittest.cc
  8. 8
      src/google/protobuf/util/time_util_test.cc

@ -36,9 +36,13 @@ build_php_c() {
test_php_c test_php_c
} }
cmake . mkdir build
cmake --build . --target protoc -- -j20 pushd build
cmake ..
cmake --build . -- -j20
ctest --verbose --parallel 20
export PROTOC=$(pwd)/protoc export PROTOC=$(pwd)/protoc
popd
build_php 7.0 build_php 7.0
build_php 7.1 build_php 7.1
@ -49,3 +53,6 @@ build_php_c 7.4
build_php_c 7.1-zts build_php_c 7.1-zts
build_php_c 7.2-zts build_php_c 7.2-zts
build_php_c 7.5-zts build_php_c 7.5-zts
# Cleanup after CMake build
rm -rf build

@ -5,7 +5,9 @@
set -e set -e
PROTOC=$(realpath protoc) if [[ -z "${PROTOC}" ]]; then
PROTOC=$(realpath protoc)
fi
if [ ! -f $PROTOC ]; then if [ ! -f $PROTOC ]; then
bazel build -c opt //:protoc bazel build -c opt //:protoc
PROTOC=$(realpath bazel-bin/protoc) PROTOC=$(realpath bazel-bin/protoc)

@ -4,7 +4,9 @@ set -ex
cd `dirname $0`/.. cd `dirname $0`/..
PROTOC=$(pwd)/protoc if [[ -z "${PROTOC}" ]]; then
PROTOC=$(pwd)/protoc
fi
if [ ! -f $PROTOC ]; then if [ ! -f $PROTOC ]; then
bazel build -c opt //:protoc bazel build -c opt //:protoc
PROTOC=$(pwd)/bazel-bin/protoc PROTOC=$(pwd)/bazel-bin/protoc

@ -139,9 +139,9 @@ TEST(GeneratedMessageTest, OneStringSize) {
TEST(GeneratedMessageTest, MoreStringSize) { TEST(GeneratedMessageTest, MoreStringSize) {
struct MockGenerated : public MockMessageBase { // 16 bytes struct MockGenerated : public MockMessageBase { // 16 bytes
int has_bits[1]; // 4 bytes
int cached_size; // 4 bytes int cached_size; // 4 bytes
MockRepeatedPtrField data; // 24 bytes MockRepeatedPtrField data; // 24 bytes
// + 4 bytes padding
}; };
GOOGLE_CHECK_MESSAGE_SIZE(MockGenerated, 48); GOOGLE_CHECK_MESSAGE_SIZE(MockGenerated, 48);
EXPECT_EQ(sizeof(protobuf_unittest::MoreString), sizeof(MockGenerated)); EXPECT_EQ(sizeof(protobuf_unittest::MoreString), sizeof(MockGenerated));

@ -855,8 +855,10 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) {
const size_t old_capacity = \ const size_t old_capacity = \
message->GetRepeatedExtension(unittest::repeated_##type##_extension) \ message->GetRepeatedExtension(unittest::repeated_##type##_extension) \
.Capacity(); \ .Capacity(); \
EXPECT_GE(old_capacity, \ EXPECT_GE( \
(RepeatedFieldLowerClampLimit<cpptype, sizeof(void*)>())); \ old_capacity, \
(RepeatedFieldLowerClampLimit<cpptype, std::max(sizeof(cpptype), \
sizeof(void*))>())); \
for (int i = 0; i < 16; ++i) { \ for (int i = 0; i < 16; ++i) { \
message->AddExtension(unittest::repeated_##type##_extension, value); \ message->AddExtension(unittest::repeated_##type##_extension, value); \
} \ } \

@ -720,6 +720,9 @@ TEST_F(IoTest, StringIo) {
// Verifies that outputs up to kint32max can be created. // Verifies that outputs up to kint32max can be created.
TEST_F(IoTest, LargeOutput) { TEST_F(IoTest, LargeOutput) {
// Filter out this test on 32-bit architectures.
if(sizeof(void*) < 8) return;
std::string str; std::string str;
StringOutputStream output(&str); StringOutputStream output(&str);
void* unused_data; void* unused_data;

@ -429,14 +429,14 @@ TEST(RepeatedField, ReserveNothing) {
TEST(RepeatedField, ReserveLowerClamp) { TEST(RepeatedField, ReserveLowerClamp) {
int clamped_value = internal::CalculateReserveSize<bool, sizeof(void*)>(0, 1); int clamped_value = internal::CalculateReserveSize<bool, sizeof(void*)>(0, 1);
EXPECT_GE(clamped_value, 8 / sizeof(bool)); EXPECT_GE(clamped_value, sizeof(void*) / sizeof(bool));
EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<bool, sizeof(void*)>()), EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<bool, sizeof(void*)>()),
clamped_value); clamped_value);
// EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<bool, // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<bool,
// sizeof(void*)>( clamped_value, 2))); // sizeof(void*)>( clamped_value, 2)));
clamped_value = internal::CalculateReserveSize<int, sizeof(void*)>(0, 1); clamped_value = internal::CalculateReserveSize<int, sizeof(void*)>(0, 1);
EXPECT_GE(clamped_value, 8 / sizeof(int)); EXPECT_GE(clamped_value, sizeof(void*) / sizeof(int));
EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<int, sizeof(void*)>()), EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<int, sizeof(void*)>()),
clamped_value); clamped_value);
// EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<int, // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<int,

@ -48,6 +48,8 @@ using google::protobuf::Timestamp;
namespace { namespace {
TEST(TimeUtilTest, TimestampStringFormat) { TEST(TimeUtilTest, TimestampStringFormat) {
// These these are out of bounds for 32-bit architectures.
if(sizeof(time_t) >= sizeof(uint64_t)) {
Timestamp begin, end; Timestamp begin, end;
EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin)); EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds()); EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds());
@ -57,6 +59,7 @@ TEST(TimeUtilTest, TimestampStringFormat) {
EXPECT_EQ(999999999, end.nanos()); EXPECT_EQ(999999999, end.nanos());
EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin)); EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin));
EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end)); EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end));
}
// Test negative timestamps. // Test negative timestamps.
Timestamp time = TimeUtil::NanosecondsToTimestamp(-1); Timestamp time = TimeUtil::NanosecondsToTimestamp(-1);
@ -94,9 +97,12 @@ TEST(TimeUtilTest, DurationStringFormat) {
EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin)); EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end)); EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
// These these are out of bounds for 32-bit architectures.
if(sizeof(time_t) >= sizeof(uint64_t)) {
EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin)); EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin));
EXPECT_EQ(999999999, (end - begin).nanos());
EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end)); EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end));
}
EXPECT_EQ(999999999, (end - begin).nanos());
EXPECT_EQ(-999999999, (begin - end).nanos()); EXPECT_EQ(-999999999, (begin - end).nanos());
// Generated output should contain 3, 6, or 9 fractional digits. // Generated output should contain 3, 6, or 9 fractional digits.

Loading…
Cancel
Save