summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/versioning
AgeCommit message (Collapse)Author
2017-04-15Do not produce empty IDs in simple versioning testJason Tedor
Empty IDs are rejected during indexing, so we should not randomly produce them during tests. This commit modifies the simple versioning tests to no longer produce empty IDs.
2017-02-08Fold InternalSearchHits and friends into their interfaces (#23042)Simon Willnauer
We have a bunch of interfaces that have only a single implementation for 6 years now. These interfaces are pretty useless from a SW development perspective and only add unnecessary abstractions. They also require lots of casting in many places where we expect that there is only one concrete implementation. This change removes the interfaces, makes all of the classes final and removes the duplicate `foo` `getFoo` accessors in favor of `getFoo` from these classes.
2016-10-12Merge branch 'master' into cleanup/transport_bulkAreek Zillur
2016-10-12Remove empty javadoc (#20871)Tanguy Leroux
This commit removes as many as empty javadocs comments my regexp has found
2016-10-11rename DocumentRequest to DocWriteRequestAreek Zillur
2016-10-07Revert "rename DocumentRequest to DocumentWriteRequest"Areek Zillur
This reverts commit b5079ce0092e2dfd742fbe3aed8a8f95931a378d.
2016-10-06rename DocumentRequest to DocumentWriteRequestAreek Zillur
2016-10-03Merge branch 'master' into cleanup/transport_bulkAreek Zillur
2016-09-21`_flush` should block by default (#20597)Simon Willnauer
This commit changes the default behavior of `_flush` to block if other flushes are ongoing. This also removes the use of `FlushNotAllowedException` and instead simply return immediately by skipping the flush. Users should be aware if they set this option that the flush might or might not flush everything to disk ie. no transactional behavior of some sort. Closes #20569
2016-09-08Remove FORCE version_typeLee Hinman
This was an error-prone version type that allowed overriding previous version semantics. It could cause primaries and replicas to be out of sync however, so it has been removed. Resolves #19769
2016-09-08Revert "Remove FORCE version_type"Lee Hinman
This reverts commit b4cc3cd35dea2e3059142c6bd7e2eb13ca8944ac.
2016-09-07Remove FORCE version_typeLee Hinman
This was an error-prone version type that allowed overriding previous version semantics. It could cause primaries and replicas to be out of sync however, so it has been removed. Resolves #19769
2016-08-23Make bulk item-level requests implement DocumentRequest interfaceAreek Zillur
Currently, bulk item requests can be any ActionRequest, this commit restricts bulk item requests to DocumentRequest. This simplifies handling failures during bulk requests. Additionally, a new enum is added to DocumentRequest to represent the intended operation to be performed by a document request. Now, index operation type also uses the new enum to specify whether the request should create or index a document.
2016-08-01Rename operation to result and reworking responsesAlexander Lin
* Rename operation to result and reworking responses * Rename DocWriteResponse.Operation enum to DocWriteResponse.Result These are just easier to interpret names. Closes #19664
2016-07-29Remove isCreated and isFound from the Java APIAlexander Lin
This is cleanup work from #19566, where @nik9000 suggested trying to nuke the isCreated and isFound methods. I've combined nuking the two methods with removing UpdateHelper.Operation in favor of DocWriteResponse.Operation here. Closes #19631.
2016-07-04Do not catch throwableJason Tedor
Today throughout the codebase, catch throwable is used with reckless abandon. This is dangerous because the throwable could be a fatal virtual machine error resulting from an internal error in the JVM, or an out of memory error or a stack overflow error that leaves the virtual machine in an unstable and unpredictable state. This commit removes catch throwable from the codebase and removes the temptation to use it by modifying listener APIs to receive instances of Exception instead of the top-level Throwable. Relates #19231
2016-06-27Keep input time unit when parsing TimeValuesJason Tedor
This commit modifies TimeValue parsing to keep the input time unit. This enables round-trip parsing from instances of String to instances of TimeValue and vice-versa. With this, this commit removes support for the unit "w" representing weeks, and also removes support for fractional values of units (e.g., 0.5s). Relates #19102
2016-04-08Remove Settings.settingsBuilder.Adrien Grand
We have both `Settings.settingsBuilder` and `Settings.builder` that do exactly the same thing, so we should keep only one. I kept `Settings.builder` since it has my preference but also it is the one that we use in examples of the Java API.
2016-03-29Refactor: replace all ocurrences of ESTestCase.getRandom() for random().Camilo Diaz Repka
Remove getRandom().
2016-03-15Remove System.out.println and Throwable.printStackTrace from testsYannick Welsch
2016-01-30Uppercase ells ('L') in long literalsJason Tedor
This commit removes and forbids the use of lowercase ells ('l') in long literals because they are often hard to distinguish from the digit representing one ('1'). Closes #16329
2015-10-20Remove and ban @TestNik Everett
There are three ways `@Test` was used. Way one: ```java @Test public void flubTheBlort() { ``` This way was always replaced with: ```java public void testFlubTheBlort() { ``` Or, maybe with a better method name if I was feeling generous. Way two: ```java @Test(throws=IllegalArgumentException.class) public void testFoo() { methodThatThrows(); } ``` This way of using `@Test` is actually pretty OK, but to get the tools to ban `@Test` entirely it can't be used. Instead: ```java public void testFoo() { try { methodThatThrows(); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e ) { assertThat(e.getMessage(), containsString("something")); } } ``` This is longer but tests more than the old ways and is much more precise. Compare: ```java @Test(throws=IllegalArgumentException.class) public void testFoo() { some(); copy(); and(); pasted(); methodThatThrows(); code(); // <---- This was left here by mistake and is never called } ``` to: ```java @Test(throws=IllegalArgumentException.class) public void testFoo() { some(); copy(); and(); pasted(); try { methodThatThrows(); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e ) { assertThat(e.getMessage(), containsString("something")); } } ``` The final use of test is: ```java @Test(timeout=1000) public void testFoo() { methodThatWasSlow(); } ``` This is the most insidious use of `@Test` because its tempting but tragically flawed. Its flaws are: 1. Hard and fast timeouts can look like they are asserting that something is faster and even do an ok job of it when you compare the timings on the same machine but as soon as you take them to another machine they start to be invalid. On a slow VM both the new and old methods fail. On a super-fast machine the slower and faster ways succeed. 2. Tests often contain slow `assert` calls so the performance of tests isn't sure to predict the performance of non-test code. 3. These timeouts are rude to debuggers because the test just drops out from under it after the timeout. Confusingly, timeouts are useful in tests because it'd be rude for a broken test to cause CI to abort the whole build after it hits a global timeout. But those timeouts should be very very long "backstop" timeouts and aren't useful assertions about speed. For all its flaws `@Test(timeout=1000)` doesn't have a good replacement __in__ __tests__. Nightly benchmarks like http://benchmarks.elasticsearch.org/ are useful here because they run on the same machine but they aren't quick to check and it takes lots of time to figure out the regressions. Sometimes its useful to compare dueling implementations but that requires keeping both implementations around. All and all we don't have a satisfactory answer to the question "what do you replace `@Test(timeout=1000)`" with. So we handle each occurrence on a case by case basis. For files with `@Test` this also: 1. Removes excess blank lines. They don't help anything. 2. Removes underscores from method names. Those would fail any code style checks we ever care to run and don't add to readability. Since I did this manually I didn't do it consistently. 3. Make sure all test method names start with `test`. Some used to end in `Test` or start with `verify` or `check` and they were picked up using the annotation. Without the annotation they always need to start with `test`. 4. Organizes imports using the rules we generate for Eclipse. For the most part this just removes `*` imports which is a win all on its own. It was "required" to quickly remove `@Test`. 5. Removes unneeded casts. This is just a setting I have enabled in Eclipse and forgot to turn off before I did this work. It probably isn't hurting anything. 6. Removes trailing whitespace. Again, another Eclipse setting I forgot to turn off that doesn't hurt anything. Hopefully. 7. Swaps some tests override superclass tests to make them empty with `assumeTrue` so that the reasoning for the skips is logged in the test run and it doesn't "look like" that thing is being tested when it isn't. 8. Adds an oxford comma to an error message. The total test count doesn't change. I know. I counted. ```bash git checkout master && mvn clean && mvn install | tee with_test git no_test_annotation master && mvn clean && mvn install | tee not_test grep 'Tests summary' with_test > with_test_summary grep 'Tests summary' not_test > not_test_summary diff with_test_summary not_test_summary ``` These differ somewhat because some tests are skipped based on the random seed. The total shouldn't differ. But it does! ``` 1c1 < [INFO] Tests summary: 564 suites (1 ignored), 3171 tests, 31 ignored (31 assumptions) --- > [INFO] Tests summary: 564 suites (1 ignored), 3167 tests, 17 ignored (17 assumptions) ``` These are the core unit tests. So we dig further: ```bash cat with_test | perl -pe 's/\n// if /^Suite/;s/.*\n// if /IGNOR/;s/.*\n// if /Assumption #/;s/.*\n// if /HEARTBEAT/;s/Completed .+?,//' | grep Suite > with_test_suites cat not_test | perl -pe 's/\n// if /^Suite/;s/.*\n// if /IGNOR/;s/.*\n// if /Assumption #/;s/.*\n// if /HEARTBEAT/;s/Completed .+?,//' | grep Suite > not_test_suites diff <(sort with_test_suites) <(sort not_test_suites) ``` The four tests with lower test numbers are all extend `AbstractQueryTestCase` and all have a method that looks like this: ```java @Override public void testToQuery() throws IOException { assumeTrue("test runs only when at least a type is registered", getCurrentTypes().length > 0); super.testToQuery(); } ``` It looks like this method was being double counted on master and isn't anymore. Closes #14028
2015-10-07Engine: Remove Engine.CreateBoaz Leskes
The `_create` API is handy way to specify an index operation should only be done if the document doesn't exist. This is currently implemented in explicit code paths all the way down to the engine. However, conceptually this is no different than any other versioned operation - instead of requiring a document is on a specific version, we require it to be deleted (or non-existent). This PR removes Engine.Create in favor of a slight extension in the VersionType logic. There are however a couple of side effects: - DocumentAlreadyExistsException is removed and VersionConflictException is used instead (with an improved error message) - Update will reject version parameters if the upsert option is used (it doesn't compute anyway). - Translog.Create is also removed infavor of Translog.Index (that's OK because their binary format was the same, so we can just read Translog.Index of the translog file) Closes #13955
2015-08-03Tests: Rename base tests cases to use "TestCase" suffixRyan Ernst
Most of the abstract base test classes we have were previously @Ignored. However, there were also some other tests ignored. Having two ways to quiet tests is confusing, and clearly it has caused some tests to get lost in the fold. This change moves all base test classes to use the "TestCase" suffix, which is not picked up by the test class name pattern. It also removes @Ignore from (almost) all tests, and adds it to forbidden apis. And since we were renaming, I shorted base test class names to use "ES" instead of "Elasticsearch". I type this a lot of types a day, and I have heard others express a similar desire for a shorter name. closes #10659
2015-08-03Tests: Remove uses of @Slow and @IntegrationRyan Ernst
Now that integ tests are moved into `mvn verify`, we don't really have a need for @Slow, and especially not @Integration. This removes uses of the first, and completely removes uses of the latter.
2015-08-03Tests: Rename integ tests to IT suffixRyan Ernst
This rename effectively moves all integration tests to be run with `mvn verify`. `mvn test` now runs in about 2 mins. This is a follow up to
2015-06-05create core moduleSimon Willnauer