Example #1
0
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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
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
Example #5
0
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()
Example #6
0
    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
Example #7
0
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()
Example #8
0
 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
Example #13
0
 def testModifiedTypesFilepathWorks(self):
     test_universe = generate_universe.BuildUniverse(
         _DEFAULT_ONTOLOGY_LOCATION)
     self.assertTrue(test_universe)
Example #14
0
 def testCatchInvalidModifiedOntology(self):
     self.assertRaises(
         Exception, generate_universe.BuildUniverse(_BAD_MODIFIED_ONTOLOGY))
Example #15
0
 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)
Example #18
0
    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)