def test_run(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore( {'historyfile': dict(), 'identityfile': dict()}) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch,\ mock.patch('downstream_farmer.farmer.save', autospec=True) as s,\ mock.patch.object(Farmer, 'wait_for_shutdown') as w: patch.return_value.token = 'foo' patch.return_value.address = 'bar' farmer.run(True) patch.assert_called_with( farmer.url, farmer.token, farmer.address, farmer.size, '', '', farmer, farmer.chunk_dir) patch.return_value.run_async.assert_called_with( True, farmer.number) self.assertTrue(w.called) self.assertTrue(patch.return_value.connect.called) self.assertEqual(farmer .state['nodes'][patch.return_value .server]['token'], patch.return_value.token) self.assertEqual(farmer .state['nodes'][patch.return_value .server]['address'], patch.return_value.address) self.assertTrue(s.called)
def test_run(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore({ 'historyfile': dict(), 'identityfile': dict() }) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch,\ mock.patch('downstream_farmer.farmer.save', autospec=True) as s,\ mock.patch.object(Farmer, 'wait_for_shutdown') as w: patch.return_value.token = 'foo' patch.return_value.address = 'bar' farmer.run(True) patch.assert_called_with(farmer.url, farmer.token, farmer.address, farmer.size, '', '', farmer, farmer.chunk_dir) patch.return_value.run_async.assert_called_with( True, farmer.number) self.assertTrue(w.called) self.assertTrue(patch.return_value.connect.called) self.assertEqual( farmer.state['nodes'][patch.return_value.server]['token'], patch.return_value.token) self.assertEqual( farmer.state['nodes'][patch.return_value.server]['address'], patch.return_value.address) self.assertTrue(s.called)
def test_run_unable_to_connect(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore( {'historyfile': dict(), 'identityfile': dict()}) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch: patch.return_value.connect.side_effect = DownstreamError( 'test error') with self.assertRaises(DownstreamError) as ex: farmer.run(True) self.assertEqual(str(ex.exception), 'test error')
def test_run_nonexistent_token_reconnect(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore( {'historyfile': dict(), 'identityfile': dict()}) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch,\ mock.patch('downstream_farmer.farmer.save', autospec=True),\ mock.patch.object(Farmer, 'wait_for_shutdown'): patch.return_value.connect.side_effect = \ MockRaiseOnFirstCall( DownstreamError('Unable to connect: Nonexistent token.')) farmer.run(True) self.assertEqual(patch.return_value.connect.call_count, 2)
def test_run_unable_to_connect(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore({ 'historyfile': dict(), 'identityfile': dict() }) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch: patch.return_value.connect.side_effect = DownstreamError( 'test error') with self.assertRaises(DownstreamError) as ex: farmer.run(True) self.assertEqual(str(ex.exception), 'test error')
def test_run_nonexistent_token_reconnect(self): with mock.patch('downstream_farmer.farmer.restore', autospec=True) as r,\ mock.patch('six.moves.urllib.request.urlopen') as patch: r.side_effect = MockRestore({ 'historyfile': dict(), 'identityfile': dict() }) farmer = Farmer(self.test_args) with mock.patch('downstream_farmer.farmer.DownstreamClient') as patch,\ mock.patch('downstream_farmer.farmer.save', autospec=True),\ mock.patch.object(Farmer, 'wait_for_shutdown'): patch.return_value.connect.side_effect = \ MockRaiseOnFirstCall( DownstreamError('Unable to connect: Nonexistent token.')) farmer.run(True) self.assertEqual(patch.return_value.connect.call_count, 2)