Ejemplo n.º 1
0
    def testStatsEntryId_VaryIntDimensions(self):
        """Ensures StatsEntries with different int dimensions get different ids."""
        entry1 = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.INT,
                fields_values=[
                    stats_values.StatsStoreFieldValue(
                        field_type=rdf_stats.MetricFieldDefinition.FieldType.
                        INT,
                        int_value=11),
                    stats_values.StatsStoreFieldValue(
                        field_type=rdf_stats.MetricFieldDefinition.FieldType.
                        INT,
                        int_value=12)
                ],
                int_value=42),
            timestamp=_one_second_timestamp)

        # Clone entry1 and change a single dimension value.
        entry2 = stats_values.StatsStoreEntry()
        entry2.FromDict(entry1.ToPrimitiveDict())
        entry2.metric_value.fields_values[0].int_value = 13

        self.assertEqual(
            db_utils.GenerateStatsEntryId(entry1),
            b"pl\xc31\x1a\xf8\xd5\xfe\xe1\xc6\x10gR\x10f\x0c\xb8\xd3\x96_\xa3`\x19"
            b"\xf2\x15\xc5\xa0\x8d\xbbu\xf1&")
        self.assertEqual(
            db_utils.GenerateStatsEntryId(entry2),
            b"L \x1d+\xd5<g\\\xa8\xa4\x97\xdd\xe8^\x88\xac\xc7\xbej\xae\xff\xd5S"
            b"\x10\xce\xec\x82a\xe5_\xe1\x1c")
Ejemplo n.º 2
0
    def testStatsEntryId_VaryStringDimensions(self):
        """Ensures StatsEntries with different str dimensions get different ids."""
        entry1 = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.INT,
                fields_values=[
                    stats_values.StatsStoreFieldValue(
                        field_type=rdf_stats.MetricFieldDefinition.FieldType.
                        STR,
                        str_value="dim1"),
                    stats_values.StatsStoreFieldValue(
                        field_type=rdf_stats.MetricFieldDefinition.FieldType.
                        STR,
                        str_value="dim2")
                ],
                int_value=42),
            timestamp=_one_second_timestamp)

        # Clone entry1 and change a single dimension value.
        entry2 = stats_values.StatsStoreEntry()
        entry2.FromDict(entry1.ToPrimitiveDict())
        entry2.metric_value.fields_values[0].str_value = "dim3"

        self.assertEqual(
            db_utils.GenerateStatsEntryId(entry1),
            b"\xb8'\x1cv\xf9`\x90\xd1\x9d#{\x8a'y\xd8E\x0bx\x1b6f\xe6\x8d\x16\xb95"
            b"\x0011uy\xf9")
        self.assertEqual(
            db_utils.GenerateStatsEntryId(entry2),
            b"\xa4\xcb\x95*\xe4\x8aclM&@\xde\xba\x17\xec\x02\xc6i\xea\xc0\x1a{bQ"
            b"\xabr~w}Z\xb9\x99")
Ejemplo n.º 3
0
 def WriteStatsStoreEntries(self, stats_entries):
     """See db.Database."""
     for stats_entry in stats_entries:
         entry_id = db_utils.GenerateStatsEntryId(stats_entry)
         if entry_id in self.stats_store_entries:
             raise db.DuplicateMetricValueError()
         self.stats_store_entries[entry_id] = stats_entry.SerializeToString(
         )
Ejemplo n.º 4
0
    def testStatsEntryId_IgnoreMetricValues(self):
        """Ensures metric values have no influence id generation."""
        int_entry = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.INT,
                int_value=42),
            timestamp=_one_second_timestamp)
        float_entry = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.FLOAT,
                float_value=4.2),
            timestamp=_one_second_timestamp)
        # TODO: String gauges are deprecated.
        str_entry = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.DEPRECATED_STR,
                str_value="foo"),
            timestamp=_one_second_timestamp)
        distribution_entry = stats_values.StatsStoreEntry(
            process_id="test_process",
            metric_name="test_metric",
            metric_value=stats_values.StatsStoreValue(
                value_type=rdf_stats.MetricMetadata.ValueType.DISTRIBUTION,
                distribution_value=rdf_stats.Distribution()),
            timestamp=_one_second_timestamp)

        expected_id = (
            b"\x8e\xf4\xe7\xdb\x03\x01}sB\x97\x98\x957\x18\x02U\xb0\xe6x\x9f"
            b"\x97Xfs/C\xedT\xd3\x89N\xe5")
        self.assertEqual(db_utils.GenerateStatsEntryId(int_entry), expected_id)
        self.assertEqual(db_utils.GenerateStatsEntryId(float_entry),
                         expected_id)
        self.assertEqual(db_utils.GenerateStatsEntryId(str_entry), expected_id)
        self.assertEqual(db_utils.GenerateStatsEntryId(distribution_entry),
                         expected_id)