def test_load_graph_copy(graphscope_session, arrow_property_graph): g = arrow_property_graph g2 = Graph(graphscope_session, g) assert g.key != g2.key assert g.vineyard_id != g2.vineyard_id assert str(g.schema) == str(g2.schema) assert np.all(g.to_numpy("v:v0.id") == g2.to_numpy("v:v0.id")) g2.unload() assert not g2.loaded() # test load from vineyard's graph g3 = Graph(graphscope_session, vineyard.ObjectID(g.vineyard_id)) assert g3.loaded()
def test_multi_src_dst_edge_loader(graphscope_session, student_group_e, teacher_group_e, student_v, teacher_v): graph = Graph(graphscope_session) graph = graph.add_vertices(student_v, "student", ["name", "lesson_nums", "avg_score"], "student_id") graph = graph.add_vertices(teacher_v, "teacher", ["student_num", "score", "email", "tel"], "teacher_id") graph = graph.add_edges( student_group_e, "group", ["group_id", "member_size"], src_label="student", dst_label="student", src_field="leader_student_id", dst_field="member_student_id", ) graph = graph.add_edges( teacher_group_e, "group", ["group_id", "member_size"], src_label="teacher", dst_label="teacher", src_field="leader_teacher_id", dst_field="member_teacher_id", ) assert graph.loaded()
def test_unload(graphscope_session): graph = Graph(graphscope_session) prefix = os.path.expandvars("${GS_TEST_DIR}/property") graph = (Graph(graphscope_session).add_vertices( f"{prefix}/p2p-31_property_v_0", "person").add_edges(f"{prefix}/p2p-31_property_e_0", "knows")) assert graph.loaded() assert graph.vineyard_id is not None graph.unload() assert not graph.loaded() with pytest.raises(RuntimeError, match="The graph is not loaded"): graph.unload() with pytest.raises(RuntimeError, match="The graph is not loaded"): graph.project_to_simple(v_label="person", e_label="knows") with pytest.raises(AssertionError): g2 = Graph(graphscope_session, graph) with pytest.raises(RuntimeError, match="The graph is not loaded"): property_sssp(graph, src=6)
def test_v_property_omitted_form_loader(graphscope_session, student_group_e, student_v): # properties for v can be omit, all columns will be load, # the first one used as vid by # default. default vlabel would be '_'; graph = Graph(graphscope_session) graph = graph.add_vertices(student_v, "student") graph = graph.add_edges( student_group_e, "group", ["group_id", "member_size"], src_field="leader_student_id", dst_field="member_student_id", ) assert graph.loaded()
def test_vid_omitted_form_loader(graphscope_session, student_group_e, student_v): # vid can be omit, the first column will be used as vid; graph = Graph(graphscope_session) graph = graph.add_vertices(student_v, "student", ["name", "lesson_nums", "avg_score"]) graph = graph.add_edges( student_group_e, "group", ["group_id", "member_size"], src_label="student", dst_label="student", src_field="leader_student_id", dst_field="member_student_id", ) assert graph.loaded()
def test_complete_form_loader(graphscope_session, student_group_e, student_v): # a complete form for loading from ev files. # types are inferred from Loader. graph = Graph(graphscope_session) graph = graph.add_vertices(student_v, "student", ["name", "lesson_nums", "avg_score"], "student_id") graph = graph.add_edges( student_group_e, "group", ["group_id", "member_size"], src_label="student", dst_label="student", src_field="leader_student_id", dst_field="member_student_id", ) assert graph.loaded()
def test_error_on_remove_vertices_edges(graphscope_session): prefix = os.path.expandvars("${GS_TEST_DIR}/modern_graph") graph = Graph(graphscope_session) graph = graph.add_vertices(Loader(f"{prefix}/person.csv", delimiter="|"), "person") graph = graph.add_edges(Loader(f"{prefix}/knows.csv", delimiter="|"), "knows") graph = graph.add_vertices(Loader(f"{prefix}/software.csv", delimiter="|"), "software") graph = graph.add_edges( Loader(f"{prefix}/created.csv", delimiter="|"), "created", src_label="person", dst_label="software", ) with pytest.raises(ValueError, match="Vertex software has usage in relation"): graph = graph.remove_vertices("software") with pytest.raises(ValueError, match="label xxx not in vertices"): graph = graph.remove_vertices("xxx") with pytest.raises(ValueError, match="label xxx not in edges"): graph = graph.remove_edges("xxx") with pytest.raises(ValueError, match="Cannot find edges to remove"): graph = graph.remove_edges("knows", src_label="xxx", dst_label="xxx") assert graph.loaded() with pytest.raises( ValueError, match="Remove vertices from a loaded graph doesn't supported yet"): graph = graph.remove_vertices("person") with pytest.raises( ValueError, match="Remove edges from a loaded graph doesn't supported yet"): graph = graph.remove_edges("knows")
def test_load_from_pandas(graphscope_session, student_group_e_df, student_v_df): graph = Graph(graphscope_session) graph = graph.add_vertices(student_v_df) graph = graph.add_edges(student_group_e_df) assert graph.loaded()
def test_load_from_numpy(graphscope_session, student_group_e_array, student_v_array): graph = Graph(graphscope_session) graph = graph.add_vertices(student_v_array) graph = graph.add_edges(student_group_e_array) assert graph.loaded()
def test_multiple_e_all_omitted_form_loader(graphscope_session, student_group_e, friend_e): graph = Graph(graphscope_session) graph = graph.add_edges(student_group_e, "group") graph = graph.add_edges(friend_e, "friend") assert graph.loaded()
def test_vertices_omitted_form_loader(graphscope_session, student_group_e): # vertices can be omit. graph = Graph(graphscope_session) graph = graph.add_edges(student_group_e) assert graph.loaded()