Example #1
0
def test_device_common_len_65(pathlist=None):
    try:
        d = device.Device()
        d.from_pics(filename='pics_test_device_2.xml', pathlist=pathlist)

        m_1 = d.models[1][0]
        expected_value = 'TestDevice-2'
        p = 'Md'
        value = m_1.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" %
                            (p, str(value), str(expected_value)))

        m_63001 = d.models[63001][0]
        expected_value = -180
        p = 'int16_4'
        m_63001.points[p].value = expected_value
        value = m_63001.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" %
                            (p, str(value), str(expected_value)))

    except Exception, e:
        print '*** Failure test_device_common_len_65: %s' % str(e)
        return False
Example #2
0
 def test_device_from_pics(self):
     d1 = device.Device()
     d1.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)
     d2 = create_test_device_1()
     not_equal = d1.not_equal(d2)
     if not_equal:
         raise Exception(not_equal)
Example #3
0
def test_sunspec_client_device_1(pathlist=None):

    try:
        d = client.SunSpecClientDevice(client.MAPPED,
                                       slave_id=1,
                                       name='mbmap_test_device_1.xml',
                                       pathlist=pathlist)
        d.read()

        dp = device.Device()
        dp.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)
        not_equal = dp.not_equal(d.device)
        if not_equal:
            raise Exception(not_equal)

        expected = 'SunSpecTest'
        if d.common.Mn != expected:
            raise Exception("'common.Mn' point mismatch: %s %s" %
                            (d.common.Mn, expected))

        expected = 'sn-123456789'
        if d.common.SN != expected:
            raise Exception("'common.SN' point mismatch: %s %s" %
                            (d.common.SN, expected))

        # int16 read and write
        d.model_63001.read()
        expected = -20
        if d.model_63001.int16_4 != expected:
            raise Exception("'model_63001.int16_4' point mismatch: %s %s" %
                            (d.model_63001.int16_4, expected))
        value = 330
        d.model_63001.int16_4 = value
        d.model_63001.write()
        d.model_63001.read()
        value = d.model_63001.int16_4
        if d.model_63001.int16_4 != value:
            raise Exception("'model_63001.int16_4' write failure: %s %s" %
                            (d.model_63001.int16_4, value))

        # string read and write
        expected = '12345678'
        if d.model_63001.string != expected:
            raise Exception("'model_63001.string' point mismatch: %s %s" %
                            (d.model_63001.string, expected))

        value = 'abcdefg'
        d.model_63001.string = value
        d.model_63001.write()
        d.model_63001.read()
        if d.model_63001.string != value:
            raise Exception("'model_63001.string' write failure: %s %s" %
                            (d.model_63001.string, value))

        d.close()

    except Exception, e:
        print '*** Failure test_sunspec_client_device_1: %s' % str(e)
        return False
Example #4
0
    def test_device_to_pics(self):
        d1 = device.Device()
        d1.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)

        root = ET.Element(pics.PICS_ROOT)
        d1.to_pics(root, single_repeating=False)
        # util.indent(root)
        # print ET.tostring(root)

        d = root.find(pics.PICS_DEVICE)
        if d is None:
            raise Exception("No '%s' elements found in '%s' element" % (pics.PICS_DEVICE, root.tag))

        d2 = device.Device()
        d2.from_pics(element=d)

        not_equal = d1.not_equal(d2)
        if not_equal:
            raise Exception(not_equal)
Example #5
0
    def test_device_constant_sf(self):
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)

        m = d.models[63001][0]
        p = 'uint32_4'
        value = m.points[p].value
        expected_value = 190
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" % (p, str(value), str(expected_value)))
Example #6
0
    def test_device_value_set(self):
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)

        m = d.models[63001][0]
        expected_value = -180
        p = 'int16_4'
        m.points[p].value = expected_value
        value = m.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" % (p, str(value), str(expected_value)))
Example #7
0
    def test_device_value_get(self):
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)

        m = d.models[63001][0]
        p = 'int16_4'
        value = m.points[p].value
        expected_value = -20
        if value != expected_value:
            raise Exception("Value '{}' mismatch: {} {}".format(
                p, str(value), str(expected_value)))
Example #8
0
def test_device_from_pics(pathlist=None):
    try:
        d1 = device.Device()
        d1.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)
        d2 = create_test_device_1()
        not_equal = d1.not_equal(d2)
        if not_equal:
            raise Exception(not_equal)
    except Exception, e:
        raise
        print '*** Failure test_device_from_pics: %s' % str(e)
        return False
