Skip to content

Add a grpclb-in-DNS interop test suite#16727

Merged
apolcyn merged 1 commit intogrpc:masterfrom
apolcyn:grpclb_interop_master
Oct 23, 2018
Merged

Add a grpclb-in-DNS interop test suite#16727
apolcyn merged 1 commit intogrpc:masterfrom
apolcyn:grpclb_interop_master

Conversation

@apolcyn
Copy link
Copy Markdown
Contributor

@apolcyn apolcyn commented Sep 27, 2018

This PR adds a test suite that can bring up fake and local grpclb servers, backends, fallback servers, and a controlled DNS server. It currently runs grpc interop clients against the servers. The test driver takes a list of scenarios that tell it the number of "backends", "fallback" servers, and "grpclb" servers to bring up, what credentials to listen on, and certain behaviors to provide. For each scenario, it brings up all of the fake servers in docker containers, wires up the DNS records of the DNS server to point to the IP addresses of each docker container, and then runs the clients. Note also this currently only tests the native C++, Java, and Go stacks, but it could be extended.

General things that this PR does:

  1. Create tools/run_tests/run_grpclb_interop_tests.py, which is the main test driver that basically follows the description above.

  2. Add tools/run_tests/lb_interop_tests/gen_build.yaml, which generates a list of "test scenario" JSON configs into tools/run_tests/generated/lb_interop_test_scenarios.json

  3. Add a new docker file under tools/run_tests/dockerfile/lb_interop_fake_servers/ which has the dependencies needed to build the fake backend, fallback, and balancer server, and to run the local python DNS server (the balancer is from Provide a fake grpclb balancer server that can be used for testing grpc-go#2338)

  4. Make a couple of tweaks to existing interop client builds to add logging and compile faster

See: https://source.cloud.google.com/results/invocations/f93c0e2c-975d-48af-8464-1d86488ad505/targets for a passing run

These new tests exposed a few bugs in a few scenarios:

.... and so those scenarios are currently being skipped.

Remaining TODO is to use a non-experimental kokoro config file, otherwise I think this is ready for review


cc @jtattermusch can you please review for general sanity on adding this new suite?

cc @zhangkun83 can you please review, in particular, for sanity of the devised scenarios here? Scenarios are in tools/run_tests/lb_interop_tests/gen_build_yaml.py . . . happy to also talk offline here.

@apolcyn apolcyn force-pushed the grpclb_interop_master branch 2 times, most recently from e315479 to c1320e4 Compare October 3, 2018 04:32
@apolcyn apolcyn added release notes: no Indicates if PR should not be in release notes lang/all wrapped languages labels Oct 3, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@apolcyn apolcyn changed the title WIP: grpclb-in-DNS interop test suite grpclb-in-DNS interop test suite Oct 5, 2018
@apolcyn apolcyn changed the title grpclb-in-DNS interop test suite Add a grpclb-in-DNS interop test suite Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc grpc deleted a comment from grpc-testing Oct 5, 2018
@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,918      Total (=)      1,965,918

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,891,799      Total (<)     10,891,800

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] No significant performance differences

@apolcyn apolcyn force-pushed the grpclb_interop_master branch from ec8ddd2 to c175f2f Compare October 10, 2018 23:55
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,918      Total (=)      1,965,918

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,891,799      Total (>)     10,891,788

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,918      Total (=)      1,965,918

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,891,796      Total (<)     10,891,797

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] No significant performance differences

@apolcyn apolcyn force-pushed the grpclb_interop_master branch from c175f2f to 454a667 Compare October 11, 2018 01:06
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,918      Total (=)      1,965,918

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,891,798      Total (>)     10,891,795

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,965,922      Total (=)      1,965,922

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,909,005      Total (>)     10,909,003

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

[microbenchmarks] No significant performance differences

@apolcyn apolcyn force-pushed the grpclb_interop_master branch from 0f2fdc6 to e52d87b Compare October 23, 2018 07:00
@grpc-testing
Copy link
Copy Markdown

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]


****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]



@grpc-testing
Copy link
Copy Markdown

[trickle] No significant performance differences

@grpc-testing
Copy link
Copy Markdown

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,997,294      Total (=)      1,997,294

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
11,021,760      Total (>)     11,021,756

 No significant differences in binary sizes


@grpc-testing
Copy link
Copy Markdown

Corrupt JSON data (indicates timeout or crash): 
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.new: 10
    bm_call_create.BM_IsolatedFilter_ClientChannelFilter_NoOp_.counters.old: 10


[microbenchmarks] No significant performance differences

@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Oct 23, 2018

python test failures: #15308

@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Oct 23, 2018

merging, FTR this test will not be running per-PR, at least for now. It will be running continuously on the master branch but will need to be manually monitored for now (if possibly, this can later be promoted to run per-PR, possibly).

@apolcyn apolcyn merged commit 2f92bde into grpc:master Oct 23, 2018
@lock lock bot locked as resolved and limited conversation to collaborators Jan 21, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lang/all wrapped languages release notes: no Indicates if PR should not be in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants