forked from TechEmpower/FrameworkBenchmarks
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Abstract
Move the suite away from the current methodology of using scripting files to handle dependencies, installation into the $IROOT directory for sandboxing, and instead use Docker CE.
Reasoning
- Installing software to
$IROOTis hard (much harder thanapt-get) and prone to difficult-to-identify errors - Many dependencies use
apt-getalready for various reasons, and migrating away from globally installed software is hard (much harder than allowingapt-get) - Docker provides a much cleaner reusable sandbox environment that has been fire-tested much more-so than our in-house implementation
- In testing, Docker does not appear to incur much (if any) performance penalty
Ongoing work is in this branch.
Action Items (in no particular order)
- Create base
tfbdockerfile with as minimal software installed as possible - Implement base dockerfile to have an entrypoint of
TFBReapearso that everything is run through him - Create POC using only
geminiand the dockerfile(s) required to build and run in console mode - Create POC suite implementation using the dockerfile(s) require to build and run
geminiand perform a verification - Implement stable mechanism for finding running docker containers and stopping them
- Implement stable mechanism for removing docker images for a specific test after the container is stopped (there is no reason to keep a
geminiimage after we have run thegeminitest) - Create docker folder hierarchy that would allow for similar grouping to our current dependency hierarchy (
docker/languages,docker/frameworks, etc) - Change
benchmark_config.jsonto specify a dockerfile instead of asetup.sh - Implement database mechanisms currently handled by
fw_depends(which is being deprecated and removed with the docker work) - Implement client mechanisms currently handled by
fw_depends(installingwrkon the remote client, etc) - Update vagrant install to call
tfb --init --quietto initialize the software on the database and client machine (localhost) - Fix docker build process to split the output to the console as well as the log (see
framework_test.pyfor an example of this; this is needed to see output in Travis-CI, for example) - Implement error-handling for an unfound dependency (
docker build...cannot find the file referenced inFROM somethingin a dockerfile) - Implement error-handling for a docker build failing (
docker build...fails for some reason) - Implement error-handling for a test not starting properly (
docker run...fails for some reason) - Clean out
prerequisites.shsince it will no longer require most of the packages listed (they will move to the various dockerfiles) - Update
prerequisites.shto install Rust and build TFBReaper - Update
prerequisites.shto install Docker CE - ... Migrate all the shell scripts to dockerfiles
- Updated
scaffoldingto reflect the docker implementation (instructions, default files, etc) - Update documentation to reflect all these changes
- Set
ulimiton containers (see this) - Update
--clean-allimplementation to delete all docker images
Metadata
Metadata
Assignees
Labels
No labels