Exemplo n.º 1
0
    def test_validate_flavor(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['flavor'] = 'presentation'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'presentation')

        # Invalid
        track['flavor'] = 'noflavor'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'presenter')

        # Valid (Test custom flavors)
        from galicaster.core import context as gc_context
        gc_conf = gc_context.get_conf()
        gc_conf.set('basic', 'custom_flavors',
                    'myflavor')  # Add myflavor to list of valid flavors

        track['flavor'] = 'myflavor'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'myflavor')
Exemplo n.º 2
0
    def __init__(self, options):
        self.logger = logger
        # Init gc_parameters add Base and Object class
        self.gc_parameters = self.get_gc_parameters()

        current_profile_path = context.get_conf().get_current_profile().path
        # Check the profile parameters (*.ini)
        # for k in options:
        #     if k not in self.gc_parameters and k not in ['device', 'active', 'path']:
        #         logger.warning('Does not exit the parameter "{0}". Please check the file {1}'.format(
        #                 k, current_profile_path))



        # Init options with default gc_parameters values and options
        self.options = dict([(k,v['default']) for k,v in self.gc_parameters.iteritems()])
        # TODO parsear
        self.options.update(options)

        # Validate option values
        try:
            validator.validate_track(self.options)
        except Exception as exc:
            error_msg = 'Profile error in {0}, track {1}. {2}'.format(
                current_profile_path, self.options['name'], exc)

            logger.error(error_msg)
            raise SystemError(error_msg)        

        # Sanitaze values
        self.options["name"] = re.sub(r'\W+', '', self.options["name"])
Exemplo n.º 3
0
    def test_validate_flavor(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['flavor'] = 'presentation'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'presentation')

        # Invalid
        track['flavor'] = 'noflavor'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'presenter')

        # Valid (Test custom flavors)
        from galicaster.core import context as gc_context
        gc_conf = gc_context.get_conf()
        gc_conf.set('basic', 'custom_flavors', 'myflavor') # Add myflavor to list of valid flavors

        track['flavor'] = 'myflavor'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['flavor'], 'myflavor')
Exemplo n.º 4
0
    def test_validate_with_params(self):
        track = {'pattern': '10'}
        gc_params = { "pattern": {
            "type": "integer",
            "default": 0,
            "range": (0,20),
            "description": "Background pattern"}
        }
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Invalid
        track['pattern'] = 'nonumber'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 5
0
    def test_validate_boolean(self):
        track = {'device': 'audiotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['player'] = 'True'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['player'], True)

        # Invalid
        track['player'] = 'noboolean'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['player'], 'True')
Exemplo n.º 6
0
 def test_validate_caps(self):
     track = {
         'device': 'videotest',
         'caps': 'video/x-raw,framerate=20/1,width=640,height=480'
     }
     error, valid_track = validator.validate_track(track)
     self.assertEqual(error, None)
Exemplo n.º 7
0
    def __init__(self, options):
        self.logger = logger
        # Init gc_parameters add Base and Object class
        self.gc_parameters = self.get_gc_parameters()
        path = 'Unknown'
        current_profile = context.get_conf().get_current_profile()
        if current_profile:
            path = current_profile.path
        # Check the profile parameters (*.ini)
        # for k in options:
        #     if k not in self.gc_parameters and k not in ['device', 'active', 'path']:
        #         logger.warning('Does not exit the parameter "{0}". Please check the file {1}'.format(
        #                 k, current_profile_path))

        # Init options with default gc_parameters values and options
        self.options = dict([(k, v['default'])
                             for k, v in self.gc_parameters.iteritems()])
        # TODO parsear

        for k, v in options.iteritems():
            if v:
                self.options[k] = validator.parse_automatic(v)

        # Validate option values
        try:
            global_error, self.options = validator.validate_track(self.options)
        except Exception as exc:
            error_msg = 'Profile error in {0}, track {1}. {2}'.format(
                path, self.options['name'], exc)

            logger.error(error_msg)
            raise SystemError(error_msg)

        # Sanitaze values
        self.options["name"] = re.sub(r'\W+', '', self.options["name"])
Exemplo n.º 8
0
    def test_validate_with_params(self):
        track = {'pattern': '10'}
        gc_params = { "pattern": {
            "type": "integer",
            "default": 0,
            "range": (0,20),
            "description": "Background pattern"}
        }
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Invalid
        track['pattern'] = 'nonumber'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 9
0
    def test_validate_select(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['videosink'] = 'fakesink'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['videosink'], 'fakesink')

        # Invalid
        track['videosink'] = 'novideosink'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['videosink'], 'xvimagesink')
Exemplo n.º 10
0
    def test_validate_boolean(self):
        track = {'device': 'audiotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['player'] = 'True'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['player'], True)

        # Invalid
        track['player'] = 'noboolean'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['player'], 'True')
Exemplo n.º 11
0
    def test_validate_select(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['videosink'] = 'fakesink'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['videosink'], 'fakesink')

        # Invalid
        track['videosink'] = 'novideosink'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['videosink'], 'xvimagesink')
