docker_test.py 2.58 KB
Newer Older
kladko's avatar
kladko committed
1 2
#!/usr/bin/env python

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# Copyright (C) 2019-Present SKALE Labs
#
# This file is part of sgxwallet.
#
# sgxwallet is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# sgxwallet is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with sgxwallet.  If not, see <https://www.gnu.org/licenses/>.
kladko's avatar
kladko committed
19 20 21 22 23 24
#
#    @file  docker_test.py
#    @author Stan Kladko
#    @date 2020
#

kladko's avatar
kladko committed
25
import sys, os, subprocess, socket, time
kladko's avatar
kladko committed
26

kladko's avatar
kladko committed
27
os.chdir("..")
kladko's avatar
kladko committed
28
topDir = os.getcwd() + "/sgxwallet"
29
print("Starting container test")
kladko's avatar
kladko committed
30 31
print("Top directory is:" + topDir)

kladko's avatar
kladko committed
32
DOCKER_FILE_NAME = sys.argv[1]
Oleh Nikolaiev's avatar
Oleh Nikolaiev committed
33 34
IMAGE_NAME = sys.argv[2]
TAG_POSTFIX = "latest_commit"
kladko's avatar
kladko committed
35

kladko's avatar
kladko committed
36
FULL_IMAGE_NAME = "skalenetwork/" + IMAGE_NAME +":" + TAG_POSTFIX
kladko's avatar
kladko committed
37

Oleh Nikolaiev's avatar
Oleh Nikolaiev committed
38
print("Running tests");
kladko's avatar
kladko committed
39

kladko's avatar
kladko committed
40 41 42 43
isNightly = os.environ.get("NIGHTLY_TESTS")

iterations = 2 if isNightly else 1

kladko's avatar
kladko committed
44
for i in iter(range(iterations)):
kladko's avatar
kladko committed
45
    dockerRun = subprocess.run(["docker", "run", "-v", topDir + "/sgx_data:/usr/src/sdk/sgx_data","-t",
kladko's avatar
kladko committed
46
                            "-v", "/dev/urandom:/dev/random", "--name", "sgxwallet", "--network=host", "skalenetwork/" + IMAGE_NAME +":" + TAG_POSTFIX, "-t"])
kladko's avatar
kladko committed
47

kladko's avatar
kladko committed
48 49 50 51
print(dockerRun.stdout)
print(dockerRun.stderr)
assert dockerRun.returncode == 0;

kladko's avatar
kladko committed
52
assert subprocess.call(["docker", "rm", "sgxwallet"]) == 0
kladko's avatar
kladko committed
53
assert subprocess.call(["docker", "run", "-v", topDir + "/sgx_data:/usr/src/sdk/sgx_data","-d",
kladko's avatar
kladko committed
54
                        "--name", "sgxwallet",
kladko's avatar
kladko committed
55
                    "--network=host", "skalenetwork/" + IMAGE_NAME +":" + TAG_POSTFIX, "-y"]) == 0
56

svetaro's avatar
svetaro committed
57 58
time.sleep(5);

kladko's avatar
kladko committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
assert os.path.isdir(topDir + '/sgx_data/sgxwallet.db')
assert os.path.isdir(topDir + '/sgx_data/cert_data');
assert os.path.isdir(topDir + '/sgx_data/CSR_DB');
assert os.path.isdir(topDir + '/sgx_data/CSR_STATUS_DB');
assert os.path.isfile(topDir + '/sgx_data/cert_data/SGXServerCert.crt')
assert os.path.isfile(topDir + '/sgx_data/cert_data/SGXServerCert.key')
assert os.path.isfile(topDir + '/sgx_data/cert_data/rootCA.pem')
assert os.path.isfile(topDir + '/sgx_data/cert_data/rootCA.key')

s1 = socket.socket()
s2 = socket.socket()
s3 = socket.socket()
address = '127.0.0.1'
s1.connect((address, 1026))
s2.connect((address, 1027))
s3.connect((address, 1028))

s1.close()
s2.close()
s3.close()