Pré-requis
Accès Internet
Un accès Internet est obligatoire pour résoudre les exercices dans les meilleures conditions.
Cela vous permettra notamment de consulter la refcard Cypher et de suivre les différents liens inclus dans les énoncés.
Neo4j
Téléchargement
Il est nécessaire d’installer Neo4j. Au moment de l’écriture de ces lignes, la dernière version stable embarquée dans Neo4j Desktop est la version 3.5.8.
Bien que Neo4j Desktop embarque une version Enterprise, l’édition community est normalement suffisante pour les exercices.
Une fois Neo4j Desktop installé, vous pouvez créer et démarrer la base de données et accéder à son interface de navigation.
Notez qu’il vous sera demandé de changer de mot de passe à la première connexion. Il est important de s’en souvenir, car il sera utilisé dans des exercices ultérieurs.
Validation
Notez que, dans certains exercices, le graphe complet des données Doctor Who est importé avant l’exécution de chaque test puis supprimé ensuite. Le temps d’exécution est donc significativement impacté et peut vous ralentir dans la progression des exercices.
Afin de pouvoir explorer le graphe facilement et tester vos requêtes sans attendre, vous allez importer les données dans votre base locale. Pour se faire, il est nécessaire de :
- importer le graphe avec
cypher-shell(cf. répertoirebinde la base de données créée avec Neo4j Desktop ou de l’installation standalone):
$> cd /chemin/du/repository/neo4j-training-tdd $> cat src/test/resources/dr-who.cypher | cypher-shell -u neo4j -pMOT_DE_PASSE - exécuter
MATCH (n:DoctorWho) RETURN COUNT(n)dans la console de requêtage afin de vous assurer que l’import s’est effectué correctement (vous devriez voir une centaine de noeuds)
Notez que vous pouvez exécuter cette commande autant de fois que vous voulez. Elle détruit le graphe Doctor Who et le recrée à chaque exécution (vos autres données restent intactes).
Git
Installez le gestionnaire de version Git.
Incluez ensuite le sous-répertoire bin dans le path existant.
Vérifiez, en ligne de commandes, que l’installation s’est bien déroulée ():
➜ ~ git --version
git version 2.17.2
Configuration d’un proxy
Si l’accès Internet est limité par un proxy d’entreprise, le plus simple est de suivre les étapes décrites dans cette réponse StackOverflow.
Récupération du projet
En ligne de commandes, il vous suffit d’exécuter :
➜ ~ cd /le/chemin/que/vous/voulez
➜ ~ git clone --branch core_api https://github.com/graph-labs/neo4j-training-tdd.git
JDK 8
Installez la dernière version du JDK 8 (et non JRE).
Une fois le binaire téléchargé et exécuté :
- définissez une variable d’environnement
JAVA_HOMEdont la valeur correspond au répertoire où le JDK est installé - incluez le chemin vers le sous-répertoire
binau path existant.
Vous pouvez valider votre installation en vérifiant, en ligne de commandes, que les versions des exécutables java et javac sont les mêmes, comme dans l’exemple qui suit :
➜ ~ javac -version
javac 1.8.0_192
➜ ~ java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
Maven
Installez la dernière version de Maven.
À l’instar du JDK, il est nécessaire d’inclure le chemin vers sous-répertoire bin dans le path existant.
Pour valider votre installation, vérifiez, en ligne de commandes, que votre version de Maven utilise le bon JDK, comme dans l’exemple qui suit :
➜ ~ mvn -version
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T17:06:16+02:00)
Maven home: /usr/local/Cellar/maven-deluxe/3.6.2-0/libexec
Java version: 1.8.0_192, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
Configuration globale
Si le fichier de configuration globale de Maven, settings.xml, dans le répertoire .m2 situé dans le répertoire “home” de l’utilisateur courant existe déjà, renommez le temporairement et créer un fichier settings.xml avec le contenu minimal suivant :
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
</settings>
Configuration d’un proxy
Si l’accès Internet est limité par un proxy d’entreprise,
référez-vous à la documentation suivante pour le configurer
avec Maven, en augmentant le fichier settings.xml décrit précédemment.
Validation
À ce stade, vous pouvez exécuter en ligne de commandes :
➜ ~ cd /chemin/vers/neo4j-training
➜ ~ mvn -q
Vous devriez avoir alors un ensemble de tests en échec (cf. ci-dessous). Reste maintenant à les résoudre !
[...]
Results :
Failed tests: should_extract_all_first_names(io.github.fbiville.trainings.neo4j._0_basics.BasicsTest): You should fix the array declaration
should_perform_addition(io.github.fbiville.trainings.neo4j._0_basics.BasicsTest): You should fix the addition
should_fail_dividing_by_zero(io.github.fbiville.trainings.neo4j._0_basics.BasicsTest): (..)
should_contain_all_specified_numbers(io.github.fbiville.trainings.neo4j._0_basics.BasicsTest): You should fix the array declaration
writes_node_with_several_labels_and_properties(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should create a node and add several properties and labels to it
removes_a_property(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should remove the node property
writes_node_with_a_single_label(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should create a node with a single label
writes_node_with_properties(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should add several properties to the node
writes_node_with_several_labels(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should create a node with several label
writes_simple_node(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should create a simple node
deletes_a_node(io.github.fbiville.trainings.neo4j._1_core_api._1_NodeWriteTest): You should delete the node
should_update_the_relationship_property(io.github.fbiville.trainings.neo4j._1_core_api._2_RelationshipWriteTest): You should overwrite the relationship property
should_create_relationship_between_two_new_nodes(io.github.fbiville.trainings.neo4j._1_core_api._2_RelationshipWriteTest): You should create a relationship between two new nodes
should_create_relationship_with_properties(io.github.fbiville.trainings.neo4j._1_core_api._2_RelationshipWriteTest): You should create a relationship with properties between the two nodes
should_remove_a_relationship(io.github.fbiville.trainings.neo4j._1_core_api._2_RelationshipWriteTest): You should remove the relationship
should_create_relationship_between_existing_nodes(io.github.fbiville.trainings.neo4j._1_core_api._2_RelationshipWriteTest): You should create a relationship between the two nodes
should_find_all_villains(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find all villains
should_find_all_heroes(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find all heroes
should_find_characters_appearing_in_first_opus(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find all character nodes appearing in the first opus
should_find_all_relationship_types(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find all relationships
should_find_largo_by_label_and_property(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find a Largo LaGrande node
should_find_all_character_nodes(io.github.fbiville.trainings.neo4j._1_core_api._3_GraphReadTest): You should find all nodes
should_count_name_properties(io.github.fbiville.trainings.neo4j._1_core_api._4_TriggerTest): expected:<[2]L> but was:<[0]L>
Tests run: 23, Failures: 23, Errors: 0, Skipped: 0
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project neo4j-training: There are test failures.
[ERROR]
[ERROR] Please refer to /private/tmp/neo4j-training/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Installation d’Intellij Ultimate
Afin de bénéficier de l’auto-complétion et d’un confort d’édition optimal, il est recommandé d’installer l’IDE de Jetbrains, Intellij Ultimate Edition.
Si vous voulez briller en société et accessoirement devenir plus efficace lorsque vous écrivez du code, il est fortement conseillé d’apprendre les raccourcis clavier.
Import du projet
Il suffit ensuite d’importer le projet en sélectionnant le fichier pom.xml à la racine du répertoire neo4j-training-tdd. Il sera éventuellement demandé de spécifier un JDK, il suffit de suivre les étapes et il le localisera alors automatiquement.
À partir de ce point, il vous suffit maintenant de lancer n’importe quel test (cf. src/test/java) en suivant cette étape :
- clic droit sur l’un des fichiers
*Test.java Run
Une console devrait alors apparaître avec le résultat de l’exécution !