def testMessageParser(self):
        WidgetMessage = messages.model_message(Widget)

        message = WidgetMessage(title='The Doctor', content='Time Lord')
        request = Bunch(body=unicode(protojson.encode_message(message)))

        parser = MessageParser().process(request, WidgetMessage)

        assert parser.validate()
        assert parser.container == message

        w = Widget()
        parser.update(w)

        assert w.title == message.title
        assert w.content == message.content

        # Partial update
        message = WidgetMessage(title='Susan')
        request = Bunch(body=unicode(protojson.encode_message(message)))
        parser = MessageParser().process(request, WidgetMessage)
        parser.update(w)

        assert w.title == 'Susan'
        assert w.content == 'Time Lord'
    def testMessageParser(self):
        WidgetMessage = messages.model_message(Widget)

        message = WidgetMessage(title='The Doctor', content='Time Lord')
        request = Bunch(body=unicode(protojson.encode_message(message)))

        parser = MessageParser().process(request, WidgetMessage)

        assert parser.validate()
        assert parser.container == message

        w = Widget()
        parser.update(w)

        assert w.title == message.title
        assert w.content == message.content

        # Partial update
        message = WidgetMessage(title='Susan')
        request = Bunch(body=unicode(protojson.encode_message(message)))
        parser = MessageParser().process(request, WidgetMessage)
        parser.update(w)

        assert w.title == 'Susan'
        assert w.content == 'Time Lord'
Пример #3
0
 def encode_proto(msg):
   if msg is None:
     return ''
   elif isinstance(msg, list):
     msg_list = msg
     csv = ", ".join(protojson.encode_message(msg) for msg in msg_list)
     return "[" + csv + "]"
   else:
     return protojson.encode_message(msg)
Пример #4
0
    def setUp(self):
        # Do not need much parent construction functionality.

        self.schema = "http"
        self.server = None

        self.request = Message(value=u"The request value")
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u"The response value")
        self.encoded_response = protojson.encode_message(self.response)
Пример #5
0
    def setUp(self):
        # Do not need much parent construction functionality.

        self.schema = 'http'
        self.server = None

        self.request = Message(value=u'The request value')
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u'The response value')
        self.encoded_response = protojson.encode_message(self.response)
Пример #6
0
 def EncodeProto(msg):
   if msg is None:
     return ""
   elif isinstance(msg, list):
     # A list of ProtoRPC messages needs to be serialized into a JSON list by
     # serializing each individual message.
     msg_list = msg
     csv = ", ".join(protojson.encode_message(msg) for msg in msg_list)
     return "[" + csv + "]"
   else:
     return protojson.encode_message(msg)
    def setUp(self):
        super(HttpTransportUrllibTest, self).setUp()
        self.original_urlfetch = transport.urlfetch
        transport.urlfetch = None

        self.trans = transport.HttpTransport("http://myserver/myservice", protocol=protojson)

        self.request = Message(value=u"The request value")
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u"The response value")
        self.encoded_response = protojson.encode_message(self.response)

        self.mox = mox.Mox()
        self.mox.StubOutWithMock(urllib2, "urlopen")
Пример #8
0
    def setUp(self):
        super(HttpTransportUrllibTest, self).setUp()
        self.original_urlfetch = transport.urlfetch
        transport.urlfetch = None

        self.trans = transport.HttpTransport('http://myserver/myservice',
                                             protocol=protojson)

        self.request = Message(value=u'The request value')
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u'The response value')
        self.encoded_response = protojson.encode_message(self.response)

        self.mox = mox.Mox()
        self.mox.StubOutWithMock(urllib2, 'urlopen')
Пример #9
0
 def admin(self):
     self.meta.view.template_name = 'angular/admin-index.html'
     active_user = UserSvc.get_current_user()
     user = Account.transform_message(active_user)
     self.context['active_user'] = protojson.encode_message(user)
     self.context['logout_url'] = users.create_logout_url('/')
     self.context['commission'] = settings.get('paypal').get('commission')
