Esempio n. 1
0
    def get_estimated_size_bytes(project, namespace, query, datastore):
        """Get the estimated size of the data returned by the given query.

    Cloud Datastore provides no way to get a good estimate of how large the
    result of a query is going to be. Hence we use the __Stat_Kind__ system
    table to get size of the entire kind as an approximate estimate, assuming
    exactly 1 kind is specified in the query.
    See https://cloud.google.com/datastore/docs/concepts/stats.
    """
        kind = query.kind[0].name
        latest_timestamp = ReadFromDatastore.query_latest_statistics_timestamp(
            project, namespace, datastore)
        logging.info('Latest stats timestamp for kind %s is %s', kind,
                     latest_timestamp)

        kind_stats_query = (helper.make_kind_stats_query(
            namespace, kind, latest_timestamp))

        req = helper.make_request(project, namespace, kind_stats_query)
        resp = datastore.run_query(req)
        if not resp.batch.entity_results:
            raise RuntimeError("Datastore statistics for kind %s unavailable" %
                               kind)

        entity = resp.batch.entity_results[0].entity
        return datastore_helper.get_value(entity.properties['entity_bytes'])
Esempio n. 2
0
  def get_estimated_size_bytes(project, namespace, query, datastore):
    """Get the estimated size of the data returned by the given query.

    Cloud Datastore provides no way to get a good estimate of how large the
    result of a query is going to be. Hence we use the __Stat_Kind__ system
    table to get size of the entire kind as an approximate estimate, assuming
    exactly 1 kind is specified in the query.
    See https://cloud.google.com/datastore/docs/concepts/stats.
    """
    kind = query.kind[0].name
    latest_timestamp = ReadFromDatastore.query_latest_statistics_timestamp(
        project, namespace, datastore)
    logging.info('Latest stats timestamp for kind %s is %s',
                 kind, latest_timestamp)

    kind_stats_query = (
        helper.make_kind_stats_query(namespace, kind, latest_timestamp))

    req = helper.make_request(project, namespace, kind_stats_query)
    resp = datastore.run_query(req)
    if not resp.batch.entity_results:
      raise RuntimeError("Datastore statistics for kind %s unavailable" % kind)

    entity = resp.batch.entity_results[0].entity
    return datastore_helper.get_value(entity.properties['entity_bytes'])
 def testPropertyValues(self):
   blob_key = datastore.Value()
   blob_key.blob_key_value = 'blob-key'
   property_dict = collections.OrderedDict(
       a_string=u'a',
       a_blob='b',
       a_boolean=True,
       a_integer=1,
       a_long=2L,
       a_double=1.0,
       a_timestamp_microseconds=datetime.datetime.now(),
       a_key=datastore.Key(),
       a_entity=datastore.Entity(),
       a_blob_key=blob_key,
       many_integer=[1, 2, 3])
   entity = datastore.Entity()
   helper.add_properties(entity, property_dict)
   d = dict((prop.name, helper.get_value(prop.value))
            for prop in entity.property)
   self.assertDictEqual(d, property_dict)
 def testPropertyValues(self):
     blob_key = datastore.Value()
     blob_key.blob_key_value = 'blob-key'
     property_dict = collections.OrderedDict(
         a_string=u'a',
         a_blob='b',
         a_boolean=True,
         a_integer=1,
         a_long=2L,
         a_double=1.0,
         a_timestamp_microseconds=datetime.datetime.now(),
         a_key=datastore.Key(),
         a_entity=datastore.Entity(),
         a_blob_key=blob_key,
         many_integer=[1, 2, 3])
     entity = datastore.Entity()
     helper.add_properties(entity, property_dict)
     d = dict((prop.name, helper.get_value(prop.value))
              for prop in entity.property)
     self.assertDictEqual(d, property_dict)
 def testEmptyValues(self):
   v = datastore.Value()
   self.assertEquals(None, helper.get_value(v))
 def testSetPropertyOverwrite(self):
   property = datastore.Property()
   helper.set_property(property, 'a', 1, indexed=False)
   helper.set_property(property, 'a', 'a')
   self.assertEquals('a', helper.get_value(property.value))
   self.assertEquals(True, property.value.indexed)
 def testSetPropertyOverwrite(self):
     property = datastore.Property()
     helper.set_property(property, 'a', 1, indexed=False)
     helper.set_property(property, 'a', 'a')
     self.assertEquals('a', helper.get_value(property.value))
     self.assertEquals(True, property.value.indexed)
 def testEmptyValues(self):
     v = datastore.Value()
     self.assertEquals(None, helper.get_value(v))