Ejemplo n.º 1
0
    def test_copy_measurements_from_phase(self):
        measurement = (self._create_and_set_measurement(
            'mock-measurement-name',
            5).doc('mock measurement docstring').with_units(
                units.Unit('radian')).in_range(1, 10))

        # We 'incorrectly' create a measurement with a unicode character as
        # a python2 string.  We don't want mfg_event_converter to guess at it's
        # encoding but we also don't want to fail after a test on conversion so it
        # replaces errors with a unicode question mark character.
        measurement_text = self._create_and_set_measurement('text', b'\xfd')
        measurement_unicode = self._create_and_set_measurement(
            'unicode', u'\ufffa')

        phase = test_record.PhaseRecord(
            name='mock-phase-name',
            descriptor_id=1,
            codeinfo=self.create_codeinfo(),
            measurements={
                'mock-measurement-name': measurement,
                'text': measurement_text,
                'unicode': measurement_unicode,
            },
        )

        mfg_event = mfg_event_pb2.MfgEvent()
        copier = mfg_event_converter.PhaseCopier([phase])
        copier.copy_measurements(mfg_event)

        # Names.
        created_measurements = sorted(mfg_event.measurement,
                                      key=lambda m: m.name)
        mock_measurement = created_measurements[0]
        text_measurement = created_measurements[1]
        unicode_measurement = created_measurements[2]
        self.assertEqual(mock_measurement.name, u'mock-measurement-name')
        self.assertEqual(text_measurement.name, u'text')
        self.assertEqual(unicode_measurement.name, u'unicode')

        # Basic measurement fields.
        self.assertEqual(mock_measurement.status, test_runs_pb2.PASS)
        self.assertEqual(mock_measurement.description,
                         'mock measurement docstring')
        self.assertEqual(mock_measurement.parameter_tag[0], 'mock-phase-name')
        self.assertEqual(mock_measurement.unit_code,
                         test_runs_pb2.Units.UnitCode.Value('RADIAN'))

        # Measurement value.
        self.assertEqual(mock_measurement.numeric_value, 5.0)
        # FFFD is unicode's '?'.  This occurs when we can't easily convert a python2
        # string to unicode.
        self.assertEqual(text_measurement.text_value, u'\ufffd')
        self.assertEqual(unicode_measurement.text_value, u'\ufffa')

        # Measurement validators.
        self.assertEqual(mock_measurement.numeric_minimum, 1.0)
        self.assertEqual(mock_measurement.numeric_maximum, 10.0)
        self.assertEqual(mock_measurement.name, u'mock-measurement-name')
        self.assertEqual(mock_measurement.name, u'mock-measurement-name')
Ejemplo n.º 2
0
 def _maybe_make_unit_desc(self, unit_desc):
   """Return the UnitDescriptor or convert a string to one."""
   if isinstance(unit_desc, str) or unit_desc is None:
     unit_desc = units.Unit(unit_desc)
   if not isinstance(unit_desc, units.UnitDescriptor):
     raise TypeError('Invalid units for measurement %s: %s' % (self.name,
                                                               unit_desc))
   return unit_desc
Ejemplo n.º 3
0
 def from_string(cls, string):
     """Convert a string into a Dimension"""
     # Note: There is some ambiguity as to whether the string passed is intended
     # to become a unit looked up by name or suffix, or a Dimension descriptor.
     if string in units.UNITS_BY_ALL:
         return cls(description=string, unit=units.Unit(string))
     else:
         return cls(description=string)