Пример #10
0
  def testHandleObjectStateChangeEvent_attemptEvent(self):
    request = self._CreateTestRequest(state=common.RequestState.COMPLETED)
    command = self._CreateTestCommand(request,
                                      state=common.CommandState.COMPLETED)
    attempt = self._CreateTestCommandAttempt(
        command,
        state=common.CommandState.COMPLETED,
        total_test_count=5,
        failed_test_count=1,
        failed_test_run_count=1,
        start_time=datetime.datetime(2016, 12, 1, 0, 0, 0),
        end_time=datetime.datetime(2016, 12, 1, 0, 0, 1))

    event_message = api_messages.CommandAttemptEventMessage(
        type=common.ObjectEventType.COMMAND_ATTEMPT_STATE_CHANGED,
        attempt=datastore_entities.CommandAttemptToMessage(attempt),
        old_state=common.CommandState.RUNNING,
        new_state=common.CommandState.COMPLETED,
        event_time=TIMESTAMP)

    self.testapp.post(
        notifier.OBJECT_EVENT_QUEUE_HANDLER_PATH,
        protojson.encode_message(event_message))
    self._AssertMessagePublished(
        event_message, notifier.COMMAND_ATTEMPT_EVENT_PUBSUB_TOPIC)
Пример #11
0
  def DoRequest(self,
                path,
                request,
                response_type,
                reg_path='/protorpc'):
    stdin = sys.stdin
    stdout = sys.stdout
    environ = os.environ
    try:
      sys.stdin = cStringIO.StringIO(protojson.encode_message(request))
      sys.stdout = cStringIO.StringIO()

      os.environ = webapp_test_util.GetDefaultEnvironment()
      os.environ['PATH_INFO'] = path
      os.environ['REQUEST_METHOD'] = 'POST'
      os.environ['CONTENT_TYPE'] = 'application/json'
      os.environ['wsgi.input'] = sys.stdin
      os.environ['wsgi.output'] = sys.stdout
      os.environ['CONTENT_LENGTH'] = len(sys.stdin.getvalue())

      service_handlers.run_services(
        [('/my_service', GetCalled.new_factory(self))], reg_path)

      header, body = sys.stdout.getvalue().split('\n\n', 1)

      return (header.split('\n')[0],
              protojson.decode_message(response_type, body))
    finally:
      sys.stdin = stdin
      sys.stdout = stdout
      os.environ = environ
Пример #12
0
    def SubmitHostEvents(self, request):
        """Submit a bundle of cluster host events for processing.

    Args:
      request: a HostEventList
    Returns:
      a VoidMessage
    """
        # Convert the request message to json for the taskqueue payload
        encoded_message = protojson.encode_message(request)  # pytype: disable=module-attr
        json_message = json.loads(encoded_message)
        host_events = json_message.get("host_events")
        if not host_events:
            raise endpoints.BadRequestException("Request has no host_events.")
        logging.info(
            "Submitting host event message with size %d and %d events",
            len(encoded_message), len(host_events))
        for event_chunk in chunks(host_events, CHUNK_SIZE):
            logging.info("Queuing host event chunk of size %d",
                         len(event_chunk))
            task_scheduler.AddCallableTask(
                self._ProcessHostEventWithNDB,
                event_chunk,
                _queue=host_event.HOST_EVENT_QUEUE_NDB,
                _target="%s.%s" %
                (common.GetServiceVersion(), common.GetServiceName()))
        logging.debug("Submitted host event message.")
        return message_types.VoidMessage()
Пример #13
0
 def to_csv(cls):
     # TODO: Move to separate file.
     from protorpc import protojson
     import io
     import csv
     import json
     _csv_header = [
         'created',
         'email',
         'folders',
     ]
     header = _csv_header
     ents, _, _ = cls.search(limit=5000)
     rows = []
     for ent in ents:
         row = json.loads(protojson.encode_message(ent.to_message()))
         for key in row.keys():
             if key not in header:
                 del row[key]
         for key in row:
             if key == 'folders':
                 row[key] = json.dumps(row[key])
             if isinstance(row[key], unicode):
                 row[key] = row[key].encode('utf-8')
         rows.append(row)
     if not rows:
         return ''
     fp = io.BytesIO()
     writer = csv.DictWriter(fp, header)
     writer.writeheader()
     writer.writerows(rows)
     fp.seek(0)
     return fp.read()
    def setUp(self):
        super(HttpTransportUrlfetchTest, self).setUp()

        self.trans = transport.HttpTransport("http://myserver/myservice", protocol=protojson)

        self.request = Message(value=u"The request value")
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u"The response value")
        self.encoded_response = protojson.encode_message(self.response)

        self.mox = mox.Mox()
        self.mox.StubOutWithMock(urlfetch, "create_rpc")
        self.mox.StubOutWithMock(urlfetch, "make_fetch_call")

        self.urlfetch_rpc = self.mox.CreateMockAnything()
