'When a new configuraton and cluster state are fed to a sleeping
convergence loop which would cause newly calculated actions, the
loop wakes up and does another iteration.
:param loop: A ``ConvergenceLoop`` in SLEEPING state.'

def assert_woken_up(self, loop):

    node_state = NodeState(hostname=u'192.0.3.5')
    changed_configuration = Deployment(nodes=frozenset([to_node(node_state)]))
    changed_state = DeploymentState(nodes=[node_state, self.local_state])
    loop.receive(_ClientStatusUpdate(client=self.make_amp_client([self.local_state]), configuration=changed_configuration, state=changed_state))
    self.assertEqual(dict(remaining_discoveries=len(self.deployer.local_states), number_calculates=len(self.deployer.calculate_inputs), calculate_inputs=self.deployer.calculate_inputs[(-1)]), dict(remaining_discoveries=0, number_calculates=3, calculate_inputs=(self.local_state, changed_configuration, changed_state)))
