Пример #1
0
    def test_as_datetime(self):
        datetime = DateTime()
        datetime.year = 123
        datetime.month = 2
        datetime.day = 1
        datetime.hour = 10
        datetime.minute = 20
        datetime.sec = 10
        datetime.microsec = 100
        value = ttypes.Value(dtVal=datetime)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_datetime()

        datetime_val = value_wrapper.as_datetime()
        datetime_val.set_timezone_offset(28800)
        assert isinstance(datetime_val, DateTimeWrapper)
        assert datetime_val.get_hour() == 10
        assert datetime_val.get_minute() == 20
        assert datetime_val.get_sec() == 10
        assert datetime_val.get_microsec() == 100
        assert 'utc datetime: 123-02-01T10:20:10.000100, timezone_offset: 28800' == str(
            datetime_val)
        assert '123-02-01T18:20:10.000100' == datetime_val.get_local_datetime_str(
        )
        new_datetime = copy.deepcopy(datetime)
        new_datetime.hour = 18
        assert new_datetime == datetime_val.get_local_datetime()

        new_datetime_2 = copy.deepcopy(datetime)
        new_datetime_2.hour = 12
        assert new_datetime_2 == datetime_val.get_local_datetime_by_timezone_offset(
            7200)
Пример #2
0
    def test_as_time(self):
        time = Time()
        time.hour = 10
        time.minute = 20
        time.sec = 10
        time.microsec = 100
        value = ttypes.Value(tVal=time)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_time()

        time_val = value_wrapper.as_time()
        time_val.set_timezone_offset(28800)
        assert isinstance(time_val, TimeWrapper)
        assert time_val.get_hour() == 10
        assert time_val.get_minute() == 20
        assert time_val.get_sec() == 10
        assert time_val.get_microsec() == 100
        assert 'utc time: 10:20:10.000100, timezone_offset: 28800' == str(
            time_val)
        assert '18:20:10.000100' == time_val.get_local_time_str()
        new_time = copy.deepcopy(time)
        new_time.hour = 18
        assert new_time == time_val.get_local_time()

        new_time_2 = copy.deepcopy(time)
        new_time_2.hour = 12
        assert new_time_2 == time_val.get_local_time_by_timezone_offset(7200)
Пример #3
0
    def test_as_int(self):
        value = ttypes.Value()
        value.set_iVal(100)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_int()

        node = value_wrapper.as_int()
        assert isinstance(node, int)
Пример #4
0
    def test_as_node(self):
        value = ttypes.Value()
        value.set_vVal(self.get_vertex_value(b'Tom'))
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_vertex()

        node = value_wrapper.as_node()
        assert isinstance(node, Node)
Пример #5
0
    def test_as_relationship(self):
        value = ttypes.Value()
        value.set_eVal(self.get_edge_value(b'Tom', b'Lily'))
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_edge()

        relationship = value_wrapper.as_relationship()
        assert isinstance(relationship, Relationship)
Пример #6
0
    def test_as_bool(self):
        value = ttypes.Value()
        value.set_bVal(False)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_bool()

        node = value_wrapper.as_bool()
        assert isinstance(node, bool)
Пример #7
0
    def test_as_path(self):
        value = ttypes.Value()
        value.set_pVal(self.get_path_value(b'Tom'))
        vaue_wrapper = ValueWrapper(value)
        assert vaue_wrapper.is_path()

        node = vaue_wrapper.as_path()
        assert isinstance(node, PathWrapper)
Пример #8
0
    def test_as_geography(self):
        value = ttypes.Value()
        value.set_ggVal(self.get_geography_value(3.0, 5.2))
        vaue_wrapper = ValueWrapper(value)
        assert vaue_wrapper.is_geography()

        geog = vaue_wrapper.as_geography()
        assert isinstance(geog, GeographyWrapper)
Пример #9
0
    def test_as_double(self):
        value = ttypes.Value()
        value.set_fVal(10.10)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_double()

        node = value_wrapper.as_double()
        assert isinstance(node, float)
Пример #10
0
    def test_as_string(self):
        value = ttypes.Value()
        value.set_sVal(b'Tom')
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_string()

        str_val = value_wrapper.as_string()
        assert isinstance(str_val, str)