Пример #15
0
def SendRequestStateNotification(request_id, message):
  request = GetRequest(request_id)
  payload = zlib.compress(six.ensure_binary(protojson.encode_message(message)))  # pytype: disable=module-attr
  task_scheduler.AddTask(
      queue_name=common.OBJECT_EVENT_QUEUE, payload=payload, transactional=True)
  request.notify_state_change = False
  request.put()
  return request
Пример #16
0
def message_to_dict(message):
    '''Returns an instance of an encoded json string.

    :param message: Instance of a response protorpc `Message`.
  '''
    if not isinstance(message, messages.Message):
        raise ValueError('Value must be an instance of messages.Message.')
    return loads(protojson.encode_message(message))
def message_to_dict(message):
  '''Returns an instance of an encoded json string.

    :param message: Instance of a response protorpc `Message`.
  '''
  if not isinstance(message, messages.Message):
    raise ValueError('Value must be an instance of messages.Message.')
  return loads(protojson.encode_message(message))
Пример #18
0
    def setUp(self):
        super(HttpTransportUrlfetchTest, self).setUp()

        self.trans = transport.HttpTransport('http://myserver/myservice',
                                             protocol=protojson)

        self.request = Message(value=u'The request value')
        self.encoded_request = protojson.encode_message(self.request)

        self.response = Message(value=u'The response value')
        self.encoded_response = protojson.encode_message(self.response)

        self.mox = mox.Mox()
        self.mox.StubOutWithMock(urlfetch, 'create_rpc')
        self.mox.StubOutWithMock(urlfetch, 'make_fetch_call')

        self.urlfetch_rpc = self.mox.CreateMockAnything()
Пример #19
0
 def testEncodeDateTime(self):
   for datetime_string, datetime_vals in (
       ('2012-09-30T15:31:50.262000', (2012, 9, 30, 15, 31, 50, 262000)),
       ('2012-09-30T15:31:50.262123', (2012, 9, 30, 15, 31, 50, 262123)),
       ('2012-09-30T15:31:50', (2012, 9, 30, 15, 31, 50, 0))):
     decoded_message = protojson.encode_message(
         MyMessage(a_datetime=datetime.datetime(*datetime_vals)))
     expected_decoding = '{"a_datetime": "%s"}' % datetime_string
     self.CompareEncoded(expected_decoding, decoded_message)
Пример #20
0
    def testMessageParser(self):
        WidgetMessage = messages.model_message(Widget)

        message = WidgetMessage(title='The Doctor', content='Time Lord')
        request = Bunch(body=unicode(protojson.encode_message(message)))

        parser = MessageParser().process(request, WidgetMessage)

        assert parser.validate()
        assert parser.container == message
Пример #21
0
 def render(self, *args, **kwargs):
     self.controller.events.before_render(controller=self.controller)
     self.controller.response.charset = 'utf-8'
     self.controller.response.content_type = 'application/json'
     data = self._get_data(default=VoidMessage())
     result = unicode(protojson.encode_message(data))
     self.controller.response.unicode_body = result
     self.controller.events.after_render(controller=self.controller, result=result)
     self.controller.response.headers["spend-time"] = str(time.time() - self.controller.request_start_time)
     return self.controller.response
Пример #22
0
def Encode(config_set):
    """Serializes MTT configuration.

  Args:
    config_set: MTT configuration set
  Returns:
    Configuration set serialized as a YAML string
  """
    msg = messages.Convert(config_set, _ConfigSetMessage)
    return _JsonToYaml(protojson.encode_message(msg))  # pytype: disable=module-attr
