def test_collect_deferred_error_works(): collect_only = { 'vms': True, 'vmguests': True, 'datastores': True, 'hosts': True, 'snapshots': True, } collector = VmwareCollector( '127.0.0.1', 'root', 'password', collect_only, ignore_ssl=True, ) collector.content = _succeed(mock.Mock()) @defer.inlineCallbacks def _fake_get_vms(*args, **kwargs): yield None raise RuntimeError('An error has occurred') with contextlib.ExitStack() as stack: stack.enter_context(mock.patch.object(collector, '_vmware_get_vms')).side_effect = _fake_get_vms stack.enter_context( mock.patch.object(collector, '_vmware_get_vm_perf_manager_metrics') ).return_value = _succeed(None) stack.enter_context(mock.patch.object(collector, '_vmware_get_datastores')).return_value = _succeed(None) stack.enter_context(mock.patch.object(collector, '_vmware_get_hosts')).return_value = _succeed(None) stack.enter_context(mock.patch.object(collector, '_vmware_disconnect')).return_value = _succeed(None) with pytest.raises(defer.FirstError): yield collector.collect()
def test_collect(): collect_only = { 'vms': True, 'vmguests': True, 'datastores': True, 'hosts': True, 'snapshots': True, } collector = VmwareCollector( '127.0.0.1', 'root', 'password', collect_only, ignore_ssl=True, ) collector.content = _succeed(mock.Mock()) with contextlib.ExitStack() as stack: stack.enter_context(mock.patch.object(collector, '_vmware_get_vms')).return_value = _succeed(True) stack.enter_context( mock.patch.object(collector, '_vmware_get_vm_perf_manager_metrics') ).return_value = _succeed(True) stack.enter_context(mock.patch.object(collector, '_vmware_get_datastores')).return_value = _succeed(True) stack.enter_context(mock.patch.object(collector, '_vmware_get_hosts')).return_value = _succeed(True) stack.enter_context(mock.patch.object(collector, '_vmware_disconnect')).return_value = _succeed(True) metrics = yield collector.collect() assert metrics[0].name == 'vmware_vm_power_state' assert metrics[-1].name == 'vmware_vm_snapshot_timestamp_seconds'