Still TODO:
- a way to plug a metadata processing (somewhat elsewhere but did not
one to overload this already large PR).
- plug-in the auth context on the client side.
- Better end to end testing.
docker images to do interop testing before submitting code
c++ and java are done previously, adding ruby and node.
see script tools/gce_setup/private_build_and_test.sh
-) Properly setting up the endpoint pair.
-) Beancounting on socket shutdown to properly add references.
-) Only proceed to clear out data when called from the IOCP thread.
-) Enabling ALL the tests.
-) Fixing run_tests.py to properly invoke them.
Fixed an important bug whereby thread info wasn't being taken into
account for ! marks.
Also dramatically improved performance by getting rid of a silly O(n^2)
loop.
Namely, 50,90,95 and 99th percentiles are now reported on important marks.
Example output (for a single ! mark between begin-end marks in grpc_tcp_write()):
```
Important marks:
================
99999@src/core/iomgr/tcp_posix.c:545
Relative mark: 50th p. 90th p. 95th p. 99th p.
205 { (src/core/iomgr/tcp_posix.c:541): 0.037 0.057 0.070 0.087
205 } (src/core/iomgr/tcp_posix.c:556): 15.181 27.021 32.509 41.103
```
For a fabricated example (see https://gist.github.com/dgquintas/026d333815589cc37269) with the same ! mark
in two different frames, the output is:
```
Important marks:
================
999999@src/core/iomgr/tcp_posix.c:5
Relative mark: 50th p. 90th p. 95th p. 99th p.
205 { (src/core/iomgr/tcp_posix.c:1): 9.500 13.900 14.450 14.890
205 } (src/core/iomgr/tcp_posix.c:6): 3.000 4.600 4.800 4.960
999999@src/core/iomgr/tcp_posix.c:3
Relative mark: 50th p. 90th p. 95th p. 99th p.
205 { (src/core/iomgr/tcp_posix.c:1): 2.500 2.900 2.950 2.990
205 { (src/core/iomgr/tcp_posix.c:2): 1.500 1.900 1.950 1.990
205 } (src/core/iomgr/tcp_posix.c:4): 2.000 2.800 2.900 2.980
205 } (src/core/iomgr/tcp_posix.c:6): 10.000 15.600 16.300 16.860
```