Пример #23
0
    def render(self, *args, **kwargs):
        self.controller.events.before_render(controller=self.controller)

        data = self._get_data(default=VoidMessage())
        result = unicode(protojson.encode_message(data))
        self.controller.response.content_type = 'application/json'
        self.controller.response.charset = 'utf-8'
        self.controller.response.unicode_body = result

        self.controller.events.after_render(controller=self.controller, result=result)

        return self.controller.response
Пример #24
0
def get_model_message(event, model):
    """
        Generic method to map a Django model to a response
        message
    """
    model_enum = EventModel(event.kind / CODES_PER_MODEL)
    mapper = MESSAGE_MAPPER_MAP.get(model_enum)

    if mapper:
        message = mapper.map(model)
        # TODO: don't encode and decode to string
        return json.loads(encode_message(message))
  def SubmitCommandEvents(self, request):
    """Submit a bundle of cluster command events for processing.

    Args:
      request: a CommandEventList
    Returns:
      a VoidMessage
    """

    # Convert the request message to json for the taskqueue payload
    json_message = json.loads(protojson.encode_message(request))  # pytype: disable=module-attr
    command_event_handler.EnqueueCommandEvents(json_message["command_events"])
    return message_types.VoidMessage()
Пример #26
0
  def testBadMessageError(self):
    code, content, headers = self.RawRequestError('nested_message',
                                                  content='{}')
    self.assertEquals(400, code)

    expected_content = protojson.encode_message(remote.RpcStatus(
      state=remote.RpcState.REQUEST_ERROR,
      error_message=('Error parsing ProtoRPC request '
                     '(Unable to parse request content: '
                     'Message NestedMessage is missing '
                     'required field a_value)')))
    self.assertEquals(util.pad_string(expected_content), content)
    self.assertEquals(headers['content-type'], 'application/json')
Пример #27
0
    def render(self, *args, **kwargs):
        self.controller.events.before_render(controller=self.controller)

        data = self._get_data(default=VoidMessage())
        result = unicode(protojson.encode_message(data))
        self.controller.response.content_type = 'application/json'
        self.controller.response.charset = 'utf-8'
        self.controller.response.unicode_body = result

        self.controller.events.after_render(controller=self.controller,
                                            result=result)

        return self.controller.response
Пример #28
0
 def run(self, *args, **kwargs):
     url = GoogleFormsPreprocessor.VIEW_URL.format(self.config.id)
     resp = requests.get(url)
     assert resp.status_code == 200
     html = resp.text
     soup = bs4.BeautifulSoup(html, 'html.parser')
     soup_content = soup.find(
         'div', {'class': 'freebirdFormviewerViewFormContent'})
     form_msg = self.parse_form(soup_content)
     msg_string_content = protojson.encode_message(form_msg)
     json_dict = json.loads(msg_string_content)
     self.pod.write_yaml(self.config.path, json_dict)
     self.pod.logger.info('Saved -> {}'.format(self.config.path))
Пример #29
0
 def testBadMessageError(self):
     code, content, headers = self.RawRequestError('nested_message',
                                                   content='{}')
     self.assertEquals(400, code)
     self.assertEquals(
         protojson.encode_message(
             remote.RpcStatus(
                 state=remote.RpcState.REQUEST_ERROR,
                 error_message=('Error parsing ProtoRPC request '
                                '(Unable to parse request content: '
                                'Message NestedMessage is missing '
                                'required field a_value)'))), content)
     self.assertEquals(headers['content-type'], 'application/json')
Пример #30
0
 def testEncodeDateTime(self):
     for datetime_string, datetime_vals in (('2012-09-30T15:31:50.262000',
                                             (2012, 9, 30, 15, 31, 50,
                                              262000)),
                                            ('2012-09-30T15:31:50.262123',
                                             (2012, 9, 30, 15, 31, 50,
                                              262123)),
                                            ('2012-09-30T15:31:50',
                                             (2012, 9, 30, 15, 31, 50, 0))):
         decoded_message = protojson.encode_message(
             MyMessage(a_datetime=datetime.datetime(*datetime_vals)))
         expected_decoding = '{"a_datetime": "%s"}' % datetime_string
         self.CompareEncoded(expected_decoding, decoded_message)
