use of org.neo4j.unsafe.impl.batchimport.input.csv.Configuration in project neo4j by neo4j.
the class ImportToolTest method shouldFailIfTooManyBadRelationships.
@Test
public void shouldFailIfTooManyBadRelationships() throws Exception {
// GIVEN
List<String> nodeIds = asList("a", "b", "c");
Configuration config = Configuration.COMMAS;
File nodeData = nodeData(true, config, nodeIds, TRUE);
List<RelationshipDataLine> relationships = Arrays.asList(// line 2 of file1
relationship("a", "b", "TYPE"), // line 3 of file1
relationship("c", "bogus", "TYPE"), // line 1 of file2
relationship("b", "c", "KNOWS"), // line 2 of file2
relationship("c", "a", "KNOWS"), // line 3 of file2
relationship("missing", "a", "KNOWS"));
File relationshipData1 = relationshipData(true, config, relationships.iterator(), lines(0, 2), true);
File relationshipData2 = relationshipData(false, config, relationships.iterator(), lines(2, 5), true);
File bad = badFile();
// WHEN importing data where some relationships refer to missing nodes
try {
importTool("--into", dbRule.getStoreDirAbsolutePath(), "--nodes", nodeData.getAbsolutePath(), "--bad", bad.getAbsolutePath(), "--bad-tolerance", "1", "--relationships", relationshipData1.getAbsolutePath() + MULTI_FILE_DELIMITER + relationshipData2.getAbsolutePath());
} catch (Exception e) {
// THEN
assertExceptionContains(e, relationshipData2.getAbsolutePath() + ":3", InputException.class);
}
}
use of org.neo4j.unsafe.impl.batchimport.input.csv.Configuration in project neo4j by neo4j.
the class ImportToolTest method shouldDisallowImportWithoutNodesInput.
@Test
public void shouldDisallowImportWithoutNodesInput() throws Exception {
// GIVEN
List<String> nodeIds = nodeIds();
Configuration config = Configuration.COMMAS;
// WHEN
try {
importTool("--into", dbRule.getStoreDirAbsolutePath(), "--relationships", relationshipData(true, config, nodeIds, TRUE, true).getAbsolutePath());
fail("Should have failed");
} catch (IllegalArgumentException e) {
// THEN
assertThat(e.getMessage(), containsString("No node input"));
}
}
use of org.neo4j.unsafe.impl.batchimport.input.csv.Configuration in project neo4j by neo4j.
the class ImportToolTest method shouldFailIfHeaderHasLessColumnsThanData.
@Test
public void shouldFailIfHeaderHasLessColumnsThanData() throws Exception {
// GIVEN
List<String> nodeIds = nodeIds();
Configuration config = Configuration.TABS;
// WHEN data file contains more columns than header file
int extraColumns = 3;
try {
importTool("--into", dbRule.getStoreDirAbsolutePath(), "--delimiter", "TAB", "--array-delimiter", String.valueOf(config.arrayDelimiter()), "--nodes", nodeHeader(config).getAbsolutePath() + MULTI_FILE_DELIMITER + nodeData(false, config, nodeIds, TRUE, Charset.defaultCharset(), extraColumns).getAbsolutePath(), "--relationships", relationshipHeader(config).getAbsolutePath() + MULTI_FILE_DELIMITER + relationshipData(false, config, nodeIds, TRUE, true).getAbsolutePath());
fail("Should have thrown exception");
} catch (InputException e) {
// THEN
assertFalse(suppressOutput.getErrorVoice().containsMessage(e.getClass().getName()));
assertTrue(e.getMessage().contains("Extra column not present in header on line"));
}
}
use of org.neo4j.unsafe.impl.batchimport.input.csv.Configuration in project neo4j by neo4j.
the class ImportToolTest method shouldImportOnlyNodes.
@Test
public void shouldImportOnlyNodes() throws Exception {
// GIVEN
List<String> nodeIds = nodeIds();
Configuration config = Configuration.COMMAS;
// WHEN
importTool("--into", dbRule.getStoreDirAbsolutePath(), "--nodes", nodeData(true, config, nodeIds, TRUE).getAbsolutePath());
// no relationships
// THEN
GraphDatabaseService db = dbRule.getGraphDatabaseAPI();
try (Transaction tx = db.beginTx()) {
int nodeCount = 0;
for (Node node : db.getAllNodes()) {
assertTrue(node.hasProperty("name"));
nodeCount++;
assertFalse(node.hasRelationship());
}
assertEquals(NODE_COUNT, nodeCount);
tx.success();
}
}
use of org.neo4j.unsafe.impl.batchimport.input.csv.Configuration in project neo4j by neo4j.
the class ImportToolTest method shouldHandleAdditiveLabelsWithSpaces.
@Test
public void shouldHandleAdditiveLabelsWithSpaces() throws Exception {
// GIVEN
List<String> nodeIds = nodeIds();
Configuration config = Configuration.COMMAS;
final Label label1 = label("My First Label");
final Label label2 = label("My Other Label");
// WHEN
importTool("--into", dbRule.getStoreDirAbsolutePath(), "--nodes:My First Label:My Other Label", nodeData(true, config, nodeIds, TRUE).getAbsolutePath(), "--relationships", relationshipData(true, config, nodeIds, TRUE, true).getAbsolutePath());
// THEN
verifyData(node -> {
assertTrue(node.hasLabel(label1));
assertTrue(node.hasLabel(label2));
}, Validators.<Relationship>emptyValidator());
}
Aggregations