Example #9
0
    def test_client_device(self):
        d = client.ClientDevice(client.MAPPED,
                                slave_id=1,
                                name='mbmap_test_device_1.xml',
                                pathlist=self.pathlist)
        d.scan()
        d.read_points()

        dp = device.Device()
        dp.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)
        not_equal = dp.not_equal(d)
        if not_equal:
            raise Exception(not_equal)
Example #10
0
    def test_device_value_set_rounding(self):
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)

        m = d.models[63001][0]
        m.points_sf['sunssf_1'].value = -1
        expected_value = 84.3
        p = 'int16_1'
        point = m.points[p]
        point.value_sf = point.sf_point.value_base
        point.value = expected_value
        value = point.value
        if abs(value - expected_value) > 0.1 / 100:
            raise Exception("Value '%s' mismatch: %s %s" %
                            (p, str(value), str(expected_value)))
Example #11
0
def test_client_device(pathlist=None):

    try:
        d = client.ClientDevice(client.MAPPED, slave_id=1, name='mbmap_test_device_1.xml', pathlist = pathlist)
        d.scan()
        d.read_points()

        dp = device.Device()
        dp.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)
        not_equal = dp.not_equal(d)
        if not_equal:
            raise Exception(not_equal)

    except Exception, e:
        print '*** Failure test_client_device: %s' % str(e)
        return False
Example #12
0
def test_device_constant_sf(pathlist=None):
    try:
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)

        m = d.models[63001][0]
        p = 'uint32_4'
        value = m.points[p].value
        expected_value = 190
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" %
                            (p, str(value), str(expected_value)))

    except Exception, e:
        print '*** Failure test_device_constant_sf: %s' % str(e)
        return False
Example #13
0
def test_device_value_set(pathlist=None):
    try:
        d = device.Device()
        d.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)

        m = d.models[63001][0]
        expected_value = -180
        p = 'int16_4'
        m.points[p].value = expected_value
        value = m.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" %
                            (p, str(value), str(expected_value)))

    except Exception, e:
        print '*** Failure test_device_value_get: %s' % str(e)
        return False
Example #14
0
    def test_device_common_len_65(self):
        d = device.Device()
        d.from_pics(filename='pics_test_device_2.xml', pathlist=self.pathlist)

        m_1 = d.models[1][0]
        expected_value = 'TestDevice-2'
        p = 'Md'
        value = m_1.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" % (p, str(value), str(expected_value)))

        m_63001 = d.models[63001][0]
        expected_value = -180
        p = 'int16_4'
        m_63001.points[p].value = expected_value
        value = m_63001.points[p].value
        if value != expected_value:
            raise Exception("Value '%s' mismatch: %s %s" % (p, str(value), str(expected_value)))
Example #15
0
def test_client_device(pathlist=None, raw_traceback=False):

    try:
        d = client.ClientDevice(client.MAPPED,
                                slave_id=1,
                                name='mbmap_test_device_1.xml',
                                pathlist=pathlist)
        d.scan()
        d.read_points()

        dp = device.Device()
        dp.from_pics(filename='pics_test_device_1.xml', pathlist=pathlist)
        not_equal = dp.not_equal(d)
        if not_equal:
            raise Exception(not_equal)

    except Exception as e:
        if raw_traceback:
            traceback.print_exc(file=sys.stdout)
        print('*** Failure test_client_device: %s' % str(e))
        return False
    return True