Exemplo n.º 12
0
    def test_validate_list(self):
        track = {'listparam': '[1,2,3,4]'}
        gc_params = {"listparam": {"type": "list", "default": []}}

        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Valid
        track['listparam'] = [1, 2, 3, 4, 5, 6]
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Invalid
        track['listparam'] = 'nolist'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['listparam'], [])
Exemplo n.º 13
0
    def test_validate_dict(self):
        track = {'dictparam': '{"1":"2","3":"4"}'}
        gc_params = {"dictparam": {"type": "dict", "default": {}}}

        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {'1': '2', '3': '4'})

        # Valid
        track['dictparam'] = {1: 2, 3: 4, 5: 6}
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {1: 2, 3: 4, 5: 6})

        # Invalid
        track['dictparam'] = 'nodict'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {})
Exemplo n.º 14
0
    def test_validate_list(self):
        track = {'listparam': '[1,2,3,4]'}
        gc_params = { "listparam": {
            "type": "list",
            "default": []}
        }

        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Valid
        track['listparam'] = [1,2,3,4,5,6]
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)

        # Invalid
        track['listparam'] = 'nolist'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['listparam'], [])
Exemplo n.º 15
0
 def test_validate_unknown_type(self):
     track = {'pattern': None}
     gc_params = { "pattern": {
         "type": "unknown",
         "default": 0,
         "range": (0,20),
         "description": "Background pattern"}
     }
     error, valid_track = validator.validate_track(track, gc_params)
     self.assertEqual(error, None)
     self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 16
0
 def test_validate_unknown_type(self):
     track = {'pattern': None}
     gc_params = { "pattern": {
         "type": "unknown",
         "default": 0,
         "range": (0,20),
         "description": "Background pattern"}
     }
     error, valid_track = validator.validate_track(track, gc_params)
     self.assertEqual(error, None)
     self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 17
0
    def __check_tracks(self, profile):
        """Checks if the tracks of a profile are not repeated or if the profile is invalid. Arranges the profile too.
        Args:
            profile (Profile): the profile whose tracks are going to be checked.
        Returns:
            Str: an error message if the tracks of the profile were repeated or if the profile was invalid.
            Profile: the checked profile and repaired profile.
        """
        profile.original_tracks = list(profile.tracks)
        error_msg = None

        # 1. Check repeated values
        tracks = list(profile.tracks)

        count = 0
        for ind,track in enumerate(tracks):
            tracks.pop(count)
            for k,v in track.iteritems():
                if k in ['name', 'file', 'location']:
                    for aux in tracks:
                        if k in aux.keys() and v == aux[k]:

                            # Compose error message
                            if error_msg:                            
                                error_msg = '{}. Repeated value "{}" for tracks "{}" and "{}", forced to BIS{}'.format(
                                    error_msg, v, track.name, aux.name, v)
                            else:
                                error_msg = 'Profile error in {}, profile name: {}. Repeated value "{}={}" for tracks "{}" and "{}", forced to BIS{}'.format(
                                    profile.path, profile.name, k, v, track.name, aux.name, v)

                            profile.tracks[ind][k] = "BIS{}".format(v)
            count +=1


        
        # 2. Validate profile
        for ind, track in enumerate(profile.tracks):
            track_clean = track 
            try:
                error, track_clean = validator.validate_track(track)
                track_clean = Track(track_clean)
                if error:
                    error_msg = 'Profile error in {0}, profile name: {1}. {2}'.format(
                        profile.path, profile.name, error)
            except Exception as exc:
                error_msg = 'Profile exception in {0}, profile name: {1}. {2}'.format(
                    profile.path, profile.name, exc)


            profile.tracks[ind] = track_clean
            profile.original_tracks[ind] = track
            
        return error_msg, profile
Exemplo n.º 18
0
    def __check_tracks(self, profile):
        """Checks if the tracks of a profile are not repeated or if the profile is invalid. Arranges the profile too.
        Args:
            profile (Profile): the profile whose tracks are going to be checked.
        Returns:
            Str: an error message if the tracks of the profile were repeated or if the profile was invalid.
            Profile: the checked profile and repaired profile.
        """
        profile.original_tracks = list(profile.tracks)
        error_msg = None

        # 1. Check repeated values
        tracks = list(profile.tracks)

        count = 0
        for ind,track in enumerate(tracks):
            tracks.pop(count)
            for k,v in list(track.items()):
                if k in ['name', 'file']:
                    for aux in tracks:
                        if k in list(aux.keys()) and v == aux[k]:

                            # Compose error message
                            if error_msg:
                                error_msg = '{}. Repeated value "{}" for tracks "{}" and "{}", forced to BIS{}'.format(
                                    error_msg, v, track.name, aux.name, v)
                            else:
                                error_msg = 'Profile error in {}, profile name: {}. Repeated value "{}={}" for tracks "{}" and "{}", forced to BIS{}'.format(
                                    profile.path, profile.name, k, v, track.name, aux.name, v)

                            profile.tracks[ind][k] = "BIS{}".format(v)
            count +=1



        # 2. Validate profile
        for ind, track in enumerate(profile.tracks):
            track_clean = track
            try:
                error, track_clean = validator.validate_track(track)
                track_clean = Track(track_clean)
                if error:
                    error_msg = 'Profile error in {0}, profile name: {1}. {2}'.format(
                        profile.path, profile.name, error)
            except Exception as exc:
                error_msg = 'Profile exception in {0}, profile name: {1}. {2}'.format(
                    profile.path, profile.name, exc)


            profile.tracks[ind] = track_clean
            profile.original_tracks[ind] = track

        return error_msg, profile
