Before this, the command always succeeded, even if races were found.
I'm grepping over the output of go test -race to check if there is race because there is no other way to distinguish between a found race and a flaky test.
The Makefile previously listed tests explicitly for groups like
site_test and worker_test. These lists got out of date when tests were
removed from test/config.json, and the make rules broke. Now the groups
are defined in config.json itself, so there is one place to update
everything.
I can't get signals to work on the child processes launched by bash,
even if I use a helper script that explicitly signals its children.
That meant that test timeouts didn't actually terminate the test in
non-Docker mode.
We were only using bash to split the command line into args anyway.
Instead, let's just have the config give us the args pre-split.
Sending signals without bash in the way seems to work better.
(after adding a rule to build before tests).
Global build takes about 2s to build all binaries, and it saves
about 4s in one run of mysqlctl.py, so it's gonna be good!
Currently, the worker tests are hanging from time to time.
Travis kills these tests automatically after 10 minutes (of not
receiving any output). We can be more aggressive about it and kill them
ourselves after 5 minutes.
1. move common dependencies into parent pom.
2. upgrade com.google.guava to 18.0.
3. rename java build target to java_client_test.
4. fix makefile so java client test will run tests from each sub package.
We sporadically see that the worker.py test times out on Travis CI after 10 minutes. Enabling logging will give us better visibility to debug the problem.
1. Get rid of SetupCommand.java and move its logic to TestEnv.
2. Add getRpcClientFactory method in TestEnv.
3. Use setters & getters in TestEnv.
4. define vtgate.test.env and vtgate.rpcclient.factory properties in vtgate-client/pom.xml.
I removed functions from client.py because they need
to be rethought in light of the new API, but missed
removing them from client_test.py.
I've now added client_test to our integration tests
to make sure it doesn't get missed.
I'll submit this right away because it breaks import.
Moved tests out of the "ci_skip_integration_test" target because they don't seem to be so flaky.
Included "ci_skip_integration_test" target in Travis because the tests in there don't seem to be so flaky and we want maximum coverage.
Between 1, 2 and 4, 4 resulted in the shortest total duration. 4 was also better than 2 which is the capped number of availble cores in a Travis CI container.
I suspect that the default is 32 (the number of cores) and by setting it explicitly we effectively reduce the value - but reduce the stress on the system and therefore everything goes faster.
With this change, the following dependencies are no longer installed as well:
- New Relic monitoring (is no longer necessary)
- Java dependencies (no more necessary since we killed most of the old Java code)
Use single line shell command to generate proto file instead of
hard coding command for each proto.
Steps:
1. list all proto files.
2. remove 'proto/' prefix and '.proto' suffix.
3. run protoc for each proto and put in go/vt/proto/${proto_file_name}