Example #16
0
    def test_sunspec_client_device_1(self):
        d = client.SunSpecClientDevice(client.MAPPED,
                                       slave_id=1,
                                       name='mbmap_test_device_1.xml',
                                       pathlist=self.pathlist)
        d.read()

        dp = device.Device()
        dp.from_pics(filename='pics_test_device_1.xml', pathlist=self.pathlist)
        not_equal = dp.not_equal(d.device)
        if not_equal:
            raise Exception(not_equal)

        expected = 'SunSpecTest'
        if d.common.Mn != expected:
            raise Exception("'common.Mn' point mismatch: %s %s" %
                            (d.common.Mn, expected))

        expected = 'sn-123456789'
        if d.common.SN != expected:
            raise Exception("'common.SN' point mismatch: %s %s" %
                            (d.common.SN, expected))

        # int16 read and write
        d.model_63001.read()
        expected = -20
        if d.model_63001.int16_4 != expected:
            raise Exception("'model_63001.int16_4' point mismatch: %s %s" %
                            (d.model_63001.int16_4, expected))
        value = 330
        d.model_63001.int16_4 = value
        d.model_63001.write()
        d.model_63001.read()
        value = d.model_63001.int16_4
        if d.model_63001.int16_4 != value:
            raise Exception("'model_63001.int16_4' write failure: %s %s" %
                            (d.model_63001.int16_4, value))

        # string read and write
        expected = '12345678'
        if d.model_63001.string != expected:
            raise Exception("'model_63001.string' point mismatch: %s %s" %
                            (d.model_63001.string, expected))

        value = 'abcdefg'
        d.model_63001.string = value
        d.model_63001.write()
        d.model_63001.read()
        if d.model_63001.string != value:
            raise Exception("'model_63001.string' write failure: %s %s" %
                            (d.model_63001.string, value))

        # write multiple
        d.model_63001.read()
        expected = 65524
        if d.model_63001.uint16_3 != expected:
            raise Exception("'model_63001.uint16_3' point mismatch: %s %s" %
                            (d.model_63001.uint16_3, expected))
        expected = 60
        if d.model_63001.uint16_4 != expected:
            raise Exception("'model_63001.uint16_4' point mismatch: %s %s" %
                            (d.model_63001.uint16_4, expected))
        expected = 7
        if d.model_63001.uint16_5 != expected:
            raise Exception("'model_63001.uint16_5' point mismatch: %s %s" %
                            (d.model_63001.uint16_5, expected))
        value_3 = 65525
        value_4 = 70
        value_5 = 8
        d.model_63001.uint16_3 = value_3
        d.model_63001.uint16_4 = value_4
        d.model_63001.uint16_5 = value_5
        d.model_63001.write()
        d.model_63001.read()
        value = d.model_63001.uint16_3
        if d.model_63001.uint16_3 != value_3:
            raise Exception("'model_63001.int16_3' write failure: %s %s" %
                            (d.model_63001.uint16_3, value_3))
        value = d.model_63001.uint16_4
        if d.model_63001.uint16_4 != value_4:
            raise Exception("'model_63001.int16_4' write failure: %s %s" %
                            (d.model_63001.uint16_4, value_4))
        value = d.model_63001.uint16_5
        if d.model_63001.uint16_5 != value_5:
            raise Exception("'model_63001.int16_5' write failure: %s %s" %
                            (d.model_63001.uint16_5, value_5))

        # write multiple
        d.model_63001.read()
        expected = value_3
        if d.model_63001.uint16_3 != expected:
            raise Exception("'model_63001.uint16_3' point mismatch: %s %s" %
                            (d.model_63001.uint16_3, expected))
        expected = value_4
        if d.model_63001.uint16_4 != expected:
            raise Exception("'model_63001.uint16_4' point mismatch: %s %s" %
                            (d.model_63001.uint16_4, expected))
        expected = value_5
        if d.model_63001.uint16_5 != expected:
            raise Exception("'model_63001.uint16_5' point mismatch: %s %s" %
                            (d.model_63001.uint16_5, expected))
        value_3 = 65524
        value_5 = 7
        d.model_63001.uint16_3 = value_3
        d.model_63001.uint16_5 = value_5
        d.model_63001.write()
        d.model_63001.read()
        value = d.model_63001.uint16_3
        if d.model_63001.uint16_3 != value_3:
            raise Exception("'model_63001.int16_3' write failure: %s %s" %
                            (d.model_63001.uint16_3, value_3))
        value = d.model_63001.uint16_4
        if d.model_63001.uint16_4 != value_4:
            raise Exception("'model_63001.int16_4' write failure: %s %s" %
                            (d.model_63001.uint16_4, value_4))
        value = d.model_63001.uint16_5
        if d.model_63001.uint16_5 != value_5:
            raise Exception("'model_63001.int16_5' write failure: %s %s" %
                            (d.model_63001.uint16_5, value_5))

        d.close()
