
Previously, the same runner could be used multiple times with different submissions simultaneously. This, however, yielded errors, for example when one submission time oud (causing the running to be deleted) while another submission was still executed. Admin actions, such as the shell, can be still executed regardless of any other code execution. Fixes CODEOCEAN-HG Fixes openHPI/poseidon#423
27 lines
706 B
Ruby
27 lines
706 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Testrun < ApplicationRecord
|
|
include Creation
|
|
belongs_to :file, class_name: 'CodeOcean::File', optional: true
|
|
belongs_to :submission
|
|
belongs_to :testrun_execution_environment, optional: true, dependent: :destroy
|
|
has_many :testrun_messages, dependent: :destroy
|
|
|
|
enum status: {
|
|
ok: 0,
|
|
failed: 1,
|
|
container_depleted: 2,
|
|
timeout: 3,
|
|
out_of_memory: 4,
|
|
terminated_by_client: 5,
|
|
runner_in_use: 6,
|
|
}, _default: :ok, _prefix: true
|
|
|
|
validates :exit_code, numericality: {only_integer: true, min: 0, max: 255}, allow_nil: true
|
|
validates :status, presence: true
|
|
|
|
def log
|
|
testrun_messages.output.pluck(:log).join.presence
|
|
end
|
|
end
|