def RunValidation(filenames: List[str], use_simplified_universe: bool = False, modified_types_filepath: str = None, subscription: str = None, service_account: str = None, report_filename: str = None, timeout: int = 60) -> None: """Master runner for all validations.""" if bool(subscription) != bool(service_account): print('Subscription and a service account file are ' 'both needed for the telemetry validation!') sys.exit(0) print('\nStarting validator...\n') print('\nStarting universe generation...\n') universe = generate_universe.BuildUniverse( use_simplified_universe=use_simplified_universe, modified_types_filepath=modified_types_filepath) if not universe: print('\nError generating universe') sys.exit(0) print('\nStarting config validation...\n') entities = _ValidateConfig(filenames, universe) if subscription: print('\nStarting telemetry validation...\n') _ValidateTelemetry(subscription, service_account, entities, report_filename, timeout)
def setUpClass(cls): super(cls, EntityInstanceTest).setUpClass() cls.config_universe = generate_universe.BuildUniverse( use_simplified_universe=True) cls.init_validator = entity_instance.InstanceValidator( cls.config_universe, _INIT_CFG) cls.update_validator = entity_instance.InstanceValidator( cls.config_universe, _UPDATE_CFG)
def setUpClass(cls): super(cls, EntityInstanceTest).setUpClass() cls._universe = generate_universe.BuildUniverse( _DEFAULT_ONTOLOGY_LOCATION) cls._e_v_init = entity_instance.InstanceValidator( cls._universe, _INIT_CFG) cls._e_v_update = entity_instance.InstanceValidator( cls._universe, _UPDATE_CFG)
def create_ontology(yaml_filepath): print('Generating universe ...') universe = generate_universe.BuildUniverse(yaml_filepath) if universe is None: print('\nError generating universe') sys.exit(0) print('Universe generated successfully') return universe
def RunValidation(filenames: List[str], use_simplified_universe: bool = False, modified_types_filepath: str = None, subscription: str = None, service_account: str = None, report_filename: str = None, timeout: int = 60) -> None: """Master runner for all validations.""" saved_stdout = sys.stdout report_file = None if report_filename: # pylint: disable=consider-using-with report_file = open(report_filename, 'w', encoding='utf-8') sys.stdout = report_file try: if bool(subscription) != bool(service_account): print('Subscription and a service account file are ' 'both needed for the telemetry validation!') sys.exit(0) print('\nStarting validator...\n') print('\nStarting universe generation...\n') universe = generate_universe.BuildUniverse( use_simplified_universe=use_simplified_universe, modified_types_filepath=modified_types_filepath) if not universe: print('\nError generating universe') sys.exit(0) print('\nStarting config validation...\n') # Check if the filenames are in fact directories. # If they are not directories, but are instead yaml files, # append them to the list. unpacked_files = set() for file in filenames: if os.path.isdir(file): unpacked_files.update(_GetFilepathsFromDir(file)) else: unpacked_files.add(file) # Get rid of duplicate files if parent-child directories were passed. unpacked_files = list(unpacked_files) # Validate the entities from the final set of unpacked files. entities = _ValidateConfig(unpacked_files, universe) if subscription: print('\nStarting telemetry validation...\n') _ValidateTelemetry(subscription, service_account, entities, timeout) finally: sys.stdout = saved_stdout if report_file: report_file.close()
def GenerateUniverse(self, modified_types_filepath=None): """Generates the universe from the ontology. Args: modified_types_filepath: the path to a modified ontology. If it is not set, the universe is generated from the default path. """ # SYNTAX VALIDATION print('\nValidator starting ...\n') # prints for syntax errors and exits gracefully print('Generating universe ...') universe = generate_universe.BuildUniverse(modified_types_filepath) if universe is None: print('\nError generating universe') sys.exit(0) print('Universe generated successfully') return universe
def RunValidation(filenames: List[str], use_simplified_universe: bool = False, modified_types_filepath: str = None, subscription: str = None, service_account: str = None, report_filename: str = None, timeout: int = 60) -> None: """Master runner for all validations.""" saved_stdout = sys.stdout report_file = None if report_filename: # pylint: disable=consider-using-with report_file = open(report_filename, 'w', encoding='utf-8') sys.stdout = report_file try: if bool(subscription) != bool(service_account): print('Subscription and a service account file are ' 'both needed for the telemetry validation!') sys.exit(0) print('\nStarting validator...\n') print('\nStarting universe generation...\n') universe = generate_universe.BuildUniverse( use_simplified_universe=use_simplified_universe, modified_types_filepath=modified_types_filepath) if not universe: print('\nError generating universe') sys.exit(0) print('\nStarting config validation...\n') entities = _ValidateConfig(filenames, universe) if subscription: print('\nStarting telemetry validation...\n') _ValidateTelemetry(subscription, service_account, entities, timeout) finally: sys.stdout = saved_stdout if report_file: report_file.close()
def setUp(self): self.universe = generate_universe.BuildUniverse()
def testModifiedTypesCatchesEmpty(self): self.assertRaises( Exception, generate_universe.BuildUniverse( modified_types_filepath=_EMPTY_FOLDER))
def testModifiedTypesCatchesNonexistent(self): self.assertRaises( Exception, generate_universe.BuildUniverse( modified_types_filepath=_NONEXISTENT_LOCATION))
def testCatchInvalidModifiedOntology(self): with self.assertRaises(Exception) as context: generate_universe.BuildUniverse( modified_types_filepath=_BAD_MODIFIED_ONTOLOGY) self.assertIn('no longer valid', str(context.exception))
def setUp(self): temp_universe = generate_universe.BuildUniverse() temp_universe.connections_universe = set( ['CONTAINS', 'CONTROLS', 'FEEDS']) self.universe = temp_universe
def testModifiedTypesFilepathWorks(self): test_universe = generate_universe.BuildUniverse( _DEFAULT_ONTOLOGY_LOCATION) self.assertTrue(test_universe)
def testCatchInvalidModifiedOntology(self): self.assertRaises( Exception, generate_universe.BuildUniverse(_BAD_MODIFIED_ONTOLOGY))
def testCanGenerateUniverse(self): universe = generate_universe.BuildUniverse(_DEFAULT_ONTOLOGY_LOCATION) self.assertTrue(universe)
def setUpClass(cls): cls._universe = generate_universe.BuildUniverse( _DEFAULT_ONTOLOGY_LOCATION) cls._universe.connections_universe = {'CONTAINS', 'CONTROLS', 'FEEDS'}
def testCanGenerateUniverse(self): universe = generate_universe.BuildUniverse() self.assertTrue(universe)
print('\nValidator starting ...\n') filename = arg.filename # throws errors for syntax raw_parse = instance_parser.parse_yaml(filename) if raw_parse is None: print('\nSyntax error') sys.exit(0) print('Passed syntax checks!') modified_types_filepath = arg.modified_types_filepath print('Generating universe ...') universe = generate_universe.BuildUniverse(modified_types_filepath) if universe is None: print('\nError generating universe') sys.exit(0) print('Universe generated successfully') parsed = dict(raw_parse) entity_names = list(parsed.keys()) for entity_name in entity_names: entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity, universe) if not instance.IsValidEntityInstance():
def testCanGenerateSimplifiedUniverse(self): universe = generate_universe.BuildUniverse( use_simplified_universe=True) self.assertTrue(universe)