Example #17
0
def create_test_device_1():

    d = device.Device()

    # create model 1 with values
    m1 = device.Model(device=d, mid=1)
    m1.load()
    d.models_list.append(m1)
    b = m1.blocks[0]
    b.points['Mn'].value_base = 'SunSpecTest'
    b.points['Md'].value_base = 'TestDevice-1'
    b.points['Opt'].value_base = 'opt_a_b_c'
    b.points['Vr'].value_base = '1.2.3'
    b.points['SN'].value_base = 'sn-123456789'
    b.points['DA'].value_base = 1

    # create model 63001 with values
    m2 = device.Model(device=d, mid=63001, mlen=188)
    m2.load()
    d.models_list.append(m2)

    # fixed block
    b = m2.blocks[0]
    b.points_sf['sunssf_1'].value_base = -10
    b.points_sf['sunssf_2'].value_base = 10
    b.points_sf['sunssf_3'].value_base = 0
    b.points_sf['sunssf_4'].value_base = 1
    b.points_sf['sunssf_5'].value_base = 2
    b.points_sf['sunssf_6'].value_base = 3
    b.points_sf['sunssf_7'].value_base = 4

    b.points['int16_1'].value_base = 1
    b.points['int16_2'].value_base = -1
    b.points['int16_3'].value_base = 2
    b.points['int16_4'].value_base = -2
    b.points['int16_5'].value_base = 3
    b.points['int16_u'].value_base = None
    b.points['uint16_1'].value_base = 4
    b.points['uint16_2'].value_base = 5
    b.points['uint16_3'].value_base = 65524
    b.points['uint16_4'].value_base = 6
    b.points['uint16_5'].value_base = 7
    b.points['uint16_u'].value_base = None
    b.points['acc16'].value_base = 8
    b.points['acc16_u'].value_base = None
    b.points['enum16'].value_base = 9
    b.points['enum16_u'].value_base = None
    b.points['bitfield16'].value_base = 10
    b.points['bitfield16_u'].value_base = None
    b.points['int32_1'].value_base = 11
    b.points['int32_2'].value_base = 12
    b.points['int32_3'].value_base = 13
    b.points['int32_4'].value_base = 14
    b.points['int32_5'].value_base = 15
    b.points['int32_u'].value_base = None
    b.points['uint32_1'].value_base = 16
    b.points['uint32_2'].value_base = 17
    b.points['uint32_3'].value_base = 18
    b.points['uint32_4'].value_base = 19
    b.points['uint32_5'].value_base = 20
    b.points['uint32_u'].value_base = None
    b.points['acc32'].value_base = 21
    b.points['acc32_u'].value_base = None
    b.points['enum32'].value_base = 22
    b.points['enum32_u'].value_base = None
    b.points['bitfield32'].value_base = 23
    b.points['bitfield32_u'].value_base = None
    b.points['ipaddr'].value_base = 0x01020304
    b.points['ipaddr_u'].value_base = None
    b.points['int64'].value_base = 24
    b.points['int64_u'].value_base = None
    b.points['acc64'].value_base = 25
    b.points['acc64_u'].value_base = None
    b.points['ipv6addr'].value_base = None
    b.points['ipv6addr_u'].value_base = None
    b.points['float32'].value_base = 26
    b.points['float32_u'].value_base = None
    b.points['string'].value_base = '12345678'
    b.points['string_u'].value_base = None

    # repeating block 1
    b = m2.blocks[1]
    b.points_sf['sunssf_8'].value_base = -2
    b.points_sf['sunssf_9'].value_base = -3

    b.points['int16_11'].value_base = 30
    b.points['int16_12'].value_base = 31
    b.points['int16_u'].value_base = None
    b.points['uint16_11'].value_base = 32
    b.points['uint16_12'].value_base = 33
    b.points['uint16_13'].value_base = 34
    b.points['uint16_u'].value_base = None
    b.points['int32'].value_base = 35
    b.points['int32_u'].value_base = None
    b.points['uint32'].value_base = 36
    b.points['uint32_u'].value_base = None

    # repeating block 2
    b = m2.blocks[2]
    b.points_sf['sunssf_8'].value_base = -4
    b.points_sf['sunssf_9'].value_base = -5

    b.points['int16_11'].value_base = 40
    b.points['int16_12'].value_base = 41
    b.points['int16_u'].value_base = None
    b.points['uint16_11'].value_base = 42
    b.points['uint16_12'].value_base = 43
    b.points['uint16_13'].value_base = 44
    b.points['uint16_u'].value_base = None
    b.points['int32'].value_base = 45
    b.points['int32_u'].value_base = None
    b.points['uint32'].value_base = 46
    b.points['uint32_u'].value_base = None

    # repeating block 3
    b = m2.blocks[3]
    b.points_sf['sunssf_8'].value_base = 2
    b.points_sf['sunssf_9'].value_base = 3

    b.points['int16_11'].value_base = 50
    b.points['int16_12'].value_base = 51
    b.points['int16_u'].value_base = None
    b.points['uint16_11'].value_base = 52
    b.points['uint16_12'].value_base = 53
    b.points['uint16_13'].value_base = 54
    b.points['uint16_u'].value_base = None
    b.points['int32'].value_base = 55
    b.points['int32_u'].value_base = None
    b.points['uint32'].value_base = 56
    b.points['uint32_u'].value_base = None

    # update scale factor values in points
    for block in m2.blocks:
        for point in block.points_list:
            if point.sf_point is not None:
                point.value_sf = point.sf_point.value_base

    return d