Test: more verbosity for this test on failure

This commit is contained in:
mikemccand 2014-07-26 04:42:12 -04:00
parent f682461b2f
commit e42b73c6d4
1 changed files with 71 additions and 12 deletions

View File

@ -29,6 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lucene.util.LuceneTestCase.Slow; import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.lucene.util.TestUtil; import org.apache.lucene.util.TestUtil;
import org.elasticsearch.action.ActionResponse;
import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRequest;
@ -44,6 +45,7 @@ import org.elasticsearch.test.ElasticsearchIntegrationTest;
import org.junit.Test; import org.junit.Test;
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertThrows; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertThrows;
import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.lessThanOrEqualTo; import static org.hamcrest.Matchers.lessThanOrEqualTo;
@ -460,10 +462,62 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
public long indexFinishTime; public long indexFinishTime;
public boolean versionConflict; public boolean versionConflict;
public boolean alreadyExists; public boolean alreadyExists;
public ActionResponse response;
@Override @Override
public String toString() { public String toString() {
return "id=" + id + " version=" + version + " delete?=" + delete + " threadID=" + threadID + " indexStartTime=" + indexStartTime + " indexFinishTime=" + indexFinishTime + " versionConflict=" + versionConflict + " alreadyExists=" + alreadyExists; StringBuilder sb = new StringBuilder();
sb.append("id=");
sb.append(id);
sb.append(" version=");
sb.append(version);
sb.append(" delete?=");
sb.append(delete);
sb.append(" threadID=");
sb.append(threadID);
sb.append(" indexStartTime=");
sb.append(indexStartTime);
sb.append(" indexFinishTime=");
sb.append(indexFinishTime);
sb.append(" versionConflict=");
sb.append(versionConflict);
sb.append(" alreadyExists?=");
sb.append(alreadyExists);
if (response != null) {
if (response instanceof DeleteResponse) {
DeleteResponse deleteResponse = (DeleteResponse) response;
sb.append(" response:");
sb.append(" index=");
sb.append(deleteResponse.getIndex());
sb.append(" id=");
sb.append(deleteResponse.getId());
sb.append(" type=");
sb.append(deleteResponse.getType());
sb.append(" version=");
sb.append(deleteResponse.getVersion());
sb.append(" found=");
sb.append(deleteResponse.isFound());
} else if (response instanceof IndexResponse) {
IndexResponse indexResponse = (IndexResponse) response;
sb.append(" index=");
sb.append(indexResponse.getIndex());
sb.append(" id=");
sb.append(indexResponse.getId());
sb.append(" type=");
sb.append(indexResponse.getType());
sb.append(" version=");
sb.append(indexResponse.getVersion());
sb.append(" created=");
sb.append(indexResponse.isCreated());
} else {
sb.append(" response: " + response);
}
} else {
sb.append(" response: null");
}
return sb.toString();
} }
} }
@ -482,7 +536,7 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
// We test deletes, but can't rely on wall-clock delete GC: // We test deletes, but can't rely on wall-clock delete GC:
HashMap<String,Object> newSettings = new HashMap<>(); HashMap<String,Object> newSettings = new HashMap<>();
newSettings.put("index.gc_deletes", "1000000h"); newSettings.put("index.gc_deletes", "1000000h");
client().admin().indices().prepareUpdateSettings("test").setSettings(newSettings).execute().actionGet(); assertAcked(client().admin().indices().prepareUpdateSettings("test").setSettings(newSettings).execute().actionGet());
Random random = getRandom(); Random random = getRandom();
@ -590,7 +644,7 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
long version = idVersion.version; long version = idVersion.version;
if (idVersion.delete) { if (idVersion.delete) {
try { try {
client().prepareDelete("test", "type", id) idVersion.response = client().prepareDelete("test", "type", id)
.setVersion(version) .setVersion(version)
.setVersionType(VersionType.EXTERNAL).execute().actionGet(); .setVersionType(VersionType.EXTERNAL).execute().actionGet();
} catch (VersionConflictEngineException vcee) { } catch (VersionConflictEngineException vcee) {
@ -611,7 +665,7 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
// index document // index document
try { try {
client().prepareIndex("test", "type", id) idVersion.response = client().prepareIndex("test", "type", id)
.setSource("foo", "bar") .setSource("foo", "bar")
.setOpType(op) .setOpType(op)
.setVersion(version) .setVersion(version)
@ -663,6 +717,7 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
} }
// Verify against truth: // Verify against truth:
boolean failed = false;
for(String id : ids) { for(String id : ids) {
long expected; long expected;
IDAndVersion idVersion = truth.get(id); IDAndVersion idVersion = truth.get(id);
@ -671,15 +726,19 @@ public class SimpleVersioningTests extends ElasticsearchIntegrationTest {
} else { } else {
expected = -1; expected = -1;
} }
try { long actualVersion = client().prepareGet("test", "type", id).execute().actionGet().getVersion();
assertThat("id=" + id + " idVersion=" + idVersion, client().prepareGet("test", "type", id).execute().actionGet().getVersion(), equalTo(expected)); if (actualVersion != expected) {
} catch (AssertionError ae) { System.out.println("FAILED: idVersion=" + idVersion + " actualVersion=" + actualVersion);
System.out.println("FAILED:"); failed = true;
}
}
if (failed) {
System.out.println("All versions:");
for(int i=0;i<idVersions.length;i++) { for(int i=0;i<idVersions.length;i++) {
System.out.println("i=" + i + " " + idVersions[i]); System.out.println("i=" + i + " " + idVersions[i]);
} }
throw ae; fail("wrong versions for some IDs");
}
} }
} }