Commit e7e04835 authored by Jay's avatar Jay Committed by jay
Browse files

Protocol buffer header being fully populated and written to cnet output.

parent 036f0ed7
Loading
Loading
Loading
Loading
+176 −133

File changed.

Preview size limit exceeded, changes collapsed.

+16 −14
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ import sys
import pvl
import numpy as np

from autocnet.fileio import ControlNetFileV0002 as cnf
from autocnet.fileio import ControlNetFileV0002_pb2 as cnf

#TODO: Protobuf3 should be a conditional import, if availble use it, otherwise bail

@@ -14,7 +14,7 @@ DEFAULTUSERNAME = 'AutoControlNetGeneration'
def to_isis(path, C, mode='w', version=VERSION,
            headerstartbyte=HEADERSTARTBYTE,
            networkid='None', targetname='None',
            description='', username=DEFAULTUSERNAME):
            description='None', username=DEFAULTUSERNAME):
    """
    Parameters
    ----------
@@ -58,10 +58,12 @@ def to_isis(path, C, mode='w', version=VERSION,

    if isinstance(path, str):
        with IsisStore(path, mode) as store:
            buffer_header, buffer_header_size = store.create_buffer_header(C, version,
                                                                           headerstartbyte, networkid,
                                                                           targetname, description,
            buffer_header, buffer_header_size = store.create_buffer_header(C, networkid,
                                                                           targetname,
                                                                           description,
                                                                           username)

            print(buffer_header_size)
            store.write(buffer_header,HEADERSTARTBYTE)
            header = store.create_pvl_header(C, version, headerstartbyte, networkid,
                                targetname, description, username, buffer_header_size)
@@ -99,8 +101,8 @@ class IsisStore(object):
        self._handle.seek(offset)
        self._handle.write(data)

    def create_buffer_header(self, cnet, version, headerstartbyte,
                      networkid, targetname, description, username):
    def create_buffer_header(self, cnet, networkid, targetname,
                             description, username):
        """
        Create the Google Protocol Buffer header using the
        protobuf spec.
@@ -116,18 +118,18 @@ class IsisStore(object):
                  The serialized message to write
        """
        raw_header_message = cnf.ControlNetFileHeaderV0002()
        #raw_header_message.created = cnet.creationdate
        #raw_header_message.description = description
        #raw_header_message.lastModified = cnet.modifieddate
        raw_header_message.created = cnet.creationdate
        raw_header_message.lastModified = cnet.modifieddate
        raw_header_message.networkId = networkid
        raw_header_message.description = description
        raw_header_message.targetName = targetname
        #raw_header_message.userName = username
        raw_header_message.userName = username

        #raw_header_message.pointMessageSizes

        header_message = raw_header_message.encode_to_bytes()
        raw_header_message.pointMessageSizes.extend(range(10))
        print(dir(raw_header_message))
        header_message = raw_header_message.SerializeToString()
        header_message_size = sys.getsizeof(header_message)

        return header_message, header_message_size

    def create_pvl_header(self, cnet, version, headerstartbyte,
+21 −6
Original line number Diff line number Diff line
import os
from time import gmtime, strftime
import unittest
from unittest.mock import Mock
import sys
@@ -7,7 +8,7 @@ sys.path.insert(0, os.path.abspath('..'))
import pvl

from .. import io_controlnetwork
from .. import ControlNetFileV0002 as cnf
from .. import ControlNetFileV0002_pb2 as cnf

from autocnet.utils.utils import find_in_dict
from autocnet.control.control import C
@@ -21,18 +22,32 @@ class TestWriteIsisControlNetwork(unittest.TestCase):
        cnet = Mock(spec=C)
        cnet.n = 75
        cnet.m = 621
        cnet.creationdate = 'None'
        cnet.modifieddate = 'None'
        self.creation_time =  strftime("%Y-%m-%d %H:%M:%S", gmtime())
        cnet.creationdate = self.creation_time
        self.modified = 'Not modified'
        cnet.modifieddate = self.modified
        io_controlnetwork.to_isis('test.net', cnet, mode='wb')

    def test_create_buffer_header(self):
        header_message_size = 45
        header_message_size = 124
        with open('test.net', 'rb') as f:
            f.seek(io_controlnetwork.HEADERSTARTBYTE)
            raw_header_message = f.read(header_message_size)
            header_protocol = cnf.ControlNetFileHeaderV0002()
            self.assertEqual('', header_protocol.networkId)
            self.assertEqual('', header_protocol.targetName)
            header_protocol.ParseFromString(raw_header_message)

            #Non-repeating
            self.assertEqual('None', header_protocol.networkId)
            self.assertEqual('None', header_protocol.targetName)
            self.assertEqual(io_controlnetwork.DEFAULTUSERNAME,
                             header_protocol.userName)
            self.assertEqual(self.creation_time,
                             header_protocol.created)
            self.assertEqual('None', header_protocol.description)
            self.assertEqual(self.modified, header_protocol.lastModified)

            #Repeating
            self.assertEqual(list(range(10)), header_protocol.pointMessageSizes)

    def test_create_pvl_header(self):
        pvl_header = pvl.load('test.net')
+1 −1
Original line number Diff line number Diff line
@@ -2,4 +2,4 @@ numpy>=1.10.0
scipy
gdal>=2.0
pvl>=0.2.0
protobuf3
 No newline at end of file
protobuf==3.0.0b2
 No newline at end of file