reader fully tested (again, says only 80ish percent, but testrunner includes method defs as untested code)
This commit is contained in:
committed by
Salad Dais
parent
950558377a
commit
e83be80e6d
@@ -8,7 +8,7 @@ import pprint
|
||||
import message_template
|
||||
from pyogp.lib.base.data import msg_tmpl
|
||||
from pyogp.lib.base.message.message_types import MsgFrequency, MsgTrust, \
|
||||
MsgEncoding, MsgDeprecation, MsgBlockType, MsgType
|
||||
MsgEncoding, MsgDeprecation, MsgBlockType, MsgType, sizeof
|
||||
|
||||
class MessageTemplateParser(object):
|
||||
def __init__(self, template_file):
|
||||
@@ -154,58 +154,40 @@ class MessageTemplateParser(object):
|
||||
var_size = -1
|
||||
if type_string == 'U8':
|
||||
var_type = MsgType.MVT_U8
|
||||
var_size = 1
|
||||
elif type_string == 'U16':
|
||||
var_type = MsgType.MVT_U16
|
||||
var_size = 2
|
||||
elif type_string == 'U32':
|
||||
var_type = MsgType.MVT_U32
|
||||
var_size = 4
|
||||
elif type_string == 'U64':
|
||||
var_type = MsgType.MVT_U64
|
||||
var_size = 8
|
||||
elif type_string == 'S8':
|
||||
var_type = MsgType.MVT_S8
|
||||
var_size = 1
|
||||
elif type_string == 'S16':
|
||||
var_type = MsgType.MVT_S16
|
||||
var_size = 2
|
||||
elif type_string == 'S32':
|
||||
var_type = MsgType.MVT_S32
|
||||
var_size = 4
|
||||
elif type_string == 'S64':
|
||||
var_type = MsgType.MVT_S64
|
||||
var_size = 8
|
||||
elif type_string == 'F32':
|
||||
var_type = MsgType.MVT_F32
|
||||
var_size = 4
|
||||
elif type_string == 'F64':
|
||||
var_type = MsgType.MVT_F64
|
||||
var_size = 8
|
||||
elif type_string == 'LLVector3':
|
||||
var_type = MsgType.MVT_LLVector3
|
||||
var_size = 12
|
||||
elif type_string == 'LLVector3d':
|
||||
var_type = MsgType.MVT_LLVector3d
|
||||
var_size = 24
|
||||
elif type_string == 'LLVector4':
|
||||
var_type = MsgType.MVT_LLVector4
|
||||
var_size = 16
|
||||
elif type_string == 'LLQuaternion':
|
||||
var_type = MsgType.MVT_LLQuaternion
|
||||
var_size = 12
|
||||
elif type_string == 'LLUUID':
|
||||
var_type = MsgType.MVT_LLUUID
|
||||
var_size = 16
|
||||
elif type_string == 'BOOL':
|
||||
var_type = MsgType.MVT_BOOL
|
||||
var_size = 1
|
||||
elif type_string == 'IPADDR':
|
||||
var_type = MsgType.MVT_IP_ADDR
|
||||
var_size = 4
|
||||
elif type_string == 'IPPORT':
|
||||
var_type = MsgType.MVT_IP_PORT
|
||||
var_size = 2
|
||||
elif type_string == 'Fixed' or type_string == 'Variable':
|
||||
if type_string == 'Fixed':
|
||||
var_type = MsgType.MVT_FIXED
|
||||
@@ -215,7 +197,10 @@ class MessageTemplateParser(object):
|
||||
var_size = int(parts[2])
|
||||
if var_size <= 0:
|
||||
raise Exception('Bad variable size')
|
||||
|
||||
|
||||
if var_size == -1:
|
||||
var_size = sizeof(var_type)
|
||||
|
||||
current_var = message_template.MessageTemplateVariable(parts[0], var_type, var_size)
|
||||
current_block.add_variable(current_var)
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ class MessageTemplateReader(object):
|
||||
offset = self.unpacker.unpack_data(data[MsgHeader.PHL_OFFSET:MsgHeader.PHL_OFFSET+1], MsgType.MVT_U8)
|
||||
|
||||
freq_bytes = self.current_template.frequency
|
||||
#fixed case
|
||||
#HACK: fixed case
|
||||
if freq_bytes == -1:
|
||||
freq_bytes = 4
|
||||
|
||||
@@ -135,8 +135,6 @@ class MessageTemplateReader(object):
|
||||
var_size = struct.unpack('>B', data[decode_pos:decode_pos+1])[0]
|
||||
elif data_size == 2:
|
||||
var_size = struct.unpack('>H', data[decode_pos:decode_pos+2])[0]
|
||||
print 'Data size 2'
|
||||
print 'Var size: ' + str(var_size)
|
||||
elif data_size == 4:
|
||||
var_size = struct.unpack('>I', data[decode_pos:decode_pos+4])[0]
|
||||
else:
|
||||
|
||||
@@ -249,7 +249,7 @@ class TestTemplateReader(unittest.TestCase):
|
||||
self.builder.next_block('Info')
|
||||
self.builder.add_data('AgentID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
|
||||
self.builder.add_data('LocationID', 0x00000001, MsgType.MVT_U32)
|
||||
self.builder.add_data('SimIP', 'www.testing.com', MsgType.MVT_IP_ADDR)
|
||||
self.builder.add_data('SimIP', '.com', MsgType.MVT_IP_ADDR)
|
||||
self.builder.add_data('SimPort', 80, MsgType.MVT_IP_PORT)
|
||||
self.builder.add_data('RegionHandle', 0x0000000000000001, MsgType.MVT_U64)
|
||||
self.builder.add_data('SeedCapability', "Testing", MsgType.MVT_VARIABLE)
|
||||
@@ -263,7 +263,20 @@ class TestTemplateReader(unittest.TestCase):
|
||||
|
||||
assert self.reader.get_data('Info', 'SeedCapability', MsgType.MVT_VARIABLE) == "Testing",\
|
||||
"TeleportFinish variable not read correctly"
|
||||
|
||||
assert self.reader.get_data('Info', 'SimPort', MsgType.MVT_IP_PORT) == 80,\
|
||||
"TeleportFinish variable not read correctly"
|
||||
|
||||
def test_read_medium(self):
|
||||
self.builder.new_message('ConfirmEnableSimulator')
|
||||
self.builder.next_block('AgentData')
|
||||
self.builder.add_data('AgentID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
|
||||
self.builder.add_data('SessionID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
|
||||
message, size = self.builder.build_message()
|
||||
message = PackFlags.LL_NONE + '\x00\x00\x00\x01' + '\x00' + message
|
||||
size = len(message)
|
||||
|
||||
assert self.reader.validate_message(message, size), "Variable invalid"
|
||||
assert self.reader.read_message(message), "Variable read fail"
|
||||
|
||||
def test_get_bad_data(self):
|
||||
self.reader.clear_message()
|
||||
|
||||
Reference in New Issue
Block a user