Пример #11
0
    def test_as_list(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_sVal(b"car")
        value.set_lVal([str_val1, str_val2])
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_list()

        list_val = value_wrapper.as_list()
        assert isinstance(list_val, list)
Пример #12
0
    def test_as_map(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_sVal(b"car")
        value.set_mVal({b"a": str_val1, b"b": str_val2})
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_map()

        map_val = value_wrapper.as_map()
        assert isinstance(map_val, dict)
Пример #13
0
    def test_as_date(self):
        date = Date()
        date.year = 220
        date.month = 2
        date.day = 10
        value = ttypes.Value(dVal=date)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_date()

        date_val = value_wrapper.as_date()
        assert isinstance(date_val, DateWrapper)
        assert date_val.get_year() == 220
        assert date_val.get_month() == 2
        assert date_val.get_day() == 10
        assert '220-02-10' == str(date_val)
Пример #14
0
 def get_dst_id(self):
     if len(self._row.values) < 4:
         raise RuntimeError('The row value is bad format, '
                            'get edge dst id failed: len is {}'.format(
                                len(self._row.values)))
     assert self._row.values[3].getType() == ttypes.Value.SVAL
     return ValueWrapper(self._row.values[3], self._decode_type)
Пример #15
0
    def test_as_set(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_uVal(b"car")
        set_val = Set()
        set_val.values = set()
        set_val.values.add(str_val1)
        set_val.values.add(str_val2)
        value.set_uVal(set_val)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_set()

        set_val = value_wrapper.as_set()
        assert isinstance(set_val, set)
Пример #16
0
    def test_as_time(self):
        time = Time()
        time.hour = 10
        time.minute = 20
        time.sec = 10
        time.microsec = 100
        value = ttypes.Value(tVal=time)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_time()

        time_val = value_wrapper.as_time()
        assert isinstance(time_val, TimeWrapper)
        assert time_val.get_hour() == 10
        assert time_val.get_minute() == 20
        assert time_val.get_sec() == 10
        assert time_val.get_microsec() == 100
        assert '10:20:10.000100' == str(time_val)
Пример #17
0
    def get_prop_values(self):
        """get all prop values from the edge data

        :return: list<ValueWrapper>
        """
        index = self.PROP_START_INDEX
        prop_values = []
        while index < len(self._row.values):
            prop_values.append(ValueWrapper(self._row.values[index], decode_type=self._decode_type))
            index = index + 1
        return prop_values
Пример #18
0
    def get_id(self):
        """get vertex id, if the space vid_type is int, you can use get_id().as_int(),
        if the space vid_type is fixed_string, you can use get_id().as_string()

        :return: ValueWrapper
        """
        if len(self._row.values) < 1:
            raise RuntimeError('The row value is bad format, '
                               'get vertex id failed: len is {}'
                               .format(len(self._row.values)))
        return ValueWrapper(self._row.values[0], self._decode_type)
Пример #19
0
    def test_as_datetime(self):
        datetime = DateTime()
        datetime.year = 123
        datetime.month = 2
        datetime.day = 1
        datetime.hour = 10
        datetime.minute = 20
        datetime.sec = 10
        datetime.microsec = 100
        value = ttypes.Value(dtVal=datetime)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_datetime()

        datetime_val = value_wrapper.as_datetime()
        assert isinstance(datetime_val, DateTimeWrapper)
        assert datetime_val.get_hour() == 10
        assert datetime_val.get_minute() == 20
        assert datetime_val.get_sec() == 10
        assert datetime_val.get_microsec() == 100
        assert '123-02-01T10:20:10.000100' == str(datetime_val)
Пример #20
0
    def test_as_relationship(self):
        value = ttypes.Value(eVal=self.get_edge_value(b'Tom', b'Lily'))
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_edge()

        relationship = value_wrapper.as_relationship()
        assert isinstance(relationship, Relationship)

        # test with reversely
        reversely_value = ttypes.Value(eVal=self.get_edge_value(b'Lily', b'Tom', True))
        reversely_value_wrapper = ValueWrapper(reversely_value)
        reversely_relationship = reversely_value_wrapper.as_relationship()
        assert isinstance(reversely_relationship, Relationship)
        assert reversely_relationship == relationship

        # test with reversely no equal
        reversely_value = ttypes.Value(eVal=self.get_edge_value(b'Tom', b'Lily', True))
        reversely_value_wrapper = ValueWrapper(reversely_value)
        reversely_relationship = reversely_value_wrapper.as_relationship()
        assert isinstance(reversely_relationship, Relationship)
        assert reversely_relationship != relationship
Пример #21
0
    def test_as_node(self):
        value = ttypes.Value()
        value.set_vVal(self.get_vertex_value(b'Tom'))
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_vertex()

        node = value_wrapper.as_node()
        assert isinstance(node, Node)
        assert node.get_id().as_string() == 'Tom'
        assert node.has_tag('tag1')
        assert node.prop_names('tag1').sort() == [
            'prop0', 'prop1', 'prop2', 'prop3', 'prop4'
        ].sort()
        expect_values = [(v.as_int()) for v in node.prop_values('tag1')]
        assert expect_values == [0, 1, 2, 3, 4]
        assert node.tags() == ['tag0', 'tag1', 'tag2']
        assert list(node.properties('tag1').keys()).sort() == [
            'prop0', 'prop1', 'prop2', 'prop3', 'prop4'
        ].sort()
        expect_values = [(v.as_int())
                         for v in node.properties('tag1').values()]
        assert expect_values == [0, 1, 2, 3, 4]
Пример #22
0
def executing_query_with_params(query, indices, keys, graph_spaces, session, request):
    indices_list = [int(v) for v in indices.split(",")]
    key_list = [request.node.name + key for key in keys.split(",")]
    assert len(indices_list) == len(
        key_list
    ), f"Length not match for keys and indices: {keys} <=> {indices}"
    vals = []
    register_lock.acquire()
    for (key, index) in zip(key_list, indices_list):
        vals.append(ValueWrapper(register_dict[key][index]))
    register_lock.release()
    ngql = combine_query(query).format(*vals)
    exec_query(request, ngql, session, graph_spaces)
Пример #23
0
    def test_as_list(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_sVal(b"car")
        val_list = NList()
        val_list.values = [str_val1, str_val2]
        value.set_lVal(val_list)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_list()

        list_val = value_wrapper.as_list()
        assert isinstance(list_val, list)
        expect_result = [ValueWrapper(ttypes.Value(sVal=b"word")),
                         ValueWrapper(ttypes.Value(sVal=b"car"))]
        assert list_val == expect_result
Пример #24
0
    def test_as_map(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_sVal(b"car")
        map_val = NMap()
        map_val.kvs = {b"a": str_val1, b"b": str_val2}
        value.set_mVal(map_val)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_map()

        map_val = value_wrapper.as_map()
        assert isinstance(map_val, dict)
        expect_result = dict()
        expect_result["a"] = ValueWrapper(ttypes.Value(sVal=b"word"))
        expect_result["b"] = ValueWrapper(ttypes.Value(sVal=b"car"))
        assert map_val == expect_result
Пример #25
0
    def test_as_set(self):
        value = ttypes.Value()
        str_val1 = ttypes.Value()
        str_val1.set_sVal(b"word")
        str_val2 = ttypes.Value()
        str_val2.set_sVal(b"car")
        set_val = NSet()
        set_val.values = set()
        set_val.values.add(str_val1)
        set_val.values.add(str_val2)
        value.set_uVal(set_val)
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_set()

        set_val = value_wrapper.as_set()
        assert isinstance(set_val, set)
        expect_result = set()
        expect_result.add(ValueWrapper(ttypes.Value(sVal=b"word")))
        expect_result.add(ValueWrapper(ttypes.Value(sVal=b"car")))
        assert set_val == expect_result
Пример #26
0
    def test_as_relationship(self):
        value = ttypes.Value(eVal=self.get_edge_value(b'Tom', b'Lily'))
        value_wrapper = ValueWrapper(value)
        assert value_wrapper.is_edge()

        relationship = value_wrapper.as_relationship()
        assert isinstance(relationship, Relationship)

        # test with reversely
        reversely_value = ttypes.Value(
            eVal=self.get_edge_value(b'Lily', b'Tom', True))
        reversely_value_wrapper = ValueWrapper(reversely_value)
        reversely_relationship = reversely_value_wrapper.as_relationship()
        assert isinstance(reversely_relationship, Relationship)
        assert reversely_relationship == relationship

        # test with reversely no equal
        reversely_value = ttypes.Value(
            eVal=self.get_edge_value(b'Tom', b'Lily', True))
        reversely_value_wrapper = ValueWrapper(reversely_value)
        reversely_relationship = reversely_value_wrapper.as_relationship()
        assert isinstance(reversely_relationship, Relationship)
        assert reversely_relationship != relationship

        relationship.ranking() == 100
        relationship.edge_name() == 'classmate'
        relationship.start_vertex_id().as_string() == 'Lily'
        relationship.start_vertex_id().as_string() == 'Tom'
        assert relationship.keys() == [
            'prop0', 'prop1', 'prop2', 'prop3', 'prop4'
        ]
        expect_values = [(v.as_int()) for v in relationship.values()]
        assert expect_values == [0, 1, 2, 3, 4]
        assert list(relationship.properties().keys()).sort() == [
            'prop0', 'prop1', 'prop2', 'prop3', 'prop4'
        ].sort()
        expect_values = [(v.as_int())
                         for v in relationship.properties().values()]
        assert expect_values == [0, 1, 2, 3, 4]

        # test empty props
        value = ttypes.Value(
            eVal=self.get_edge_value(b'Tom', b'Lily', empty_props=True))
        relationship = ValueWrapper(value).as_relationship()
        assert relationship.keys() == []
        assert relationship.values() == []
        assert len(relationship.properties()) == 0
Пример #27
0
 def get_id(self):
     if len(self._row.values) < 1:
         raise RuntimeError('The row value is bad format, '
                            'get vertex id failed: len is {}'.format(
                                len(self._row.values)))
     return ValueWrapper(self._row.values[0], self._decode_type)
Пример #28
0
    def test_all_interface(self):
        result = self.get_result_set()
        assert result.space_name() == "test"
        assert result.comment() == "Permission"
        assert result.error_msg() == "Permission"
        assert result.error_code() == ErrorCode.E_BAD_PERMISSION
        assert result.plan_desc() is None
        assert result.latency() == 100
        assert not result.is_empty()
        assert not result.is_succeeded()
        expect_keys = [
            "col1_empty", "col2_null", "col3_bool", "col4_int", "col5_double",
            "col6_string", "col7_list", "col8_set", "col9_map", "col10_time",
            "col11_date", "col12_datetime", "col13_vertex", "col14_edge",
            "col15_path"
        ]
        assert result.keys() == expect_keys
        assert result.col_size() == 15
        assert result.row_size() == 2

        # test column_values
        assert len(result.column_values("col6_string")) == 2
        assert result.column_values("col6_string")[0].is_string()
        assert result.column_values(
            "col6_string")[0].as_string() == "hello world"
        # test row_values
        assert len(result.row_values(0)) == 15
        assert result.row_values(0)[5].is_string()
        assert result.row_values(0)[5].as_string() == "hello world"

        # test rows
        assert len(result.rows()) == 2
        assert len(result.rows()[0].values) == 15
        assert isinstance(result.rows()[0].values[0], Value)
        assert isinstance(result.get_row_types(), list)

        # test get_row_types
        assert result.get_row_types() == [
            ttypes.Value.__EMPTY__, ttypes.Value.NVAL, ttypes.Value.BVAL,
            ttypes.Value.IVAL, ttypes.Value.FVAL, ttypes.Value.SVAL,
            ttypes.Value.LVAL, ttypes.Value.UVAL, ttypes.Value.MVAL,
            ttypes.Value.TVAL, ttypes.Value.DVAL, ttypes.Value.DTVAL,
            ttypes.Value.VVAL, ttypes.Value.EVAL, ttypes.Value.PVAL
        ]

        # test record
        in_use = False
        for record in result:
            in_use = True
            record.size() == 15

            # test keys()
            assert record.keys() == expect_keys
            # test values()
            values = record.values()
            assert len(record.values()) == 15
            assert record.values()[0].is_empty()
            assert record.values()[5].is_string()
            assert record.values()[5].is_string()
            assert record.values()[5].as_string() == "hello world"

            # test get_value()
            assert record.get_value(0).is_empty()
            assert values[0].is_empty()
            assert record.get_value(1).is_null()
            assert record.get_value(1).as_null() == Null(Null.BAD_DATA)
            null_value = Value(nVal=Null.BAD_DATA)
            assert record.get_value(1) == ValueWrapper(null_value)
            assert str(record.get_value(1).as_null()) == 'BAD_DATA'

            # test get_value_by_key()
            assert record.get_value_by_key('col2_null').is_null()
            assert record.get_value_by_key('col3_bool').is_bool()
            assert not record.get_value_by_key('col3_bool').as_bool()

            # get_value_by_key with not exited key
            try:
                record.get_value_by_key('not existed')
                assert False, 'Not expect here'
            except InvalidKeyException as e:
                assert True
                assert e.message == "KeyError: `not existed'"
            assert values[1].is_null()
            assert record.get_value(2).is_bool()
            assert not record.get_value(2).as_bool()
            assert record.get_value(2).is_bool()
            assert record.get_value(3).is_int()
            assert record.get_value(3).as_int() == 100
            assert record.get_value(4).is_double()
            assert record.get_value(4).as_double() == 10.01
            assert record.get_value(5).is_string()
            assert record.get_value(5).as_string() == "hello world"
            assert record.get_value(6).is_list()
            assert record.get_value(7).is_set()
            assert record.get_value(8).is_map()
            assert record.get_value(9).is_time()
            assert record.get_value(10).is_date()
            assert record.get_value(11).is_datetime()
            assert record.get_value(12).is_vertex()
            assert record.get_value(13).is_edge()
            assert record.get_value(14).is_path()
        assert in_use

        # test use iterator again
        in_use = False
        for record in result:
            in_use = True
            record.size() == 15
        assert in_use
Пример #29
0
 def compare_value(self, lhs: ValueWrapper, rhs: ValueWrapper):
     """
     lhs and rhs represent response data and expected data respectively
     """
     if lhs.is_null():
         return rhs.is_null() and lhs.as_null() == rhs.as_null()
     if lhs.is_empty():
         return rhs.is_empty()
     if lhs.is_bool():
         return rhs.is_bool() and lhs.as_bool() == rhs.as_bool()
     if lhs.is_int():
         return rhs.is_int() and lhs.as_int() == rhs.as_int()
     if lhs.is_double():
         return (rhs.is_double()
                 and math.fabs(lhs.as_double() - rhs.as_double()) < 1.0E-8)
     if lhs.is_string():
         return rhs.is_string() and lhs.as_string() == rhs.as_string()
     if lhs.is_date():
         return (rhs.is_date() and lhs.as_date() == rhs.as_date()) or (
             rhs.is_string() and str(lhs.as_date()) == rhs.as_string())
     if lhs.is_time():
         return (rhs.is_time() and lhs.as_time() == rhs.as_time()) or (
             rhs.is_string() and str(lhs.as_time()) == rhs.as_string())
     if lhs.is_datetime():
         return ((rhs.is_datetime()
                  and lhs.as_datetime() == rhs.as_datetime())
                 or (rhs.is_string()
                     and str(lhs.as_datetime()) == rhs.as_string()))
     if lhs.is_list():
         return rhs.is_list() and self.compare_list(lhs.as_list(),
                                                    rhs.as_list())
     if lhs.is_set():
         return rhs.is_set() and self._compare_list(
             lhs.as_set(), rhs.as_set(), self.compare_value)
     if lhs.is_map():
         return rhs.is_map() and self.compare_map(lhs.as_map(),
                                                  rhs.as_map())
     if lhs.is_vertex():
         return rhs.is_vertex() and self.compare_node(
             lhs.as_node(), rhs.as_node())
     if lhs.is_edge():
         return rhs.is_edge() and self.compare_edge(lhs.as_relationship(),
                                                    rhs.as_relationship())
     if lhs.is_path():
         return rhs.is_path() and self.compare_path(lhs.as_path(),
                                                    rhs.as_path())
     return False