/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tinkerpop.gremlin.server.util;
import org.apache.tinkerpop.gremlin.server.GraphManager;
import org.apache.tinkerpop.gremlin.server.Settings;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import org.junit.Test;
import javax.script.Bindings;
import java.util.Map;
import java.util.Set;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class DefaultGraphManagerTest {
@Test
public void shouldReturnGraphs() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Set<String> graphNames = graphManager.getGraphNames();
assertNotNull(graphNames);
assertEquals(1, graphNames.size());
assertEquals(graphNames.toArray()[0], "graph");
assertThat(graphManager.getGraph("graph"), instanceOf(TinkerGraph.class));
}
@Test
public void shouldGetAsBindings() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Bindings bindings = graphManager.getAsBindings();
assertNotNull(bindings);
assertEquals(1, bindings.size());
assertThat(bindings.get("graph"), instanceOf(TinkerGraph.class));
assertThat(bindings.containsKey("graph"), is(true));
}
@Test
public void shouldGetGraph() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Graph graph = graphManager.getGraph("graph");
assertNotNull(graph);
assertThat(graph, instanceOf(TinkerGraph.class));
}
@Test
public void shouldGetDynamicallyAddedGraph() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Graph graph = graphManager.getGraph("graph"); //fake out a graph instance
graphManager.putGraph("newGraph", graph);
final Set<String> graphNames = graphManager.getGraphNames();
assertNotNull(graphNames);
assertEquals(2, graphNames.size());
assertThat(graphNames.contains("newGraph"), is(true));
assertThat(graphManager.getGraph("newGraph"), instanceOf(TinkerGraph.class));
}
@Test
public void shouldNotGetRemovedGraph() throws Exception {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Graph graph = graphManager.getGraph("graph"); //fake out a graph instance
graphManager.putGraph("newGraph", graph);
final Set<String> graphNames = graphManager.getGraphNames();
assertNotNull(graphNames);
assertEquals(2, graphNames.size());
assertThat(graphNames.contains("newGraph"), is(true));
assertThat(graphManager.getGraph("newGraph"), instanceOf(TinkerGraph.class));
graphManager.removeGraph("newGraph");
final Set<String> graphNames2 = graphManager.getGraphNames();
assertEquals(1, graphNames2.size());
assertThat(graphNames2.contains("newGraph"), is(false));
}
@Test
public void openGraphShouldReturnExistingGraph() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Graph graph = graphManager.openGraph("graph", null);
assertNotNull(graph);
assertThat(graph, instanceOf(TinkerGraph.class));
}
@Test
public void openGraphShouldReturnNewGraphUsingThunk() {
final Settings settings = Settings.read(DefaultGraphManagerTest.class.getResourceAsStream("../gremlin-server-integration.yaml"));
final GraphManager graphManager = new DefaultGraphManager(settings);
final Graph graph = graphManager.getGraph("graph"); //fake out graph instance
final Graph newGraph = graphManager.openGraph("newGraph", (String gName) -> {
return graph;
});
assertNotNull(graph);
assertThat(graph, instanceOf(TinkerGraph.class));
assertSame(graph, newGraph);
}
}