Remove symlink & just copy postBuild file instead

Temp fix for https://github.com/jupyter/repo2docker/issues/160.
Also includes a test to prevent drift
pull/161/head
yuvipanda 2017-12-01 00:41:50 -08:00
rodzic 2d31649d02
commit 4419890c01
3 zmienionych plików z 50 dodań i 1 usunięć

Wyświetl plik

@ -79,3 +79,21 @@ def test_memlimit_dockerfile_fail():
512,
256
)
def test_memlimit_same_postbuild():
"""
Validate that the postBuild files for dockerfile & nondockerfile are same
Until https://github.com/jupyter/repo2docker/issues/160 gets fixed.
"""
basedir = os.path.dirname(__file__)
filepaths = [
os.path.join(basedir, 'memlimit', t, "postBuild")
for t in ("dockerfile", "non-dockerfile")
]
file_contents = []
for fp in filepaths:
with open(fp) as f:
file_contents.append(f.read())
assert all(c == file_contents[0] for c in file_contents)

Wyświetl plik

@ -4,6 +4,11 @@ Simplest program that tries to allocate a large amount of RAM.
malloc lies on Linux by default, so we use memset to force the
kernel to actually give us real memory.
NOTE: This file has to be duplicated & present in all the following locations:
- tests/memlimit/dockerfile/postBuild
- tests/memlimit/dockerfile/postBuild
See https://github.com/jupyter/repo2docker/issues/160 for reason
"""
from ctypes import cdll, c_void_p, memset
import os

Wyświetl plik

@ -1 +0,0 @@
../dockerfile/postBuild

Wyświetl plik

@ -0,0 +1,27 @@
#!/usr/bin/env python3
"""
Simplest program that tries to allocate a large amount of RAM.
malloc lies on Linux by default, so we use memset to force the
kernel to actually give us real memory.
NOTE: This file has to be duplicated & present in all the following locations:
- tests/memlimit/dockerfile/postBuild
- tests/memlimit/dockerfile/postBuild
See https://github.com/jupyter/repo2docker/issues/160 for reason
"""
from ctypes import cdll, c_void_p, memset
import os
libc = cdll.LoadLibrary("libc.so.6")
libc.malloc.restype = c_void_p
with open('mem_allocate_mb') as f:
mem_allocate_mb = int(f.read().strip())
size = 1024 * 1024 * mem_allocate_mb
print("trying to allocate {}MB".format(mem_allocate_mb))
ret = libc.malloc(size)
memset(ret, 0, size)