Пример #31
0
 def fileset(self):
     commit = None
     if self.commit:
         commit = json.loads(protojson.encode_message(self.commit))
     return {
         'name': self.name.lower() if self.name else '',
         'commit': commit,
         'project': {
             'nickname': self.project.lower() if self.project else '',
             'owner': {
                 'nickname': self.owner.lower() if self.owner else '',
             },
         },
     }
Пример #32
0
def NewRequest(
    new_request_msg: api_messages.NewMultiCommandRequestMessage
) -> api_messages.RequestMessage:
    """Creates a new request.

  Args:
    new_request_msg: an api_messages.NewMultiCommandRequest object.
  Returns:
    A api_messages.Request object.
  """
    body = json.loads(protojson.encode_message(new_request_msg))  # pytype: disable=module-attr
    res = _GetAPIClient().requests().newMultiCommandRequest(
        body=body).execute()
    return protojson.decode_message(api_messages.RequestMessage,
                                    json.dumps(res))  # pytype: disable=module-attr
Пример #33
0
    def testErrorWithContent(self):
        status = remote.RpcStatus(state=remote.RpcState.REQUEST_ERROR,
                                  error_message='an error')
        urllib2.urlopen(mox.Func(self.VerifyRequest)).AndRaise(
            urllib2.HTTPError(
                'http://whatever', 500, 'An error occured',
                {'content-type': 'application/json'},
                StringIO.StringIO(protojson.encode_message(status))))

        self.mox.ReplayAll()

        rpc = self.trans.send_rpc(my_method.remote, self.request)
        rpc.wait()
        self.assertEquals(remote.RpcState.REQUEST_ERROR, rpc.state)
        self.assertEquals('an error', rpc.error_message)
        self.assertEquals(None, rpc.error_name)
Пример #34
0
    def testUpdate(self):
        test = self._CreateMockTest()
        test_msg = messages.Convert(test, messages.Test)
        test_msg.name = 'bar'
        test_msg.test_resource_defs[
            0].params = messages.TestResourceParameters(
                decompress_files=['foo'])
        data = protojson.encode_message(test_msg)

        res = self.app.put('/_ah/api/mtt/v1/tests/%s' % test.key.id(), data)

        obj = json.loads(res.body)
        self.assertEqual(str(test.key.id()), obj['id'])
        self.assertEqual(test_msg.name, obj['name'])
        self.assertEqual(
            test_msg.test_resource_defs[0].params.decompress_files,
            obj['test_resource_defs'][0]['params']['decompress_files'])
Пример #35
0
  def testErrorWithContent(self):
    status = remote.RpcStatus(state=remote.RpcState.REQUEST_ERROR,
                              error_message='an error')
    urllib2.urlopen(mox.Func(self.VerifyRequest)).AndRaise(
        urllib2.HTTPError('http://whatever',
                          500,
                          'An error occured',
                          {'content-type': 'application/json'},
                          StringIO.StringIO(protojson.encode_message(status))))

    self.mox.ReplayAll()

    rpc = self.trans.send_rpc(my_method.remote, self.request)
    rpc.wait()
    self.assertEquals(remote.RpcState.REQUEST_ERROR, rpc.state)
    self.assertEquals('an error', rpc.error_message)
    self.assertEquals(None, rpc.error_name)
    def testRequestEventMessage_legacyClientCompatibility(self):
        """Tests whether RequestEventMessage is compatible with legacy clients."""
        request = datastore_entities.Request(
            id='request_id',
            user='******',
            command_infos=[
                datastore_entities.CommandInfo(command_line='command_line')
            ])
        message = api_messages.RequestEventMessage(
            type='request_state_changed',
            request_id=request.key.id(),
            new_state=common.RequestState.RUNNING,
            request=datastore_entities.ToMessage(request))

        obj = json.loads(protojson.encode_message(message))

        self.assertEqual('request_state_changed', obj.get('type'))
        self.assertEqual('request_id', obj.get('request_id'))
        self.assertEqual('RUNNING', obj.get('new_state'))
