HBASE-24642: Apache Yetus test-patch and Jenkins integration. (#10)

Adds the plumbing needed to run test-patch tooling from Yetus.

Sample output (with a few failing tests).

| Vote |          Subsystem |  Runtime   | Comment
============================================================================
+---------------------------------------------------------------------------
|      |                    |            | Prechecks
+---------------------------------------------------------------------------
+---------------------------------------------------------------------------
|      |                    |            | master Compile Tests
+---------------------------------------------------------------------------
|  +1  |    CMakeLists.txt  |   2m  9s   | master passed
|  +1  |           compile  |   0m 44s   | master passed
+---------------------------------------------------------------------------
|      |                    |            | Patch Compile Tests
+---------------------------------------------------------------------------
|  +1  |    CMakeLists.txt  |   2m  3s   | the patch passed
|  +1  |           compile  |  13m 54s   | the patch passed
+---------------------------------------------------------------------------
|      |                    |            | Other Tests
+---------------------------------------------------------------------------
|  -1  |              unit  |   0m 34s   | root in the patch failed.
|      |                    |  21m  1s   |

              Reason | Tests
 Failed CTEST tests  |  async-batch-rpc-retrying-test
                     |  async-rpc-retrying-test
                     |  client-test
                     |  filter-test
                     |  location-cache-retry-test
                     |  location-cache-test
                     |  scanner-test

Supports both docker and non-docker mode. Runs all the unit-tests
as a part of the test-patch run.

Additionally adds the Jenkins integration needed to run the precommit
on Apache infra. To be hooked up with the following job

https://builds.apache.org/view/H-L/view/HBase/job/hbase-native-client-github-precommit/

Signed-off-by: Marc Parisi <phrocker@apache.org>
Signed-off-by: Josh Elser <elserj@apache.org>

7 files changed
tree: 87480289856bda0bf4c03df78b0bd4ea8023c7b5
  1. bin/
  2. cmake/
  3. docker-files/
  4. include/
  5. src/
  6. .asf.yaml
  7. .dockerignore
  8. .gitignore
  9. BUILDING.md
  10. CMakeLists.txt
  11. hbase.doxygen
  12. NOTICE
  13. README.md
README.md

hbase-native-client

Native client for HBase

This is a C/C++ library that implements a HBase client.

Design Philosphy

Synchronous and Async versions will both be built on the same foundation. The core foundation will be C++. External users wanting a C library will have to choose either async or sync. These libraries will be thin veneers ontop of the C++.

We should try and follow pthreads example as much as possible:

  • Consistent naming.
  • Opaque pointers as types so that binary compat is easy.
  • Simple setup when the defaults are good.
  • Attr structs when lots of paramters could be needed.

Naming

All public C files will start with hbase_*.{h, cc}. This is to keep naming conflicts to a minimum. Anything without the hbase_ prefix is assumed to be implementation private.

All C apis and typedefs will be prefixed with hb_.

All typedefs end with _t.

Docker

The build environment is docker. This should keep a consistent build environment for everyone. Buck the build system works best with mmap'd files. On OSX this means that vmwarefusion works the best. However it should work with just the defaults.