def test_validate_value_within_interval(self):
     """
     Test whether custom validate_value_within_interval raises a
     serializers.ValidationError when the first argument is not within the interval
     provided by the second and third argument.
     """
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(plugin)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_value_within_interval(1, 2, 4, 'error: below')
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_value_within_interval(5, 2, 4, 'error: above')
    def test_validate_previous(self):
        """
        Test whether custom validate_previous method returns a previous instance or
        raises a serializers.ValidationError.
        """
        plugin = self.plugin
        # create an 'fs' plugin instance
        pl_inst_fs = PluginInstance.objects.create(plugin=plugin, owner=self.user,
                                                   compute_resource=plugin.compute_resource)
        # create a 'ds' plugin
        data = self.plugin_repr.copy()
        del data['parameters']
        data['name'] = 'testdsapp'
        data['type'] = 'ds'
        data['compute_resource'] = self.compute_resource
        (plugin, tf) = Plugin.objects.get_or_create(**data)
        data = {'plugin': plugin,
                'owner': self.user,
                'compute_resource': plugin.compute_resource}

        # create serializer for a 'ds' plugin instance
        plg_inst_serializer = PluginInstanceSerializer(data=data)
        plg_inst_serializer.is_valid(raise_exception=True)
        plg_inst_serializer.context['view'] = mock.Mock()
        plg_inst_serializer.context['view'].get_object = mock.Mock(return_value=plugin)
        plg_inst_serializer.context['request'] = mock.Mock()
        plg_inst_serializer.context['request'].user = self.user
        previous = plg_inst_serializer.validate_previous(pl_inst_fs.id)

        self.assertEqual(previous, pl_inst_fs)
        with self.assertRaises(serializers.ValidationError):
            plg_inst_serializer.validate_previous('')
Exemplo n.º 3
0
 def test_validate_cpu_limit(self):
     """
     Test whether custom validate_cpu_limit raises a serializers.ValidationError when
     the cpu_limit is not within the limits provided by the corresponding plugin.
     """
     data = self.data
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(data=data)
     plg_inst_serializer.is_valid(raise_exception=True)
     plg_inst_serializer.context['view'] = mock.Mock()
     plg_inst_serializer.context['view'].get_object = mock.Mock(
         return_value=plugin)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_cpu_limit(plugin.min_cpu_limit - 1)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_cpu_limit(plugin.max_cpu_limit + 1)
 def test_validate_cpu_limit(self):
     """
     Test whether custom validate_cpu_limit raises a serializers.ValidationError when
     the cpu_limit is not within the limits provided by the corresponding plugin.
     """
     data = self.data
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(data=data)
     plg_inst_serializer.is_valid(raise_exception=True)
     plg_inst_serializer.context['view'] = mock.Mock()
     plg_inst_serializer.context['view'].get_object = mock.Mock(return_value=plugin)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_cpu_limit(plugin.min_cpu_limit-1)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_cpu_limit(plugin.max_cpu_limit+1)
Exemplo n.º 5
0
    def test_validate_previous(self):
        """
        Test whether custom validate_previous method returns a previous instance or
        raises a serializers.ValidationError.
        """
        plugin = self.plugin
        # create an 'fs' plugin instance
        pl_inst_fs = PluginInstance.objects.create(
            plugin=plugin,
            owner=self.user,
            compute_resource=plugin.compute_resources.all()[0])
        # create a 'ds' plugin
        data = self.plg_meta_data.copy()
        data['name'] = 'testdsapp'
        data['type'] = 'ds'
        (pl_meta, tf) = PluginMeta.objects.get_or_create(**data)
        data = self.plg_data.copy()
        (plugin, tf) = Plugin.objects.get_or_create(meta=pl_meta, **data)
        plugin.compute_resources.set([self.compute_resource])
        plugin.save()
        data = {
            'plugin': plugin,
            'owner': self.user,
            'compute_resource': plugin.compute_resources.all()[0]
        }

        # create serializer for a 'ds' plugin instance
        plg_inst_serializer = PluginInstanceSerializer(data=data)
        plg_inst_serializer.is_valid(raise_exception=True)
        plg_inst_serializer.context['view'] = mock.Mock()
        plg_inst_serializer.context['view'].get_object = mock.Mock(
            return_value=plugin)
        plg_inst_serializer.context['request'] = mock.Mock()
        plg_inst_serializer.context['request'].user = self.user
        previous = plg_inst_serializer.validate_previous(pl_inst_fs.id)

        self.assertEqual(previous, pl_inst_fs)
        with self.assertRaises(serializers.ValidationError):
            plg_inst_serializer.validate_previous('')
