def test_devices_with_invalid_config(self): """Charm has empty devices configuration.""" linter = Mock() charm = {'devices': 'invalid devices config'} validate_devices(charm, linter) self.assertEqual(linter.err.call_count, 1) linter.err.assert_has_calls([ call('devices: must be a dictionary of device definitions'), ], any_order=True)
def test_devices_with_invalid_config(self): """Charm has empty devices configuration.""" linter = Mock() charm = { 'devices': 'invalid devices config' } validate_devices(charm, linter) self.assertEqual(linter.err.call_count, 1) linter.err.assert_has_calls([ call('devices: must be a dictionary of device definitions'), ], any_order=True)
def test_minimal_devices_config(self): """Charm has the minimum allowed devices configuration.""" linter = Mock() charm = { 'devices': { 'bitcoinminer': { 'type': 'nvidia.com/gpu', 'count': 1 } } } validate_devices(charm, linter) self.assertFalse(linter.err.called)
def test_devices_unknown_keys(self): """Charm has devices with illegal keys.""" linter = Mock() charm = { 'devices': { 'bitcoinminer': { 'type': 'nvidia.com/gpu', 'count': 1, 'unknown': True } } } validate_devices(charm, linter) self.assertEqual(linter.err.call_count, 1) linter.err.assert_has_calls([ call('devices.bitcoinminer: Unrecognized keys in mapping: "{\'unknown\': True}"'), ], any_order=True)
def test_devices_proof_extensions(self): """Charm has devices with proof extensions.""" linter = Mock() charm = { 'devices': { 'bitcoinminer': { 'type': 'nvidia.com/gpu', 'count': 1, 'unknown': True } } } extensions = [{ 'name': 'unknown', 'type': 'Boolean', }] validate_devices(charm, linter, extensions) self.assertEqual(linter.err.call_args_list, [])
def test_devices_proof_extensions(self): """Charm has devices with proof extensions.""" linter = Mock() charm = { 'devices': { 'bitcoinminer': { 'type': 'nvidia.com/gpu', 'count': 1, 'unknown': True } } } extensions = [ { 'name': 'unknown', 'type': 'Boolean', } ] validate_devices(charm, linter, extensions) self.assertEqual(linter.err.call_args_list, [])
def test_devices_with_invalid_values(self): """Charm has devices with invalid values.""" linter = Mock() charm = { 'devices': { 'bitcoinminer': { 'type': 'nvidia.com/gpu', 'count': 'non number' }, 'bitcoinminer1': { 'count': 1 } } } validate_devices(charm, linter) self.assertEqual(linter.err.call_count, 2) linter.err.assert_has_calls([ call('devices.bitcoinminer.count: "non number" is not a number'), call('devices.bitcoinminer1.type: Required'), ], any_order=True)