tester

Web application used to assigment validation

https://github.com/fiit-databases/tester

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: ieee.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.8%) to scientific vocabulary

Keywords

django docker education hacktoberfest
Last synced: 6 months ago · JSON representation ·

Repository

Web application used to assigment validation

Basic Info
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 2
  • Open Issues: 0
  • Releases: 22
Topics
django docker education hacktoberfest
Created about 3 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Changelog License Citation

README.md

TesterDBS

A tool for automating the testing process for database assignments in the Database Technologies course at the Slovak University of Technology.

The tool takes a student's Docker container as input, creates a sandbox environment using Docker, and executes predefined testing scenarios consisting of HTTP requests and their expected responses. The output is a comparison of the actual responses generated by the student's image and the expected responses. The tool utilizes Docker and Redis for efficient processing.

Install

Application use these environments variables:

| Variable | Description | Default | Example | |--------------------------|------------------------------------------|-----------------------------------|------------------------------------| | BASE_URL | Base URL of the application | - | https://tester-dbs.fiit.stuba.sk | | ALLOWED_HOSTS | Allowed hosts (Django Setting) | - | tester-dbs.fiit.stuba.sk | | DATABASE_HOST | Database server location | - | docker.for.mac.localhost | | DATABASE_NAME | Database name | - | tester | | DATABASE_PASSWORD | Database user password | super-secure-password | | | DATABASE_PORT | Database port | 5432 | 5432 | | DATABASE_USER | Database user | - | tester | | DJANGO_SETTINGS_MODULE | Django Settings Module | dbs_tester.settings.development | dbs_tester.settings.production | | REDIS_HOST | Redis host | host.docker.internal | host.docker.internal | | REDIS_DB | Redis database | 0 | 0 | | REDIS_DB | Redis database | 0 | 0 | | REDIS_DB | Redis database | 0 | 0 | | SECRET_KEY | Django secret | - | ghp_asdqwjdsncvsdv | | GITHUB_TOKEN | GitHub token | - | Secure-random-string-21 | | GITHUB_USER | GitHub username | - | Sibyx | | DBS_DOCKER_NETWORK | Docker network for assignment containers | dbs | dbs |

Docker

Dockerfile contains two targets which are pre-build and available on GitHub Container registry:

Example of configuration is present in compose.yml.

The containers require access to the Docker environment that's why you have to create volume, which maps a path to the Docker socket.

Repository contains an example of the systemd unit script in the conf/tester-dbs.service.

From source

We use poetry for dependency management and PostgreSQL 15 (10+ should be compatible) as a data storage (acquisition files are stored on the filesystem, not in the database). To set up instance with demo database follow these simple steps:

  1. Create python virtual environment (python -m venv venv)
  2. Enter environment (source venv/bin/activate)
  3. Install dependencies poetry install
  4. Create .env file according .env.example
  5. Execute migrations python manage.py migrate
  6. Create superuser using python manage.py createsuperuser or setup LDAP in auth_sources table

Docs

For more information check the docs directory.

The key concepts of this software are described in the blog post How We Built an Application to Test Student Docker Images for a Database Systems University Course.

This blog post was later extended and presented at Communication and Information Technologies (KIT) 2023 with the article Docker-Based Assignment Evaluations in E-Learning.


Made with ❤️ and ☕️ FIIT STU (c) 2022-2024

Owner

  • Name: FIIT-Databases
  • Login: FIIT-Databases
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Dubec
    given-names: Jakub
    orcid: https://orcid.org/0000-0003-4248-5264
  - family-names: Balažia
    given-names: Ján
  - family-names: Bencel
    given-names: Rastislav
  - family-names: Čičák
    given-names: Pavel
title: "Docker-Based Assignment Evaluations in E-Learning"
version: 1.12.0
identifiers:
  - type: doi
    value: 10.1109/KIT59097.2023.10297093
date-released: 2023-07-12

GitHub Events

Total
Last Year

Dependencies

.github/workflows/github-publish.yml actions
  • actions/checkout v3 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • docker/metadata-action v4 composite
.github/workflows/tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
Dockerfile docker
  • alpine 3.17 build
package-lock.json npm
  • 226 dependencies
package.json npm
  • autoprefixer ^10.4.13 development
  • babel-loader ^9.1.2 development
  • css-loader ^6.7.3 development
  • export-loader ^1.0.52 development
  • postcss-loader ^7.0.2 development
  • sass ^1.57.1 development
  • sass-loader ^13.2.0 development
  • style-loader ^3.3.1 development
  • webpack ^5.75.0 development
  • webpack-cli ^5.0.1 development
  • @popperjs/core ^2.10.2
  • bootstrap ^5.2.3
  • bootstrap-icons ^1.10.3
poetry.lock pypi
  • flake8 6.0.0 develop
  • mccabe 0.7.0 develop
  • pycodestyle 2.10.0 develop
  • pyflakes 3.0.1 develop
  • argon2-cffi 21.3.0
  • argon2-cffi-bindings 21.2.0
  • asgiref 3.6.0
  • async-timeout 4.0.2
  • beautifulsoup4 4.11.2
  • certifi 2022.12.7
  • cffi 1.15.1
  • charset-normalizer 3.0.1
  • click 8.1.3
  • colorama 0.4.6
  • django 4.1.7
  • django-api-forms 1.0.0rc7
  • django-bootstrap-v5 1.0.11
  • django-rq 2.7.0
  • docker 6.0.1
  • idna 3.4
  • markdown 3.4.1
  • packaging 23.0
  • porcupine-python 0.5.0
  • psycopg2 2.9.5
  • pyasn1 0.4.8
  • pyasn1-modules 0.2.8
  • pycparser 2.21
  • pydantic 1.7.4
  • pygal 3.0.0
  • python-crontab 2.7.1
  • python-dateutil 2.8.2
  • python-dotenv 0.21.1
  • python-ldap 3.4.3
  • pywin32 305
  • redis 4.5.1
  • requests 2.28.2
  • rq 1.12.0
  • sentry-sdk 1.15.0
  • six 1.16.0
  • soupsieve 2.4
  • sqlparse 0.4.3
  • tzdata 2022.7
  • urllib3 1.26.14
  • websocket-client 1.5.1
pyproject.toml pypi
  • flake8 ^6.0.0 develop
  • Markdown ^3.4.1
  • argon2-cffi ^21.0.0
  • django ^4
  • django-api-forms 1.0.0rc7
  • django-bootstrap-v5 ^1.0.11
  • django-rq ^2.6
  • docker ^6.0.1
  • porcupine-python ^0.5.0
  • psycopg2 ^2.9
  • pygal ^3.0.0
  • python ^3.10
  • python-crontab ^2.7.1
  • python-dotenv ^0
  • python-ldap ^3.4.3
  • redis ^4.0
  • requests ^2.27.1
  • sentry-sdk ^1
apps/core/management/commands/setup.py pypi