def test_submit_cancel_reply(self): """Handle a response for a canceled job.""" with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.post = lambda a, _: choose_reply( a, {'/problems/': '[%s]' % cancel_reply('123', 'abc123')}) solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} results = solver.sample_ising(linear, quad, num_reads=100) # with self.assertRaises(dwave_micro_client.CanceledFutureError): results.samples
def test_submit_null_reply(self): """Get an error when the server's response is incomplete.""" # con = mock.Mock() with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.post = lambda a, _: choose_reply(a, {'/problems/': ''}) solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} results = solver.sample_ising(linear, quad, num_reads=100) # with self.assertRaises(ValueError): results.samples
def test_submit_error_reply(self): """Handle an error on problem submission.""" error_body = 'An error message' with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.post = lambda a, _: choose_reply( a, { '/problems/': '[%s]' % error_reply('123', 'abc123', error_body) }) solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} results = solver.sample_ising(linear, quad, num_reads=100) # with self.assertRaises(dwave_micro_client.SolverFailureError): results.samples
def test_submit_ok_reply(self): """Handle a normal query and response.""" with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.post = lambda a, _: choose_reply( a, { '/problems/': '[%s]' % complete_no_answer_reply('123', 'abc123') }) con.session.get = lambda a: choose_reply( a, {'/problems/123/': complete_reply('123', 'abc123')}) solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} results = solver.sample_ising(linear, quad, num_reads=100) # self._check(results, linear, quad, 100)
def test_cancel_without_id(self): """Make sure the cancel method submits to the right endpoint. When cancel is called before the submission has returned the problem id. """ submission_id = 'test-id' reply_body = '[%s]' % continue_reply(submission_id, 'solver') release_reply = threading.Event() with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.get = lambda a: choose_reply( a, {'/problems/?id={}'.format(submission_id): reply_body}) def post(a, _): release_reply.wait() return choose_reply( a, {'/problems/'.format(submission_id): reply_body}) con.session.post = post con.session.delete = DeleteEvent.handle solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} future = solver.sample_ising(linear, quad) future.cancel() try: release_reply.set() future.samples self.fail() except DeleteEvent as event: if event.url == '/problems/': self.assertEqual(event.body, '["{}"]'.format(submission_id)) else: self.assertEqual(event.url, '/problems/{}/'.format(submission_id))
def test_submit_continue_then_error_reply(self): """Handle polling for an error message.""" with dwave_micro_client.Connection('', '') as con: con.session = mock.Mock() con.session.post = lambda a, _: choose_reply( a, {'/problems/': '[%s]' % continue_reply('123', 'abc123')}) con.session.get = lambda a: choose_reply( a, { '/problems/?id=123': '[%s]' % error_reply('123', 'abc123', "error message") }) solver = dwave_micro_client.Solver(con, solver_data('abc123')) # Build a problem linear = {index: 1 for index in solver.nodes} quad = {key: -1 for key in solver.undirected_edges} results = solver.sample_ising(linear, quad, num_reads=100) # with self.assertRaises(dwave_micro_client.SolverFailureError): self._check(results, linear, quad, 100)