Exemplo n.º 19
0
    def test_validate_dict(self):
        track = {'dictparam': '{"1":"2","3":"4"}'}
        gc_params = { "dictparam": {
            "type": "dict",
            "default": {}}
        }

        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {'1':'2','3':'4'})

        # Valid
        track['dictparam'] = {1:2,3:4,5:6}
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {1:2,3:4,5:6})

        # Invalid
        track['dictparam'] = 'nodict'
        error, valid_track = validator.validate_track(track, gc_params)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['dictparam'], {})
Exemplo n.º 20
0
    def test_validate_hexadecimal(self):
        track = {'device': 'screen'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['xid'] = '0x65CB00'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['xid'], 0x65CB00)

        # Out of range
        track['xid'] = '0xFFFFFG'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['xid'], 0)

        # Invalid
        track['xid'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['xid'], 0)
Exemplo n.º 21
0
    def test_validate_integer(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['pattern'] = '10'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['pattern'], 10)

        # Out of range
        track['pattern'] = '-10'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)

        # Invalid
        track['pattern'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 22
0
    def test_validate_hexadecimal(self):
        track = {'device': 'screen'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['xid'] = '0x65CB00'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['xid'], 0x65CB00)

        # Out of range
        track['xid'] = '0xFFFFFG'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['xid'], 0)

        # Invalid
        track['xid'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['xid'], 0)
Exemplo n.º 23
0
    def test_validate_float(self):
        track = {'device': 'audiotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['amplification'] = '2.0'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['amplification'], 2.0)

        # Out of range
        track['amplification'] = '-1.0'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['amplification'], 1.0)

        # Invalid
        track['amplification'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['amplification'], 1.0)
Exemplo n.º 24
0
    def test_validate_float(self):
        track = {'device': 'audiotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['amplification'] = '2.0'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['amplification'], 2.0)

        # Out of range
        track['amplification'] = '-1.0'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['amplification'], 1.0)

        # Invalid
        track['amplification'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['amplification'], 1.0)
Exemplo n.º 25
0
    def test_validate_integer(self):
        track = {'device': 'videotest'}
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)

        # Valid
        track['pattern'] = '10'
        error, valid_track = validator.validate_track(track)
        self.assertEqual(error, None)
        self.assertEqual(valid_track['pattern'], 10)

        # Out of range
        track['pattern'] = '-10'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)

        # Invalid
        track['pattern'] = 'nonumber'
        error, valid_track = validator.validate_track(track)
        self.assertNotEqual(error, None)
        self.assertEqual(valid_track['pattern'], 0)
Exemplo n.º 26
0
 def test_fill_track(self):
     track = {'device': 'videotest'}
     error, valid_track = validator.validate_track(track)
     self.assertEqual(error, None)
     self.assertTrue(valid_track.has_key('name'))
     self.assertTrue(valid_track.has_key('flavor'))
     self.assertTrue(valid_track.has_key('location'))
     self.assertTrue(valid_track.has_key('file'))
     self.assertTrue(valid_track.has_key('caps'))
     self.assertTrue(valid_track.has_key('pattern'))
     self.assertTrue(valid_track.has_key('color1'))
     self.assertTrue(valid_track.has_key('color2'))
     self.assertTrue(valid_track.has_key('videoencoder'))
     self.assertTrue(valid_track.has_key('muxer'))
     self.assertTrue(valid_track.has_key('videosink'))
Exemplo n.º 27
0
 def test_fill_track(self):
     track = {'device': 'videotest'}
     error, valid_track = validator.validate_track(track)
     self.assertEqual(error, None)
     self.assertTrue(valid_track.has_key('name'))
     self.assertTrue(valid_track.has_key('flavor'))
     self.assertTrue(valid_track.has_key('location'))
     self.assertTrue(valid_track.has_key('file'))
     self.assertTrue(valid_track.has_key('caps'))
     self.assertTrue(valid_track.has_key('pattern'))
     self.assertTrue(valid_track.has_key('color1'))
     self.assertTrue(valid_track.has_key('color2'))
     self.assertTrue(valid_track.has_key('videoencoder'))
     self.assertTrue(valid_track.has_key('muxer'))
     self.assertTrue(valid_track.has_key('videosink'))
Exemplo n.º 28
0
 def test_validate_caps(self):
     track = {'device': 'videotest',
              'caps': 'video/x-raw,framerate=20/1,width=640,height=480'}
     error, valid_track = validator.validate_track(track)
     self.assertEqual(error, None)