Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added framework for cluster integration testing #4848

Merged
merged 15 commits into from
Dec 3, 2015
Merged

Conversation

dgnorton
Copy link
Contributor

This PR adds the framework for cluster integration testing. It also fixes the following bugs:

  • CircleCI intermittent raft consensus failures. This was due to having the -parallel argument passed into our test suite. Disabling that has no noticeable affect on how long it takes to run tests, but they no longer fail intermittently.
  • Starting the raft store we now set the RemoteAddr. This is only necessary for testing due to spinning up on random system ports like localhost:0
  • DatabaseNotFound could return different error text depending on where in the code branch it was determined that there was no database. This caused intermittent test results.
  • Added ability to silence the Metastore RPC listener logging. This is only used for testing.

@dgnorton dgnorton changed the title beginning of cluster test harness (WIP) beginning of cluster test harness Nov 19, 2015
@otoolep
Copy link
Contributor

otoolep commented Nov 20, 2015

Keep it up!

@corylanou corylanou changed the title (WIP) beginning of cluster test harness Added framework for cluster integration testing Dec 3, 2015
corylanou added a commit that referenced this pull request Dec 3, 2015
Added framework for cluster integration testing
@corylanou corylanou merged commit 67ea0b7 into master Dec 3, 2015
@corylanou corylanou deleted the cluster-integration branch December 3, 2015 14:56
@pauldix
Copy link
Member

pauldix commented Dec 3, 2015

Looks great so far. One thing I'd like is to have every query test represented at the integration level, which can be run on a single server, or different cluster configurations. You mentioned that's still in process, but it would be nice to be able to define the test and output in one place and run in various configs.

@corylanou
Copy link
Contributor

@pauldix I'm not sure if I understand, but to give you an idea of how it currently works:

The suite stores the set of commands (writes, meta commands, queries, etc.) that it will run though. So, if we take a test that did something as simple as Create a database, write some data, and verify the data exists, it would do the following:

  • Single server suite - Run as it always did.
  • Cluster test:
    • Set up 5 nodes cluster
    • Issue meta commands to first server (currently hardcoded, but could be randomized in the future, not sure it really matters that much)
    • Write to a single server (In the future we will spread the writes across the cluster)
    • Walk through every server and issue the exact same query to make sure every server has the same answer.

Also, we could easily make the cluster tests cycle through and run the tests in single, 2 node, 3 node, 4 node, 5 node, 6 node, and 7 node configuration very easily. Currently, we have coverage in a single node and 5 node cluster.

Based on that, what are you proposing we do add?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants