Files
codeocean/spec/factories/execution_environment.rb
2021-11-04 19:15:33 +01:00

170 lines
5.0 KiB
Ruby

# frozen_string_literal: true
FactoryBot.define do
factory :coffee_script, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-coffee:latest' }
file_type { association :dot_coffee, user: user }
help
name { 'CoffeeScript' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'coffee' }
singleton_execution_environment
end
factory :html, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-html:latest' }
file_type { association :dot_html, user: user }
help
name { 'HTML5' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'touch' }
singleton_execution_environment
test_command { 'rspec %{filename} --format documentation' }
testing_framework { 'RspecAdapter' }
end
factory :java, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'openhpi/co_execenv_java:8-antlr' }
file_type { association :dot_java, user: user }
help
name { 'Java 8' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'make run' }
singleton_execution_environment
test_command { 'make test CLASS_NAME="%{class_name}" FILENAME="%{filename}"' }
testing_framework { 'JunitAdapter' }
end
factory :jruby, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-jruby:latest' }
file_type { association :dot_rb, user: user }
help
name { 'JRuby 1.7' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'jruby %{filename}' }
singleton_execution_environment
test_command { 'rspec %{filename} --format documentation' }
testing_framework { 'RspecAdapter' }
end
factory :node_js, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-node:latest' }
file_type { association :dot_js, user: user }
help
name { 'Node.js' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'node %{filename}' }
singleton_execution_environment
end
factory :python, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'openhpi/co_execenv_python:3.4' }
file_type { association :dot_py, user: user }
help
name { 'Python 3.4' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'python3 %{filename}' }
singleton_execution_environment
test_command { 'python3 -m unittest --verbose %{module_name}' }
testing_framework { 'PyUnitAdapter' }
end
factory :ruby, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-ruby:latest' }
file_type { association :dot_rb, user: user }
help
name { 'Ruby 2.2' }
network_enabled { false }
permitted_execution_time { 10.seconds }
pool_size { 0 }
run_command { 'ruby %{filename}' }
singleton_execution_environment
test_command { 'rspec %{filename} --format documentation' }
testing_framework { 'RspecAdapter' }
end
factory :sinatra, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-sinatra:latest' }
file_type { association :dot_rb, user: user }
exposed_ports { [4567] }
help
name { 'Sinatra' }
network_enabled { true }
permitted_execution_time { 15.minutes }
pool_size { 0 }
run_command { 'ruby %{filename}' }
singleton_execution_environment
test_command { 'rspec %{filename} --format documentation' }
testing_framework { 'RspecAdapter' }
end
factory :sqlite, class: 'ExecutionEnvironment' do
created_by_teacher
default_memory_limit
default_cpu_limit
docker_image { 'hklement/ubuntu-sqlite:latest' }
file_type { association :dot_sql, user: user }
help
name { 'SQLite' }
network_enabled { false }
permitted_execution_time { 1.minute }
pool_size { 0 }
run_command { 'sqlite3 /database.db -init %{filename} -html' }
singleton_execution_environment
test_command { 'ruby %{filename}' }
testing_framework { 'SqlResultSetComparatorAdapter' }
end
trait :default_memory_limit do
memory_limit { ExecutionEnvironment::DEFAULT_MEMORY_LIMIT }
end
trait :default_cpu_limit do
cpu_limit { 20 }
end
trait :help do
help { Forgery(:lorem_ipsum).words(Forgery(:basic).number(at_least: 50, at_most: 100)) }
end
trait :singleton_execution_environment do
initialize_with { ExecutionEnvironment.where(name: name).first_or_create }
end
end