use of com.mysql.cj.protocol.x.XMessage in project aws-mysql-jdbc by awslabs.
the class MysqlxSessionTest method testInterleavedResults.
@Test
public void testInterleavedResults() {
assumeTrue(this.isSetForXTests, PropertyDefinitions.SYSP_testsuite_url_mysqlx + " must be set to run this test.");
XMessageBuilder builder = (XMessageBuilder) this.session.<XMessage>getMessageBuilder();
String collName = "testInterleavedResults";
try {
try {
this.session.query(builder.buildDropCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
} catch (XProtocolError e) {
if (e.getErrorCode() != MysqlErrorNumbers.ER_BAD_TABLE_ERROR) {
throw e;
}
}
this.session.query(builder.buildCreateCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
List<String> stringDocs = new ArrayList<>();
stringDocs.add("{'_id':'0'}");
stringDocs.add("{'_id':'1'}");
stringDocs.add("{'_id':'2'}");
stringDocs.add("{'_id':'3'}");
stringDocs.add("{'_id':'4'}");
stringDocs = stringDocs.stream().map(s -> s.replaceAll("'", "\"")).collect(Collectors.toList());
this.session.query(builder.buildDocInsert(getTestDatabase(), collName, stringDocs, false), new UpdateResultBuilder<>());
FilterParams filterParams = new DocFilterParams(getTestDatabase(), collName);
filterParams.setOrder("$._id");
DocResult docs1 = this.session.query(((XMessageBuilder) this.session.<XMessage>getMessageBuilder()).buildFind(filterParams), new StreamingDocResultBuilder(this.session));
DocResult docs2 = this.session.query(((XMessageBuilder) this.session.<XMessage>getMessageBuilder()).buildFind(filterParams), new StreamingDocResultBuilder(this.session));
DocResult docs3 = this.session.query(((XMessageBuilder) this.session.<XMessage>getMessageBuilder()).buildFind(filterParams), new StreamingDocResultBuilder(this.session));
DocResult docs4 = this.session.query(((XMessageBuilder) this.session.<XMessage>getMessageBuilder()).buildFind(filterParams), new StreamingDocResultBuilder(this.session));
DocResult docs5 = this.session.query(((XMessageBuilder) this.session.<XMessage>getMessageBuilder()).buildFind(filterParams), new StreamingDocResultBuilder(this.session));
assertTrue(docs5.hasNext());
assertTrue(docs4.hasNext());
assertTrue(docs3.hasNext());
assertTrue(docs2.hasNext());
assertTrue(docs1.hasNext());
for (int i = 0; i < 5; ++i) {
assertEquals("{\n\"_id\" : \"" + i + "\"\n}", docs1.next().toFormattedString());
assertEquals("{\n\"_id\" : \"" + i + "\"\n}", docs2.next().toFormattedString());
assertEquals("{\n\"_id\" : \"" + i + "\"\n}", docs3.next().toFormattedString());
assertEquals("{\n\"_id\" : \"" + i + "\"\n}", docs4.next().toFormattedString());
assertEquals("{\n\"_id\" : \"" + i + "\"\n}", docs5.next().toFormattedString());
}
assertFalse(docs5.hasNext());
assertFalse(docs4.hasNext());
assertFalse(docs3.hasNext());
assertFalse(docs2.hasNext());
assertFalse(docs1.hasNext());
// let the session be closed with all of these "open"
} finally {
try {
this.session.query(builder.buildDropCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
} catch (XProtocolError e) {
if (e.getErrorCode() != MysqlErrorNumbers.ER_BAD_TABLE_ERROR) {
throw e;
}
}
}
}
use of com.mysql.cj.protocol.x.XMessage in project aws-mysql-jdbc by awslabs.
the class MysqlxSessionTest method testGetObjects.
@Test
public void testGetObjects() {
assumeTrue(this.isSetForXTests, PropertyDefinitions.SYSP_testsuite_url_mysqlx + " must be set to run this test.");
XMessageBuilder builder = (XMessageBuilder) this.session.<XMessage>getMessageBuilder();
ValueFactory<String> svf = new StringValueFactory(new DefaultPropertySet());
String collName = "test_get_objects";
try {
this.session.query(builder.buildDropCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
} catch (XProtocolError e) {
if (e.getErrorCode() != MysqlErrorNumbers.ER_BAD_TABLE_ERROR) {
throw e;
}
}
this.session.query(builder.buildCreateCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
Set<String> strTypes = Arrays.stream(new DbObjectType[] { DbObjectType.COLLECTION }).map(DatabaseObject.DbObjectType::toString).collect(Collectors.toSet());
Predicate<com.mysql.cj.result.Row> rowFiler = r -> (strTypes).contains(r.getValue(1, svf));
Function<com.mysql.cj.result.Row, String> rowToName = r -> r.getValue(0, svf);
List<String> collNames = this.session.query(builder.buildListObjects(getTestDatabase(), null), rowFiler, rowToName, Collectors.toList());
assertTrue(collNames.contains(collName));
collNames = this.session.query(builder.buildListObjects(getTestDatabase(), "none%"), rowFiler, rowToName, Collectors.toList());
assertFalse(collNames.contains(collName));
collNames = this.session.query(builder.buildListObjects(getTestDatabase(), "%get_obj%"), rowFiler, rowToName, Collectors.toList());
assertTrue(collNames.contains(collName));
this.session.query(builder.buildDropCollection(getTestDatabase(), collName), new UpdateResultBuilder<>());
}
Aggregations