def test_production_update_order_if_complete(self): order = Order.find(self.mock_order.generate_testing_order(self.user_id)) Scene.bulk_update([s.id for s in order.scenes()], {'status': 'retry'}) order.order_source = 'espa' order.completion_email_sent = None order.save() self.assertTrue(production_provider.update_order_if_complete(order))
def error_to(self, orderid, state): order = Order.find(orderid) err_scenes = order.scenes({'status': 'error'}) try: if state == 'submitted': Scene.bulk_update( [s.id for s in err_scenes], { 'status': state, 'orphaned': None, 'reported_orphan': None, 'log_file_contents': '', 'note': '', 'retry_count': 0 }) order.status = 'ordered' order.completion_email_sent = None order.save() else: Scene.bulk_update([s.id for s in err_scenes], {'status': state}) return True except SceneException as e: logger.critical('ERR admin provider error_to\ntrace: {}'.format( e.message)) raise AdministrationProviderException('ERR updating with error_to')
def test_hadoop_reset_status(self): order_id = self.mock_order.generate_testing_order(self.user_id) scenes = Scene.where({'order_id': order_id}) Scene.bulk_update([s.id for s in scenes], {'status': 'processing'}) self.assertTrue(production_provider.reset_processing_status()) scenes = Scene.where({'order_id': order_id}) self.assertEqual({'submitted'}, set([s.status for s in scenes]))
def cancel_order(self, orderid, request_ip_address): """ Cancels an order, and all scenes contained within it :return: """ order = Order.where({'id': orderid}) if len(order) != 1: raise OrderingProviderException('Order not found') else: order = order.pop() logger.info('Received request to cancel {} from {}'.format( orderid, request_ip_address)) killable_scene_states = ('submitted', 'oncache', 'onorder', 'queued', 'retry', 'error', 'unavailable', 'complete') scenes = order.scenes(sql_dict={'status': killable_scene_states}) if len(scenes) > 0: Scene.bulk_update([s.id for s in scenes], Scene.cancel_opts()) else: logger.info('No scenes to cancel for order {}'.format( orderid, request_ip_address)) order.status = 'cancelled' order.save() logger.info('Request to cancel {} from {} successful.'.format( orderid, request_ip_address)) return order
def test_production_calc_scene_download_sizes(self): order = Order.find(self.mock_order.generate_testing_order(self.user_id)) scenes = order.scenes() Scene.bulk_update([s.id for s in scenes], {'status': 'complete', 'download_size': 0}) self.assertTrue(production_provider.calc_scene_download_sizes()) upscenes = Scene.where({'status': 'complete', 'download_size': 999}) self.assertEqual(len(upscenes), len(scenes))
def test_production_calc_scene_download_sizes(self): order = Order.find(self.mock_order.generate_testing_order(self.user_id)) scenes = order.scenes() Scene.bulk_update([s.id for s in scenes], {'status': 'complete', 'download_size': 0}) scenes = Order.find(order.id).scenes({'status': 'complete', 'download_size': 0}) self.assertTrue(production_provider.calc_scene_download_sizes(scenes)) upscenes = Scene.where({'status': 'complete', 'download_size': 999}) self.assertEqual(len(upscenes), len(scenes))
def test_production_order_completion_email_error(self): """ Make sure that order status is not set to complete if the completion email failed to send """ order = Order.find(self.mock_order.generate_testing_order( self.user_id)) Scene.bulk_update([s.id for s in order.scenes()], {'status': 'complete'}) order.order_source = 'espa' order.completion_email_sent = None order.save() production_provider.update_order_if_complete(order) self.assertEquals(order.status, 'ordered')