def run(cls, version=None):
        """
        Test runner method; is called by parent class defined in suite.py.
        :param version: B2G version string to test against
        :return: bool PASS/FAIL status
        """

        try:
            dumper = certdump()
            versions = dumper.nssversion_via_marionette()
        except Exception as e:  # TODO: too broad exception
            cls.log_status('FAIL', 'Failed to gather information from the device via Marionette: %s' % e)
            return False

        if version is None:
            cls.log_status('FAIL', 'NSS version check requires a B2G version.\nReported component versions:\n%s' % (
                '\n'.join(["%s: %s" % (k, versions[k]) for k in versions])))
            return False

        reported_version = versions['NSS_Version']

        if version not in nssversion.b2g_version_to_hginfo:
            cls.log_status('FAIL', 'No version comparison data for B2G %s.\nReported NSS component versions:\n%s' % (
                version, '\n'.join(["%s: %s" % (k, versions[k]) for k in versions])))
            return False

        expected_version = nssversion.b2g_version_to_hginfo[version]['release_nss_version']

        # Fail if reported version is a downgrade
        if nssversion.first_older_than_second(reported_version, expected_version):
            cls.log_status('FAIL', 'NSS downgrade detected. Expecting at least version %s.\n'
                           'Reported versions:\n%s' % (
                           expected_version, '\n'.join(["%s: %s" % (k, versions[k]) for k in versions])))
            return False

        # Pass if NSS version was upgraded.
        if nssversion.first_older_than_second(expected_version, reported_version):
            cls.log_status('PASS', 'NSS more recent than release version %s. Reported component versions:\n%s' % (
                expected_version, '\n'.join(["%s: %s" % (k, versions[k]) for k in versions])))
            return True

        # Else device has reported the expected version.
        cls.log_status('PASS', 'NSS version reported as expected. Reported component versions:\n%s' % (
            '\n'.join(["%s: %s" % (k, versions[k]) for k in versions])))

        return True