Previously, Graphene supported Glibc version 2.19 only. This commit
adds support for Glibc v2.23 (default in Ubuntu 16.04) and Glibc
v2.27 (default in Ubuntu 18.04). The exact version can be chosen by
specifying GLIBC_VERSION during Graphene build. The default version
to be built is v2.27.
Note that for the best GDB experience it is advised to build Graphene
with the same Glibc version as installed on the host OS.
Previously, a checkpoint on child's do_migration() was allocated at a
random address and could overlap with parent's VMAs, leading to
intermittent bugs on some apps (including Apache under SGX PAL). This
commit turns on CPSTORE_DERANDOMIZATION so that the child always maps
the checkpoint at the same address as the parent. Note that this is
a temporary solution because of memory fragmentation and security
issues. It also disallows the parent process to have less memory than
the child (relevant in SGX environment, e.g., to GCC regression test).
- Deduplicate much of setup code.
- Allow running non-sandbox and sandbox code in single run.
- Use pytest.
- Generate JUnit-XML file for Jenkins.
- Document running a subset of regression tests.
Previously, OpenMP apps failed to run under Graphene-SGX because it did
not support raw system calls (used inside of OpenMP lib, in particular
the futex() syscall). Since recently, Graphene-SGX has support for raw
syscall execution. This commit adds a test showing that OpenMP works.
Previously, there was a bug of a stale debugging memory region copied to
child as part of parent's checkpoint. This bug manifested in Apache test
segfaulting in debug build. This commit fixes the bug and adds Apache to
the Jenkins-Debug job.
The dockerfile instruction RUN will create new layers
when it is executed, original codes will increase the size of
the final image and causes potential cache issues.
So we need to employ shell tricks to keep the layers as small as possible.
Like #307.
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Run CI in a Docker image
* Wait a second for lighttp and apache to fully initialize the socket
* Try to add a timeout for lmbench, which is prone to hanging (vfork)
* Set a timeout on gcc; one of the PRs is causing gcc hello to hang. Also, to avoid interference, run apache test on 8001 by default.
* Update lmbench to ignore bin dir
* Do the faster tests first; fail earlier
* Get the IP addr properly for web server tests
* Some notes on flaky LTP tests to debug later. Move a few that tend to heisenbugs off of the required list for now
* Try to detect vma list corruption during the debug dump, lest it be infinite.
* Temporarily disable the lmbench vfork test (Issue #142).
* Catch some failures faster.
* Catch failures in apachebench
* Take apache out of the Linux host/Debug build CI for now, as it hangs consistently. Filed issue #144 to track.
* Migrate running unit tests for Linux host to Jenkins. Add a unit test for the Linux host, Debug build
* Ignore files generated as part of unit testsing.
* A quick and dirty fix for port collisions during CI tests. Come back and do a better job if we continue having problems
* For some reason, the PAL Process regression tests fail using the default manifest under a debug build. Go ahead and explicate a template for the Process test.
* Added Jenkinsfile for testing
* Got rid of sudo
* Adding new Jenkinsfile for testing Jenkins
* Edit to Test stage for Python pipeline
* Fixed a name typo
* Added new line to check the directory in the new stage
* Add commands to return to directory to execute files
* Added sudo to execute manifest file
* Testing a modifier
* Fixed option from sudo to sh
* Got rid of sh options flag
* Rewrote commands to run the Python code
* Testing to see if ./python-manifest executes
* Testing to see if ./python-manifest executes
* Testing Jenkinsfile-Python
* Testing Jenkinsfile-Python
* Testing Jenkins-Python
* Testing Jenkins-Python
* Checking how sh commands work
* Initializing make
* Testing file
* Testing file
* Testing file
* Jenkinsfile for LMBench tests
* Jenkinsfile for GCC
* Jenkinsfile for GCC
* Jenkinsfile for GCC
* Jenkinsfile for GCC
* Got rid of ./gcc-huge.manifest
* First SGX file for Python
* Adding lines to support keys
* Adding lines to support keys
* Chanaged the ordering to make
* Chanaged the ordering to make
* Checking variables in Makefile
* Add a print statement
* Print out SAVED and BUILD Target variables
* Print out SAVED in a different part of the code in order to see output in a different context
* Change print location of SAVED_TARGET
* Change print location of SAVED_TARGET
* Change print location of SAVED_TARGET
* Edit Makefile to see if SAVED_TARGET is assigned when not running SGX=1 *this is only meant to run the build stage*
* Testing Jenkinsfile after installing Intel SGX
* Got rid of ifndef for SAVED_TARGET
* Adding an environmental variable
* Adding an environmental variable
* Removed environment variable
* Testing use of 'sh' commands
* Testing use of 'sh' commands
* Testing use of 'sh' commands
* Changed ordering of sh executions
* Add regression to make for Python files
* Add regression to make for all files
* Removed the 'regression' terms after make, running 'make regression' didn't work
* Initializing Apache Jenkinsfile
* Initializing Lighttpd Jenkinsfile
* Initializing Lighttpd Jenkinsfile
* Added regression
* Run regression
* Moved all Jenkinsfiles into their own directory
* Added LMBench into the code for testing
* Edited error in specifying directory for LMBench
* Added background process for the server
* Added 'make regression'
* Changed client execution file on line 18
* Added background process for Apache
* Output the host and port after bulding Lighttpd
* Removed specifying the IP and Port
* Added output of a manifest file
* Added output of a manifest file
* Added output of lighttpd-server.conf file
* Combined IP address and port on line 18
* Added tests for lighttpd and apache
* Removed unnecessary files and added files to ignore in .gitignore
* Modifications to Makefile
* Removed logging in Pal/src/Makefile
* Removed my Makefile
* Put Makefile back in
* Reinserted contents of Makefile from main repository
* Revert "Reinserted contents of Makefile from main repository"
This reverts commit d36508709ab38489ae1fc939859e7952b8d56cd9.
* Added new tests for non-SGX Jenkinsfile
* Added DEBUG=1 to make command
* Fixed Makefile spacing errors