Пример #37
0
  def __write_error(self, status_code, error_message=None):
    """Return the HTTP status line and body for a given error code and message.

    Args:
      status_code: HTTP status code to be returned.
      error_message: Error message to be returned.

    Returns:
      Tuple (http_status, body):
        http_status: HTTP status line, e.g. 200 OK.
        body: Body of the HTTP request.
    """
    if error_message is None:
      error_message = httplib.responses[status_code]
    status = '%d %s' % (status_code, httplib.responses[status_code])
    message = EndpointsErrorMessage(
        state=EndpointsErrorMessage.State.APPLICATION_ERROR,
        error_message=error_message)
    return status, protojson.encode_message(message)
Пример #38
0
    def __write_error(self, status_code, error_message=None):
        """Return the HTTP status line and body for a given error code and message.

    Args:
      status_code: HTTP status code to be returned.
      error_message: Error message to be returned.

    Returns:
      Tuple (http_status, body):
        http_status: HTTP status line, e.g. 200 OK.
        body: Body of the HTTP request.
    """
        if error_message is None:
            error_message = httplib.responses[status_code]
        status = '%d %s' % (status_code, httplib.responses[status_code])
        message = EndpointsErrorMessage(
            state=EndpointsErrorMessage.State.APPLICATION_ERROR,
            error_message=error_message)
        return status, protojson.encode_message(message)
Пример #39
0
 def save_stats(self, stats):
     """Merges a list of stats into the translator stats file."""
     if self.pod.file_exists(Translator.TRANSLATOR_STATS_PATH):
         content = self.pod.read_yaml(Translator.TRANSLATOR_STATS_PATH)
         create = False
     else:
         content = {}
         create = True
     if self.KIND not in content:
         content[self.KIND] = {}
     for stat in copy.deepcopy(stats):
         stat_json = json.loads(protojson.encode_message(stat))
         lang = stat_json.pop('lang')
         content[self.KIND][lang] = stat_json
     yaml_content = yaml.safe_dump(content, default_flow_style=False)
     self.pod.write_file(Translator.TRANSLATOR_STATS_PATH, yaml_content)
     if create:
         self.pod.logger.info('Saved: {}'.format(Translator.TRANSLATOR_STATS_PATH))
     else:
         self.pod.logger.info('Updated: {}'.format(Translator.TRANSLATOR_STATS_PATH))
Пример #40
0
    def add_by_key(self, key, obj, timeout=None, message_type=None):
        """
            Adds a value to the cache

            Encodes protorpc messages
        """
        if timeout is None:
            timeout = self.default_timeout

        if message_type:
            obj = encode_message(obj)

        try:
            return self.cache.add(key,
                                  obj,
                                  version=self.version,
                                  timeout=timeout)
        except ValueError as e:
            # might have exceeded the key/value memcache size limit
            logging.debug(e)
 def run(self, *args, **kwargs):
     url = GoogleFormsPreprocessor.VIEW_URL.format(self.config.id)
     resp = requests.get(url)
     if resp.status_code != 200:
         raise Error('Error requesting -> {}'.format(url))
     html = resp.text
     if SIGN_IN_PAGE_SENTINEL in html:
         raise Error(
             'Error requesting -> {} -> Are you sure the form is publicly'
             ' viewable?'.format(url))
     soup = bs4.BeautifulSoup(html, 'html.parser')
     soup_content = soup.find(
         'div', {'class': 'freebirdFormviewerViewFormContent'})
     form_msg = self.parse_form(soup_content)
     msg_string_content = protojson.encode_message(form_msg)
     json_dict = json.loads(msg_string_content)
     if self.config.translate:
         json_dict = self.tag_keys_for_translation(json_dict)
     self.pod.write_yaml(self.config.path, json_dict)
     self.pod.logger.info('Saved -> {}'.format(self.config.path))
Пример #42
0
Файл: base.py Проект: grow/grow
 def _get_stats_to_download(self, locales):
     # 'stats' maps the service name to a mapping of languages to stats.
     if not self.pod.file_exists(Translator.TRANSLATOR_STATS_PATH):
         return {}
     stats = self.pod.read_yaml(Translator.TRANSLATOR_STATS_PATH)
     if self.KIND not in stats:
         self.pod.logger.info(
             'Nothing found to download from {}'.format(self.KIND))
         return {}
     stats_to_download = stats[self.KIND]
     if locales:
         stats_to_download = dict([(lang, stat)
                                   for (lang, stat) in stats_to_download.iteritems()
                                   if lang in locales])
     for lang, stat in stats_to_download.iteritems():
         if isinstance(stat, TranslatorStat):
             stat = json.loads(protojson.encode_message(stat))
         stat['lang'] = lang
         stat_message = protojson.decode_message(TranslatorStat, json.dumps(stat))
         stats_to_download[lang] = stat_message
     return stats_to_download
