def parse_measurements()

in src/local_gpu_verifier/src/verifier/rim/__init__.py [0:0]


    def parse_measurements(self, settings):
        """ Lists the measurements of the Resource tags in the base RIM.

        Args:
            settings (config.HopperSettings): the object containing the various config info.

        Raises:
            ElementNotFoundError: it is raised if a required element is not found.
            InvalidMeasurementIndexError: it is raised in case multiple measurement are assigned same index.
            NoRIMMeasurementsError: it is raised in case there are no golden measurements in the RIM file.
        """       
        self.measurements_obj = dict()
        Payload = RIM.get_element(self.root, "Payload")

        if Payload is None:
            err_msg = "Payload not found in the RIM."
            info_log.error(err_msg)
            raise ElementNotFoundError(err_msg)

        for child in Payload:

            if child.attrib['active'] == 'False':
                active = False
            else:
                active =True

            index = int(child.attrib['index'])
            alternatives = int(child.attrib['alternatives'])
            measurements_values = list()

            for i in range(alternatives):
                measurements_values.append(child.attrib[settings.HashFunctionNamespace + 'Hash' + str(i)])

            golden_measurement = GoldenMeasurement(component = self.rim_name,
                                                   values = measurements_values,
                                                   name = child.attrib['name'],
                                                   index = index,
                                                   size = int(child.attrib['size']),
                                                   alternatives = alternatives,
                                                   active = active)
            if index in self.measurements_obj:
                raise InvalidMeasurementIndexError(f"Multiple measurement are assigned same index in {self.rim_name} rim.")

            self.measurements_obj[index] = golden_measurement

        if len(self.measurements_obj) == 0:
            raise NoRIMMeasurementsError(f"\tNo golden measurements found in {self.rim_name} rim.\n\tQuitting now.")

        event_log.debug(f"{self.rim_name} golden measurements are : \n\t\t\t\t\t\t\t")

        for idx in self.measurements_obj:
            event_log.debug(f"\n\t\t\t\t\t\t\t index : {idx}")
            event_log.debug(f"\t\t\t\t\t\t\t number of alternative values : {self.measurements_obj[idx].get_number_of_alternatives()}")
            for i in range(self.measurements_obj[idx].get_number_of_alternatives()):
                event_log.debug(f"\t\t\t\t\t\t\t\t value {i + 1} : {self.measurements_obj[idx].get_value_at_index(i)}")

        if self.rim_name == 'driver':
            settings.mark_rim_driver_measurements_as_available()
        else:
            settings.mark_rim_vbios_measurements_as_available()