Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 4.57 KB

DEVELOPMENT.md

File metadata and controls

66 lines (44 loc) · 4.57 KB

Development Setup

You need Java 11 or higher to run the build. The build produces Java 8-compatible bytecode.

Install bazelisk in your PATH for gapic-generator-java's Bazel build.

Set Up

  1. Clone this repo.

  2. (OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run tests, and perform linting before each commit. (Symlinks don't seem to work, but if you find a way, please add it here!)

    cp .githooks/pre-commit .git/hooks/pre-commit

Run Tests for All Modules

  • Run all unit tests in all modules.

    mvn install

Code Formatting

  • Run linter checks without actually doing the formatting.

    mvn fmt:check
  • Format files.

    mvn fmt:format

Testing guide

There are 4 layers of testing in this repo:

  1. Traditional unit tests. These tests usually focus on testing one very specific test case at a time. For example, MethodTest
  2. Golden unit tests. These tests start with a test proto, we create different test cases in the proto, load the proto in unit tests and save the generated file as golden files. For example, routing header proto -> Load in the unit test -> Saved as golden
  3. Showcase integration tests. They test the generated library's behavior against a mock server, see README.md of showcase module for details.
  4. Golden integration tests. These tests generate a full client library with real protos from googleapis, for example, golden integration tests for compute. However, we should stop adding new ones, and rely on golden unit tests and showcase tests.

Based on where the code changes are, we should add different tests, in general

  • If the changes are in gax or api-common only, you must add traditional unit tests, you may add showcase integration tests if you are modifying a public setting.
  • If the changes are in gapic-generator-java only, showcase integration tests are most likely not needed
    • If it is in the composer module, you must add golden unit tests, you may add traditional unit tests for better coverage and easier testing.
    • If it is in the parser module, you may add traditional unit tests with a test proto. For example, routing_rule_parser_testing that is only used for testing RoutingRuleParser.
    • If it is in other modules(ast, model, writer etc.), you must add traditional unit tests, you may add golden unit tests to easily see the changes.
  • If the changes are in both gax and gapic-generator-java, you must add all test layers, including traditional unit tests, golden unit tests and showcase integration tests.

How to run tests?

See the Unit Tests section in gapic-generator-java/DEVELOPMENT.md for how to run traditional and golden unit tests.

See Running the Integration Tests and Update the Golden Showcase Files sections in showcase/README.md for how to run and update showcase integration tests.

See the Integration Tests section in gapic-generator-java/DEVELOPMENT.md for how to run golden integration tests.