Пример #43
0
  def testHandleObjectStateChangeEvent_requestEvent(self):
    request = self._CreateTestRequest(state=common.RequestState.COMPLETED)
    event_message = api_messages.RequestEventMessage(
        type=common.ObjectEventType.REQUEST_STATE_CHANGED,
        request_id=REQUEST_ID,
        new_state=common.RequestState.COMPLETED,
        request=datastore_entities.ToMessage(request),
        summary='summary',
        total_test_count=0,
        failed_test_count=0,
        passed_test_count=0,
        failed_test_run_count=0,
        result_links=[self.result_link],
        total_run_time_sec=3,
        event_time=TIMESTAMP)

    self.testapp.post(
        notifier.OBJECT_EVENT_QUEUE_HANDLER_PATH,
        protojson.encode_message(event_message))
    self._AssertMessagePublished(
        event_message, notifier.REQUEST_EVENT_PUBSUB_TOPIC)
Пример #44
0
def PublishMessage(device_note_message, event_type):
    """Publish device note event message to pubsub."""
    if not env_config.CONFIG.use_google_api:
        logging.warning(
            "Unabled to send device note message to pubsub: use_google_api=False"
        )
        return
    device_note_message.publish_timestamp = _Now()
    encoded_message = protojson.encode_message(device_note_message)  # pytype: disable=module-attr
    data = common.UrlSafeB64Encode(encoded_message)
    if event_type == common.PublishEventType.DEVICE_NOTE_EVENT:
        data_type = "deviceNote"
        topic = DEVICE_NOTE_PUBSUB_TOPIC
    else:
        data_type = "hostNote"
        topic = HOST_NOTE_PUBSUB_TOPIC
    _PubsubClient.PublishMessages(topic, [{
        "data": data,
        "attributes": {
            "type": data_type,
        }
    }])
Пример #45
0
 def save_stats(self, stats):
     """Merges a list of stats into the translator stats file."""
     if self.pod.file_exists(Translator.TRANSLATOR_STATS_PATH):
         content = self.pod.read_yaml(Translator.TRANSLATOR_STATS_PATH)
         create = False
     else:
         content = {}
         create = True
     if self.KIND not in content:
         content[self.KIND] = {}
     for stat in copy.deepcopy(stats):
         stat_json = json.loads(protojson.encode_message(stat))
         lang = stat_json.pop('lang')
         content[self.KIND][lang] = stat_json
     yaml_content = yaml.safe_dump(content, default_flow_style=False)
     self.pod.write_file(Translator.TRANSLATOR_STATS_PATH, yaml_content)
     if create:
         self.pod.logger.info('Saved: {}'.format(
             Translator.TRANSLATOR_STATS_PATH))
     else:
         self.pod.logger.info('Updated: {}'.format(
             Translator.TRANSLATOR_STATS_PATH))
Пример #46
0
 def to_string(cls, message):
   return protojson.encode_message(message)
Пример #47
0
Файл: base.py Проект: grow/grow
def translator_stat_representer(dumper, stat):
    content = json.loads(protojson.encode_message(stat))
    content.pop('lang')  # Exclude from serialization.
    return dumper.represent_mapping('tag:yaml.org,2002:map', content)
Пример #48
0
 def to_string(self):
   return protojson.encode_message(self.to_message())
Пример #49
0
 def testEncodeCustom(self):
   decoded_message = protojson.encode_message(MyMessage(a_custom=1))
   self.CompareEncoded('{"a_custom": 1}', decoded_message)
Пример #50
0
def json_encode_proto(proto_message):
  return protojson.encode_message(proto_message)
Пример #51
0
def encode_message_to_json(value):
  return encode_message(value)