Exemplo n.º 6
0
 def test_validate_value_within_interval(self):
     """
     Test whether custom validate_value_within_interval raises a
     serializers.ValidationError when the first argument is not within the interval
     provided by the second and third argument.
     """
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(plugin)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_value_within_interval(1, 2, 4)
     with self.assertRaises(serializers.ValidationError):
         plg_inst_serializer.validate_value_within_interval(5, 2, 4)
 def test_create(self):
     """
     Test whether overriden 'create' method adds default values for gpu_limit,
     number_of_workers, cpu_limit and memory_limit.
     """
     data = self.data
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(data=data)
     plg_inst_serializer.is_valid(raise_exception=True)
     plg_inst_serializer.context['view'] = mock.Mock()
     plg_inst_serializer.context['view'].get_object = mock.Mock(
         return_value=plugin)
     plg_inst_serializer.create(data)
     self.assertEqual(data['gpu_limit'], plugin.min_gpu_limit)
     self.assertEqual(data['number_of_workers'],
                      plugin.min_number_of_workers)
     self.assertEqual(data['cpu_limit'], CPUInt(plugin.min_cpu_limit))
     self.assertEqual(data['memory_limit'],
                      MemoryInt(plugin.min_memory_limit))
Exemplo n.º 8
0
    def test_validate_compute_resource_name(self):
        """
        Test whether overriden validate_compute_resource_name method checks that the
        provided compute resource name is registered with the corresponding plugin.
        """
        plugin = self.plugin
        data = {
            'plugin': plugin,
            'owner': self.user,
            'compute_resource': plugin.compute_resources.all()[0]
        }

        # create serializer for a  plugin instance
        plg_inst_serializer = PluginInstanceSerializer(data=data)
        plg_inst_serializer.is_valid(raise_exception=True)
        plg_inst_serializer.context['view'] = mock.Mock()
        plg_inst_serializer.context['view'].get_object = mock.Mock(
            return_value=plugin)
        compute_resource_name = plg_inst_serializer.validate_compute_resource_name(
            "host")
        self.assertEqual(compute_resource_name, "host")
        with self.assertRaises(serializers.ValidationError):
            plg_inst_serializer.validate_compute_resource_name('new')
 def test_create(self):
     """
     Test whether overriden 'create' method adds default values for gpu_limit,
     number_of_workers, cpu_limit and memory_limit.
     """
     data = self.data
     plugin = self.plugin
     plg_inst_serializer = PluginInstanceSerializer(data=data)
     plg_inst_serializer.is_valid(raise_exception=True)
     plg_inst_serializer.context['view'] = mock.Mock()
     plg_inst_serializer.context['view'].get_object = mock.Mock(return_value=plugin)
     plg_inst_serializer.create(data)
     self.assertEqual(data['gpu_limit'], plugin.min_gpu_limit)
     self.assertEqual(data['number_of_workers'], plugin.min_number_of_workers)
     self.assertEqual(data['cpu_limit'], CPUInt(plugin.min_cpu_limit))
     self.assertEqual(data['memory_limit'], MemoryInt(plugin.min_memory_limit))
Exemplo n.º 10
0
    def test_validate_status(self):
        """
        Test whether overriden validate_status method raises a serializers.ValidationError
        when the status is not 'cancelled' or the current instance status is not 'started'
        or 'cancelled'.
        """
        plugin = self.plugin
        owner = self.user
        (plg_inst, tf) = PluginInstance.objects.get_or_create(
            plugin=plugin,
            owner=owner,
            compute_resource=plugin.compute_resources.all()[0])
        plg_inst_serializer = PluginInstanceSerializer(plg_inst)
        with self.assertRaises(serializers.ValidationError):
            plg_inst_serializer.validate_status('finishedSuccessfully')

        (plg_inst, tf) = PluginInstance.objects.get_or_create(
            plugin=plugin,
            owner=owner,
            compute_resource=plugin.compute_resources.all()[0])
        plg_inst.status = 'finishedSuccessfully'
        plg_inst_serializer = PluginInstanceSerializer(plg_inst)
        with self.assertRaises(serializers.ValidationError):
            plg_inst_serializer.validate_status('cancelled')