code: public function finish(RunnerServiceContext $context, $finalState = DeliveryExecution::STATE_FINISHED)
      {
          if ($context instanceof QtiRunnerServiceContext) {
              $executionUri = $context->getTestExecutionUri();
              $userUri = \common_session_SessionManager::getSession()->getUserUri();
  
              $executionService = ServiceProxy::singleton();
              $deliveryExecution = $executionService->getDeliveryExecution($executionUri);
  
              if ($deliveryExecution->getUserIdentifier() == $userUri) {
                  \common_Logger::i("Finishing the delivery execution {$executionUri}");
                  $result = $deliveryExecution->setState($finalState);
              } else {
                  \common_Logger::w("Non owner {$userUri} tried to finish deliveryExecution {$executionUri}");
                  $result = false;
              }
  
              $this->getServiceManager()->get(ExtendedStateService::SERVICE_ID)->clearEvents($executionUri);
          } else {
              throw new \common_exception_InvalidArgumentType(
                  'QtiRunnerService',
                  'finish',
                  0,
                  'oat\taoQtiTest\models\runner\QtiRunnerServiceContext',
                  $context
              );
          }
  
          return $result;
      }
docs: Finishes the test
  @param RunnerServiceContext $context
  @param string $finalState
  @return boolean
  @throws \common_Exception