Skip to content

ARROW-4945: [Flight] Enable integration tests in Travis#4003

Closed
ghost wants to merge 3 commits intomasterfrom
unknown repository
Closed

ARROW-4945: [Flight] Enable integration tests in Travis#4003
ghost wants to merge 3 commits intomasterfrom
unknown repository

Conversation

@ghost
Copy link
Copy Markdown

@ghost ghost commented Mar 21, 2019

No description provided.

@fsaintjacques
Copy link
Copy Markdown
Contributor

I think it's worth adding this as a new entry in the matrix build as grpc/flight can be big component by themselves (and potentially adding skip feature).

@lidavidm
Copy link
Copy Markdown
Member

Sorry, this dropped off my radar, but I'll back on this soon - thanks for the suggestion!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, why? We should fix the failure instead...

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then perhaps simply skip it until it's supported? The "expected fail" machinery doesn't look very useful to me.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, sounds good.

@ghost
Copy link
Copy Markdown
Author

ghost commented Mar 27, 2019

Alright, the integration tests now pass in Travis, though the OSX build flaked. I can disable the Flight integration entry if it's too much of a burden for now. (Well, I guess that defeats the point of this.)

.travis.yml Outdated
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious: what do we gain by doing this in a separate matrix entry?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pitrou my rationale is that this can be a big/long check due to grpc dependency and the use of integration tests. If we start adding multi-lang tests, like the ipc-json suite, than I think it's worth adding a seperated entry (for parallelism).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But if the Flight integration entry is doing a superset of what the non-Flight integration entry does, we're not winning anything (and we're probably losing parallelism credits).

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could change it to just run the Flight tests. We'd still pay the cost of setting up and building everything though.

Copy link
Copy Markdown
Member

@pitrou pitrou Mar 27, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How long does it take to run all integration tests in a single job? My guess is that we're better off with a single job. Especially as we're hitting Travis-CI job queueing issues nowadays.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

28 minutes, vs 24 for non-Flight tests. Ok, so I'll re-consolidate them, it doesn't seem to be much overhead (for now).

@codecov-io
Copy link
Copy Markdown

codecov-io commented Mar 28, 2019

Codecov Report

❗ No coverage uploaded for pull request base (master@a49d177). Click here to learn what that means.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master    #4003   +/-   ##
=========================================
  Coverage          ?   87.83%           
=========================================
  Files             ?      738           
  Lines             ?    90851           
  Branches          ?     1252           
=========================================
  Hits              ?    79797           
  Misses            ?    10937           
  Partials          ?      117

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a49d177...3e1d8da. Read the comment docs.

I encounter the following build error when I built the tarball of 0.13.0 RC.

```
[38/597] Performing configure step for 'grpc_ep'
FAILED: grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure
cd /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-build && /opt/brew/Cellar/cmake/3.13.3/bin/cmake -P /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-RELEASE.cmake && /opt/brew/Cellar/c
make/3.13.3/bin/cmake -E touch /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure
CMake Error at /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-RELEASE.cmake:16 (message):
  Command failed: 1

   '/opt/brew/Cellar/cmake/3.13.3/bin/cmake' '-DCMAKE_BUILD_TYPE=RELEASE' '-DCMAKE_PREFIX_PATH=';/opt/brew;/Users/mrkn/src/github.com/apache/arrow/cpp/build/gflags_ep-prefix/src/gflags_ep;/Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/thirdparty/cares_ep-install;'' '-DgRPC
_CARES_PROVIDER=package' '-DgRPC_GFLAGS_PROVIDER=package' '-DgRPC_PROTOBUF_PROVIDER=package' '-DgRPC_SSL_PROVIDER=package' '-DgRPC_ZLIB_PROVIDER=package' '-DCMAKE_CXX_FLAGS= -Qunused-arguments -fcolor-diagnostics -O3 -DNDEBUG -O3 -DNDEBUG -fPIC' '-DCMAKE_C_FLAGS= -Qunused-arguments -O3 -DNDEBUG -O3 -DNDEBUG -fPIC' '-DCMAKE_INSTALL_PREFIX=/Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/thirdparty/grpc_ep-install' '-DCMAKE_INSTALL_LIBDIR=lib' '-DProtobuf_PROTOC_LIBRARY=/opt/brew/lib/libprotoc.dylib' '-DBUILD_SHARED_LIBS=OFF' '-GNinja' '/Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         See also                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-*.log
```

grpc_ep's build log is given below:

```
$ cat /Users/mrkn/Downloads/apache-arrow-0.13.0/cpp/build/grpc_ep-prefix/src/grpc_ep-stamp/grpc_ep-configure-*.log
CMake Error at cmake/cares.cmake:38 (find_package):
  Could not find a package configuration file provided by "c-ares" with any
  of the following names:

    c-aresConfig.cmake
    c-ares-config.cmake

  Add the installation prefix of "c-ares" to CMAKE_PREFIX_PATH or set
  "c-ares_DIR" to a directory containing one of the above files.  If "c-ares"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  CMakeLists.txt:139 (include)

(snip)
```

This build log says that grpc_ep couldn't find cares_ep.
In this case, grpc_ep was built before cares_ep.

This pull-request could fix this dependency error on my environment.

Author: Kenta Murata <mrkn@mrkn.jp>

Closes #4064 from mrkn/cpp_grpc_depends_on_cares and squashes the following commits:

1a37054 <Kenta Murata> Specify dependencies of grpc_ep
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, sorry to come back to this, but why do you need both JsonFile and TestCase? They seem to represent the same thing...

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries. It's because of get_static_json_files below. We could read the existing JSON into Python and put it into a JsonFile, but that seems like a waste. Or, I suppose, JsonFile could handle both cases (generated and static data) - I can make that change.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went ahead and merged the two.

Copy link
Copy Markdown
Member

@wesm wesm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants