Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Justin
slapos
Commits
a61f948b
Commit
a61f948b
authored
Sep 01, 2022
by
Thomas Gambier
🚴🏼
Browse files
Options
Browse Files
Download
Plain Diff
Update Release Candidate
parents
3a50453e
4119226f
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
221 additions
and
227 deletions
+221
-227
component/ZODB/test-zodb4-wc2.cfg
component/ZODB/test-zodb4-wc2.cfg
+5
-1
component/groonga/buildout.cfg
component/groonga/buildout.cfg
+2
-2
component/mariadb/buildout.cfg
component/mariadb/buildout.cfg
+3
-4
component/nxdtest/test-py2.cfg
component/nxdtest/test-py2.cfg
+1
-1
component/pygolang/test-py2.cfg
component/pygolang/test-py2.cfg
+7
-0
component/python3/buildout.cfg
component/python3/buildout.cfg
+7
-26
component/python3/default_encoding.patch
component/python3/default_encoding.patch
+0
-12
component/slapos/obs.cfg
component/slapos/obs.cfg
+3
-2
software/caddy-frontend/test/test.py
software/caddy-frontend/test/test.py
+84
-73
software/html5as/buildout.hash.cfg
software/html5as/buildout.hash.cfg
+2
-2
software/html5as/instance.cfg.in
software/html5as/instance.cfg.in
+1
-1
software/html5as/instance_replicate.cfg.in
software/html5as/instance_replicate.cfg.in
+2
-2
software/html5as/test/test.py
software/html5as/test/test.py
+47
-31
software/htmlvalidatorserver/software.cfg
software/htmlvalidatorserver/software.cfg
+0
-2
software/htmlvalidatorserver/test/test.py
software/htmlvalidatorserver/test/test.py
+0
-1
software/jstestnode/buildout.hash.cfg
software/jstestnode/buildout.hash.cfg
+1
-1
software/jstestnode/runTestSuite.in
software/jstestnode/runTestSuite.in
+12
-12
software/jstestnode/software.cfg
software/jstestnode/software.cfg
+0
-3
software/ors-amarisoft/buildout.hash.cfg
software/ors-amarisoft/buildout.hash.cfg
+3
-3
software/ors-amarisoft/instance-enb-epc.jinja2.cfg
software/ors-amarisoft/instance-enb-epc.jinja2.cfg
+2
-2
software/ors-amarisoft/instance-epc.jinja2.cfg
software/ors-amarisoft/instance-epc.jinja2.cfg
+1
-1
software/ors-amarisoft/instance-gnb-epc.jinja2.cfg
software/ors-amarisoft/instance-gnb-epc.jinja2.cfg
+2
-2
software/ors-amarisoft/software.cfg
software/ors-amarisoft/software.cfg
+0
-2
software/seleniumserver/buildout.hash.cfg
software/seleniumserver/buildout.hash.cfg
+1
-1
software/seleniumserver/instance-selenium.cfg.in
software/seleniumserver/instance-selenium.cfg.in
+2
-2
software/seleniumserver/software.cfg
software/seleniumserver/software.cfg
+0
-3
software/seleniumserver/test/test.py
software/seleniumserver/test/test.py
+21
-20
software/slapos-sr-testing/software-py3.cfg
software/slapos-sr-testing/software-py3.cfg
+8
-0
software/slapos-sr-testing/software.cfg
software/slapos-sr-testing/software.cfg
+0
-8
software/turnserver/software.cfg
software/turnserver/software.cfg
+0
-3
software/turnserver/test/test.py
software/turnserver/test/test.py
+3
-3
stack/slapos.cfg
stack/slapos.cfg
+1
-1
No files found.
component/ZODB/test-zodb4-wc2.cfg
View file @
a61f948b
...
@@ -23,6 +23,8 @@ parts =
...
@@ -23,6 +23,8 @@ parts =
major = 4-wc2
major = 4-wc2
[ZODB4-wc2-repository]
[ZODB4-wc2-repository]
revision =
revision =
[python]
part = python2.7
# we need persistent to be a git checkout because persistent tests want to
# we need persistent to be a git checkout because persistent tests want to
# discover in-tree files that are not present in persistent egg when it is
# discover in-tree files that are not present in persistent egg when it is
...
@@ -76,7 +78,9 @@ inline =
...
@@ -76,7 +78,9 @@ inline =
from os.path import dirname
from os.path import dirname
for m in "ZODB", "persistent", "BTrees", "transaction", "ZEO":
for m in "ZODB", "persistent", "BTrees", "transaction", "ZEO":
print(dirname(__import__(m).__file__))
print(dirname(__import__(m).__file__))
"""])
"""],
universal_newlines=True,
)
ZODB, persistent, BTrees, transaction, ZEO = where.split()
ZODB, persistent, BTrees, transaction, ZEO = where.split()
# run tests for whole ZODB stack
# run tests for whole ZODB stack
...
...
component/groonga/buildout.cfg
View file @
a61f948b
...
@@ -15,8 +15,8 @@ extends =
...
@@ -15,8 +15,8 @@ extends =
[groonga]
[groonga]
recipe = slapos.recipe.cmmi
recipe = slapos.recipe.cmmi
shared = true
shared = true
url = https://packages.groonga.org/source/groonga/groonga-12.0.
4
.tar.gz
url = https://packages.groonga.org/source/groonga/groonga-12.0.
7
.tar.gz
md5sum =
a7c6416301e5b5899ef517193c510bd0
md5sum =
5ef412a6941994e623cb50d76a8be261
groonga-plugin-dir = @@LOCATION@@/lib/groonga/plugins/
groonga-plugin-dir = @@LOCATION@@/lib/groonga/plugins/
# temporary patch to respect more tokens in natural language mode.
# temporary patch to respect more tokens in natural language mode.
patches =
patches =
...
...
component/mariadb/buildout.cfg
View file @
a61f948b
...
@@ -99,8 +99,8 @@ post-install =
...
@@ -99,8 +99,8 @@ post-install =
# as plugin-dir ( https://mariadb.com/kb/en/server-system-variables/#plugin_dir )
# as plugin-dir ( https://mariadb.com/kb/en/server-system-variables/#plugin_dir )
recipe = slapos.recipe.cmmi
recipe = slapos.recipe.cmmi
shared = true
shared = true
url = https://packages.groonga.org/source/mroonga/mroonga-12.0
4
.tar.gz
url = https://packages.groonga.org/source/mroonga/mroonga-12.0
7
.tar.gz
md5sum =
1d154e6cb4540f7be5791b5fb376a5d
e
md5sum =
bee7506e08deda9a607d85ed03b8b62
e
pre-configure =
pre-configure =
rm -rf fake_mariadb_source
rm -rf fake_mariadb_source
mkdir -p fake_mariadb_source
mkdir -p fake_mariadb_source
...
@@ -117,9 +117,8 @@ configure-options =
...
@@ -117,9 +117,8 @@ configure-options =
--disable-document
--disable-document
post-install =
post-install =
cp -rs ${mariadb:location}/lib/plugin/* ${:plugin-dir}
cp -rs ${mariadb:location}/lib/plugin/* ${:plugin-dir}
cat @@LOCATION@@/share/mroonga/install.sql @@LOCATION@@/share/mroonga/update.sql > ${:install-sql}
plugin-dir = @@LOCATION@@/lib/plugin
plugin-dir = @@LOCATION@@/lib/plugin
install-sql = @@LOCATION@@/share/mroonga/install
-and-update
.sql
install-sql = @@LOCATION@@/share/mroonga/install.sql
make-targets = plugindir=${:plugin-dir} install
make-targets = plugindir=${:plugin-dir} install
patch-options = -p1
patch-options = -p1
patches =
patches =
...
...
component/nxdtest/test-py
3
.cfg
→
component/nxdtest/test-py
2
.cfg
View file @
a61f948b
...
@@ -5,4 +5,4 @@ extends =
...
@@ -5,4 +5,4 @@ extends =
test.cfg
test.cfg
[python]
[python]
part = python
3
part = python
2.7
component/pygolang/test-py
3
.cfg
→
component/pygolang/test-py
2
.cfg
View file @
a61f948b
# SlapOS software release to test pygolang/py
3
on Nexedi testing infrastructure.
# SlapOS software release to test pygolang/py
2
on Nexedi testing infrastructure.
[buildout]
[buildout]
extends = test.cfg
extends = test.cfg
[python]
[python]
part = python
3
part = python
2.7
component/python3/buildout.cfg
View file @
a61f948b
...
@@ -9,7 +9,6 @@ extends =
...
@@ -9,7 +9,6 @@ extends =
../libpng/buildout.cfg
../libpng/buildout.cfg
../ncurses/buildout.cfg
../ncurses/buildout.cfg
../openssl/buildout.cfg
../openssl/buildout.cfg
../patch/buildout.cfg
../readline/buildout.cfg
../readline/buildout.cfg
../sqlite3/buildout.cfg
../sqlite3/buildout.cfg
../xz-utils/buildout.cfg
../xz-utils/buildout.cfg
...
@@ -28,9 +27,6 @@ package_version_suffix =
...
@@ -28,9 +27,6 @@ package_version_suffix =
executable = @@LOCATION@@/bin/${:_buildout_section_name_}
executable = @@LOCATION@@/bin/${:_buildout_section_name_}
patch-options = -p1
patches =
${:_profile_base_location_}/default_encoding.patch#4ad9664e622d5556b4c32b1d9cb587ff
url =
url =
https://www.python.org/ftp/python/${:package_version}/Python-${:package_version}${:package_version_suffix}.tar.xz
https://www.python.org/ftp/python/${:package_version}/Python-${:package_version}${:package_version_suffix}.tar.xz
configure-options =
configure-options =
...
@@ -48,45 +44,30 @@ pre-install = mkdir profile-opt
...
@@ -48,45 +44,30 @@ pre-install = mkdir profile-opt
# the entry "-Wl,-rpath=${file:location}/lib" below is needed by python-magic,
# the entry "-Wl,-rpath=${file:location}/lib" below is needed by python-magic,
# which would otherwise load the system libmagic.so with ctypes
# which would otherwise load the system libmagic.so with ctypes
environment =
environment =
PATH=${
patch:location}/bin:${
xz-utils:location}/bin:%(PATH)s
PATH=${xz-utils:location}/bin:%(PATH)s
CPPFLAGS=-I${zlib:location}/include -I${xz-utils:location}/include -I${readline:location}/include -I${libexpat:location}/include -I${libffi:location}/include -I${ncurses:location}/include -I${ncurses:location}/include -I${bzip2:location}/include -I${gdbm:location}/include -I${openssl:location}/include -I${sqlite3:location}/include -I${gettext:location}/include
CPPFLAGS=-I${zlib:location}/include -I${xz-utils:location}/include -I${readline:location}/include -I${libexpat:location}/include -I${libffi:location}/include -I${ncurses:location}/include -I${ncurses:location}/include -I${bzip2:location}/include -I${gdbm:location}/include -I${openssl:location}/include -I${sqlite3:location}/include -I${gettext:location}/include
LDFLAGS=-L${zlib:location}/lib -L${xz-utils:location}/lib -L${readline:location}/lib -L${libexpat:location}/lib -L${libffi:location}/lib -L${ncurses:location}/lib -L${bzip2:location}/lib -L${gdbm:location}/lib -L${openssl:location}/lib -L${sqlite3:location}/lib -Wl,-rpath=${zlib:location}/lib -Wl,-rpath=${xz-utils:location}/lib -Wl,-rpath=${readline:location}/lib -Wl,-rpath=${libexpat:location}/lib -Wl,-rpath=${libffi:location}/lib -Wl,-rpath=${ncurses:location}/lib -Wl,-rpath=${bzip2:location}/lib -Wl,-rpath=${gdbm:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=${sqlite3:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib -Wl,-rpath=${file:location}/lib
LDFLAGS=-L${zlib:location}/lib -L${xz-utils:location}/lib -L${readline:location}/lib -L${libexpat:location}/lib -L${libffi:location}/lib -L${ncurses:location}/lib -L${bzip2:location}/lib -L${gdbm:location}/lib -L${openssl:location}/lib -L${sqlite3:location}/lib -Wl,-rpath=${zlib:location}/lib -Wl,-rpath=${xz-utils:location}/lib -Wl,-rpath=${readline:location}/lib -Wl,-rpath=${libexpat:location}/lib -Wl,-rpath=${libffi:location}/lib -Wl,-rpath=${ncurses:location}/lib -Wl,-rpath=${bzip2:location}/lib -Wl,-rpath=${gdbm:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=${sqlite3:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib -Wl,-rpath=${file:location}/lib
[python3.6]
<= python3-common
version = 3.6
package_version = 3.6.10
md5sum = 986078f11b39074be22a199e56491d98
[python3.7]
[python3.7]
<= python3-common
<= python3-common
version = 3.7
version = 3.7
package_version = 3.7.9
package_version = 3.7.13
md5sum = 389d3ed26b4d97c741d9e5423da1f43b
md5sum = 10822726f75fd7efe05a94fbd6ac2258
patch-options =
patches =
[python3.8]
[python3.8]
<= python3-common
<= python3-common
version = 3.8
version = 3.8
package_version = 3.8.9
package_version = 3.8.13
md5sum = 51b5bbf2ab447e66d15af4883db1c133
md5sum = c4b7100dcaace9d33ab1fda9a3a038d6
patch-options =
patches =
[python3.9]
[python3.9]
<= python3-common
<= python3-common
version = 3.9
version = 3.9
package_version = 3.9.13
package_version = 3.9.13
md5sum = 5e2411217b0060828d5f923eb422a3b8
md5sum = 5e2411217b0060828d5f923eb422a3b8
patch-options =
patches =
[python3.10]
[python3.10]
<= python3-common
<= python3-common
version = 3.10
version = 3.10
package_version = 3.10.5
package_version = 3.10.6
md5sum = f05727cb3489aa93cd57eb561c16747b
md5sum = afc7e14f7118d10d1ba95ae8e2134bf0
patch-options =
patches =
component/python3/default_encoding.patch
deleted
100644 → 0
View file @
3a50453e
--- Python-3.5.3/Programs/python.c.orig 2017-01-17 08:57:53.000000000 +0100
+++ Python-3.5.3/Programs/python.c 2017-06-08 19:30:42.927077437 +0200
@@ -24,6 +24,9 @@
int i, res;
char *oldloc;
+ if (!getenv("LC_CTYPE") && !getenv("LC_ALL"))
+ setenv("LANG", "C.UTF-8", 0);
+
argv_copy = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
argv_copy2 = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
if (!argv_copy || !argv_copy2) {
component/slapos/obs.cfg
View file @
a61f948b
...
@@ -31,6 +31,7 @@ init +=
...
@@ -31,6 +31,7 @@ init +=
assert buildout['directory'] == buildout['destdir'] + buildout['rootdir'], (
assert buildout['directory'] == buildout['destdir'] + buildout['rootdir'], (
"Buildout MUST BE launched in destdir/rootdir (currently launched in %s but should be launched in %s)" %
"Buildout MUST BE launched in destdir/rootdir (currently launched in %s but should be launched in %s)" %
(buildout['directory'], buildout['destdir'] + buildout['rootdir']))
(buildout['directory'], buildout['destdir'] + buildout['rootdir']))
part = python3.7
[python3-common]
[python3-common]
configure-options +=
configure-options +=
...
@@ -85,8 +86,8 @@ pre-configure =
...
@@ -85,8 +86,8 @@ pre-configure =
sed -i 's#/opt/slapos/parts/dbus/lib/libdbus-1.la#${dbus:location}/lib/libdbus-1.la#' ${dbus-glib:location}/lib/libdbus-glib-1.la
sed -i 's#/opt/slapos/parts/dbus/lib/libdbus-1.la#${dbus:location}/lib/libdbus-1.la#' ${dbus-glib:location}/lib/libdbus-glib-1.la
environment +=
environment +=
LD_LIBRARY_PATH=${dbus:location}/lib
LD_LIBRARY_PATH=${dbus:location}/lib
PYTHON_INCLUDES=-I${python:location}/include/python${python:version}
PYTHON_INCLUDES=-I${python:location}/include/python${python:version}
m
PYTHON_LIBS=-L${python:location}/lib -lpython${python:version} -lpthread -ldl -lutil -lm
PYTHON_LIBS=-L${python:location}/lib -lpython${python:version}
m
-lpthread -ldl -lutil -lm
post-install =
post-install =
sed -i 's#${dbus:location}/lib/libdbus-1.la#/opt/slapos/parts/dbus/lib/libdbus-1.la#' ${dbus-glib:location}/lib/libdbus-glib-1.la
sed -i 's#${dbus:location}/lib/libdbus-1.la#/opt/slapos/parts/dbus/lib/libdbus-1.la#' ${dbus-glib:location}/lib/libdbus-glib-1.la
...
...
software/caddy-frontend/test/test.py
View file @
a61f948b
...
@@ -302,7 +302,8 @@ class TestDataMixin(object):
...
@@ -302,7 +302,8 @@ class TestDataMixin(object):
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'test_data'
,
filename
)
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'test_data'
,
filename
)
try
:
try
:
test_data
=
open
(
test_data_file
).
read
().
strip
()
with
open
(
test_data_file
)
as
fh
:
test_data
=
fh
.
read
().
strip
()
except
IOError
:
except
IOError
:
test_data
=
''
test_data
=
''
...
@@ -498,31 +499,32 @@ def fakeHTTPSResult(domain, path, port=HTTPS_PORT,
...
@@ -498,31 +499,32 @@ def fakeHTTPSResult(domain, path, port=HTTPS_PORT,
headers
.
setdefault
(
'Via'
,
'http/1.1 clientvia'
)
headers
.
setdefault
(
'Via'
,
'http/1.1 clientvia'
)
session
=
requests
.
Session
()
session
=
requests
.
Session
()
if
source_ip
is
not
None
:
with
session
:
new_source
=
source
.
SourceAddressAdapter
(
source_ip
)
if
source_ip
is
not
None
:
session
.
mount
(
'http://'
,
new_source
)
new_source
=
source
.
SourceAddressAdapter
(
source_ip
)
session
.
mount
(
'https://'
,
new_source
)
session
.
mount
(
'http://'
,
new_source
)
socket_getaddrinfo
=
socket
.
getaddrinfo
session
.
mount
(
'https://'
,
new_source
)
try
:
socket_getaddrinfo
=
socket
.
getaddrinfo
add_custom_dns
(
domain
,
port
,
TEST_IP
)
try
:
socket
.
getaddrinfo
=
new_getaddrinfo
add_custom_dns
(
domain
,
port
,
TEST_IP
)
# Use a prepared request, to disable path normalization.
socket
.
getaddrinfo
=
new_getaddrinfo
# We need this because some test checks requests with paths like
# Use a prepared request, to disable path normalization.
# /test-path/deep/.././deeper but we don't want the client to send
# We need this because some test checks requests with paths like
# /test-path/deeper
# /test-path/deep/.././deeper but we don't want the client to send
# See also https://github.com/psf/requests/issues/5289
# /test-path/deeper
url
=
'https://%s:%s/%s'
%
(
domain
,
port
,
path
)
# See also https://github.com/psf/requests/issues/5289
req
=
requests
.
Request
(
url
=
'https://%s:%s/%s'
%
(
domain
,
port
,
path
)
method
=
'GET'
,
req
=
requests
.
Request
(
url
=
url
,
method
=
'GET'
,
headers
=
headers
,
url
=
url
,
cookies
=
cookies
,
headers
=
headers
,
)
cookies
=
cookies
,
prepped
=
req
.
prepare
()
)
prepped
.
url
=
url
prepped
=
req
.
prepare
()
return
session
.
send
(
prepped
,
verify
=
False
,
allow_redirects
=
False
)
prepped
.
url
=
url
finally
:
return
session
.
send
(
prepped
,
verify
=
False
,
allow_redirects
=
False
)
socket
.
getaddrinfo
=
socket_getaddrinfo
finally
:
socket
.
getaddrinfo
=
socket_getaddrinfo
def
fakeHTTPResult
(
domain
,
path
,
port
=
HTTP_PORT
,
def
fakeHTTPResult
(
domain
,
path
,
port
=
HTTP_PORT
,
...
@@ -540,17 +542,18 @@ def fakeHTTPResult(domain, path, port=HTTP_PORT,
...
@@ -540,17 +542,18 @@ def fakeHTTPResult(domain, path, port=HTTP_PORT,
headers
.
setdefault
(
'Via'
,
'http/1.1 clientvia'
)
headers
.
setdefault
(
'Via'
,
'http/1.1 clientvia'
)
headers
[
'Host'
]
=
'%s:%s'
%
(
domain
,
port
)
headers
[
'Host'
]
=
'%s:%s'
%
(
domain
,
port
)
session
=
requests
.
Session
()
session
=
requests
.
Session
()
if
source_ip
is
not
None
:
with
session
:
new_source
=
source
.
SourceAddressAdapter
(
source_ip
)
if
source_ip
is
not
None
:
session
.
mount
(
'http://'
,
new_source
)
new_source
=
source
.
SourceAddressAdapter
(
source_ip
)
session
.
mount
(
'https://'
,
new_source
)
session
.
mount
(
'http://'
,
new_source
)
session
.
mount
(
'https://'
,
new_source
)
# Use a prepared request, to disable path normalization.
# Use a prepared request, to disable path normalization.
url
=
'http://%s:%s/%s'
%
(
TEST_IP
,
port
,
path
)
url
=
'http://%s:%s/%s'
%
(
TEST_IP
,
port
,
path
)
req
=
requests
.
Request
(
method
=
'GET'
,
url
=
url
,
headers
=
headers
)
req
=
requests
.
Request
(
method
=
'GET'
,
url
=
url
,
headers
=
headers
)
prepped
=
req
.
prepare
()
prepped
=
req
.
prepare
()
prepped
.
url
=
url
prepped
.
url
=
url
return
session
.
send
(
prepped
,
allow_redirects
=
False
)
return
session
.
send
(
prepped
,
allow_redirects
=
False
)
class
TestHandler
(
BaseHTTPRequestHandler
):
class
TestHandler
(
BaseHTTPRequestHandler
):
...
@@ -742,12 +745,15 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -742,12 +745,15 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
server_process
=
multiprocessing
.
Process
(
server_process
=
multiprocessing
.
Process
(
target
=
server
.
serve_forever
,
name
=
'HTTPServer'
)
target
=
server
.
serve_forever
,
name
=
'HTTPServer'
)
server_process
.
start
()
server_process
.
start
()
# from now on, socket is used by server subprocess, we can close it
server
.
socket
.
close
()
cls
.
logger
.
debug
(
'Started process %s'
%
(
server_process
,))
cls
.
logger
.
debug
(
'Started process %s'
%
(
server_process
,))
cls
.
backend_https_url
=
'https://%s:%s/'
%
server_https
.
server_address
cls
.
backend_https_url
=
'https://%s:%s/'
%
server_https
.
server_address
server_https_process
=
multiprocessing
.
Process
(
server_https_process
=
multiprocessing
.
Process
(
target
=
server_https
.
serve_forever
,
name
=
'HTTPSServer'
)
target
=
server_https
.
serve_forever
,
name
=
'HTTPSServer'
)
server_https_process
.
start
()
server_https_process
.
start
()
server_https
.
socket
.
close
()
cls
.
logger
.
debug
(
'Started process %s'
%
(
server_https_process
,))
cls
.
logger
.
debug
(
'Started process %s'
%
(
server_https_process
,))
class
NetlocHandler
(
TestHandler
):
class
NetlocHandler
(
TestHandler
):
...
@@ -759,6 +765,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -759,6 +765,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
netloc_a_http_process
=
multiprocessing
.
Process
(
netloc_a_http_process
=
multiprocessing
.
Process
(
target
=
netloc_a_http
.
serve_forever
,
name
=
'netloc-a-http'
)
target
=
netloc_a_http
.
serve_forever
,
name
=
'netloc-a-http'
)
netloc_a_http_process
.
start
()
netloc_a_http_process
.
start
()
netloc_a_http
.
socket
.
close
()
netloc_b_http
=
ThreadedHTTPServer
(
netloc_b_http
=
ThreadedHTTPServer
(
(
cls
.
_ipv4_address
,
cls
.
_server_netloc_b_http_port
),
(
cls
.
_ipv4_address
,
cls
.
_server_netloc_b_http_port
),
...
@@ -766,6 +773,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -766,6 +773,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
netloc_b_http_process
=
multiprocessing
.
Process
(
netloc_b_http_process
=
multiprocessing
.
Process
(
target
=
netloc_b_http
.
serve_forever
,
name
=
'netloc-b-http'
)
target
=
netloc_b_http
.
serve_forever
,
name
=
'netloc-b-http'
)
netloc_b_http_process
.
start
()
netloc_b_http_process
.
start
()
netloc_b_http
.
socket
.
close
()
cls
.
server_process_list
=
[
cls
.
server_process_list
=
[
server_process
,
server_process
,
...
@@ -821,6 +829,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -821,6 +829,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
self
.
server_https_auth_process
=
multiprocessing
.
Process
(
self
.
server_https_auth_process
=
multiprocessing
.
Process
(
target
=
server_https_auth
.
serve_forever
,
name
=
'HTTPSServerAuth'
)
target
=
server_https_auth
.
serve_forever
,
name
=
'HTTPSServerAuth'
)
self
.
server_https_auth_process
.
start
()
self
.
server_https_auth_process
.
start
()
server_https_auth
.
socket
.
close
()
self
.
logger
.
debug
(
'Started process %s'
%
(
self
.
server_https_auth_process
,))
self
.
logger
.
debug
(
'Started process %s'
%
(
self
.
server_https_auth_process
,))
def
stopAuthenticatedServerProcess
(
self
):
def
stopAuthenticatedServerProcess
(
self
):
...
@@ -840,8 +849,8 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -840,8 +849,8 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
assert
ca_certificate
.
status_code
==
http
.
client
.
OK
assert
ca_certificate
.
status_code
==
http
.
client
.
OK
cls
.
kedifa_caucase_ca_certificate_file
=
os
.
path
.
join
(
cls
.
kedifa_caucase_ca_certificate_file
=
os
.
path
.
join
(
cls
.
working_directory
,
'kedifa-caucase.ca.crt.pem'
)
cls
.
working_directory
,
'kedifa-caucase.ca.crt.pem'
)
open
(
cls
.
kedifa_caucase_ca_certificate_file
,
'w'
).
write
(
with
open
(
cls
.
kedifa_caucase_ca_certificate_file
,
'w'
)
as
fh
:
ca_certificate
.
text
)
fh
.
write
(
ca_certificate
.
text
)
@
classmethod
@
classmethod
def
_fetchBackendClientCaCertificateFile
(
cls
,
parameter_dict
):
def
_fetchBackendClientCaCertificateFile
(
cls
,
parameter_dict
):
...
@@ -850,8 +859,8 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
...
@@ -850,8 +859,8 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
assert
ca_certificate
.
status_code
==
http
.
client
.
OK
assert
ca_certificate
.
status_code
==
http
.
client
.
OK
cls
.
backend_client_caucase_ca_certificate_file
=
os
.
path
.
join
(
cls
.
backend_client_caucase_ca_certificate_file
=
os
.
path
.
join
(
cls
.
working_directory
,
'backend-client-caucase.ca.crt.pem'
)
cls
.
working_directory
,
'backend-client-caucase.ca.crt.pem'
)
open
(
cls
.
backend_client_caucase_ca_certificate_file
,
'w'
).
write
(
with
open
(
cls
.
backend_client_caucase_ca_certificate_file
,
'w'
)
as
fh
:
ca_certificate
.
text
)
fh
.
write
(
ca_certificate
.
text
)
@
classmethod
@
classmethod
def
setUpMaster
(
cls
):
def
setUpMaster
(
cls
):
...
@@ -1391,9 +1400,10 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
...
@@ -1391,9 +1400,10 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
self
.
instance_path
,
'*'
,
'var'
,
'log'
,
'httpd'
,
log_name
self
.
instance_path
,
'*'
,
'var'
,
'log'
,
'httpd'
,
log_name
))[
0
]
))[
0
]
self
.
assertRegex
(
with
open
(
log_file
)
as
fh
:
open
(
log_file
,
'r'
).
readlines
()[
-
1
],
self
.
assertRegex
(
log_regexp
)
fh
.
readlines
()[
-
1
],
log_regexp
)
class
TestMasterRequestDomain
(
HttpFrontendTestCase
,
TestDataMixin
):
class
TestMasterRequestDomain
(
HttpFrontendTestCase
,
TestDataMixin
):
...
@@ -2050,10 +2060,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -2050,10 +2060,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
# check that monitor cors domains are correctly setup by file presence, as
# check that monitor cors domains are correctly setup by file presence, as
# we trust monitor stack being tested in proper place and it is too hard
# we trust monitor stack being tested in proper place and it is too hard
# to have working monitor with local proxy
# to have working monitor with local proxy
self
.
assertTestData
(
with
open
(
os
.
path
.
join
(
open
(
partition_path
,
'etc'
,
'httpd-cors.cfg'
))
as
fh
:
os
.
path
.
join
(
self
.
assertTestData
(
fh
.
read
().
strip
())
partition_path
,
'etc'
,
'httpd-cors.cfg'
),
'r'
).
read
().
strip
())
def
test_node_information_json
(
self
):
def
test_node_information_json
(
self
):
node_information_file_path
=
glob
.
glob
(
os
.
path
.
join
(
node_information_file_path
=
glob
.
glob
(
os
.
path
.
join
(
...
@@ -2100,10 +2109,8 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -2100,10 +2109,8 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
def
test_slave_partition_state
(
self
):
def
test_slave_partition_state
(
self
):
partition_path
=
self
.
getSlavePartitionPath
()
partition_path
=
self
.
getSlavePartitionPath
()
self
.
assertTrue
(
with
open
(
os
.
path
.
join
(
partition_path
,
'bin'
,
'caddy-wrapper'
))
as
fh
:
'-grace 2s'
in
self
.
assertIn
(
'-grace 2s'
,
fh
.
read
())
open
(
os
.
path
.
join
(
partition_path
,
'bin'
,
'caddy-wrapper'
),
'r'
).
read
()
)
def
test_monitor_conf
(
self
):
def
test_monitor_conf
(
self
):
monitor_conf_list
=
glob
.
glob
(
monitor_conf_list
=
glob
.
glob
(
...
@@ -2112,8 +2119,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -2112,8 +2119,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
))
))
self
.
assertEqual
(
3
,
len
(
monitor_conf_list
))
self
.
assertEqual
(
3
,
len
(
monitor_conf_list
))
expected
=
[(
False
,
q
)
for
q
in
monitor_conf_list
]
expected
=
[(
False
,
q
)
for
q
in
monitor_conf_list
]
got
=
[(
'!py!'
in
open
(
q
).
read
(),
q
)
for
q
in
monitor_conf_list
]
got
=
[]
# check that no monitor.conf in generated configuratio has magic !py!
for
q
in
monitor_conf_list
:
with
open
(
q
)
as
fh
:
got
.
append
((
'!py!'
in
fh
.
read
(),
q
))
# check that no monitor.conf in generated configuration has magic !py!
self
.
assertEqual
(
self
.
assertEqual
(
expected
,
expected
,
got
got
...
@@ -2173,14 +2183,15 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -2173,14 +2183,15 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
def
test_server_polluted_keys_removed
(
self
):
def
test_server_polluted_keys_removed
(
self
):
buildout_file
=
os
.
path
.
join
(
buildout_file
=
os
.
path
.
join
(
self
.
getMasterPartitionPath
(),
'instance-caddy-replicate.cfg'
)
self
.
getMasterPartitionPath
(),
'instance-caddy-replicate.cfg'
)
for
line
in
[
with
open
(
buildout_file
)
as
fh
:
q
for
q
in
open
(
buildout_file
).
readlines
()
for
line
in
[
if
q
.
startswith
(
'config-slave-list'
)
or
q
.
startswith
(
q
for
q
in
fh
.
readlines
()
'config-extra_slave_instance_list'
)]:
if
q
.
startswith
(
'config-slave-list'
)
or
q
.
startswith
(
self
.
assertFalse
(
'slave_title'
in
line
)
'config-extra_slave_instance_list'
)]:
self
.
assertFalse
(
'slap_software_type'
in
line
)
self
.
assertFalse
(
'slave_title'
in
line
)
self
.
assertFalse
(
'connection-parameter-hash'
in
line
)
self
.
assertFalse
(
'slap_software_type'
in
line
)
self
.
assertFalse
(
'timestamp'
in
line
)
self
.
assertFalse
(
'connection-parameter-hash'
in
line
)
self
.
assertFalse
(
'timestamp'
in
line
)
def
assertBackendHeaders
(
def
assertBackendHeaders
(
self
,
backend_header_dict
,
domain
,
source_ip
=
SOURCE_IP
,
port
=
HTTPS_PORT
,
self
,
backend_header_dict
,
domain
,
source_ip
=
SOURCE_IP
,
port
=
HTTPS_PORT
,
...
@@ -3680,10 +3691,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -3680,10 +3691,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
os
.
path
.
join
(
os
.
path
.
join
(
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
'_ciphers.conf'
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
'_ciphers.conf'
))[
0
]
))[
0
]
self
.
assertTrue
(
with
open
(
configuration_file
)
as
fh
:
'ciphers RSA-3DES-EDE-CBC-SHA RSA-AES128-CBC-SHA'
self
.
assertIn
(
in
open
(
configuration_file
).
read
()
'ciphers RSA-3DES-EDE-CBC-SHA RSA-AES128-CBC-SHA'
,
)
fh
.
read
()
)
def
test_enable_cache_custom_domain
(
self
):
def
test_enable_cache_custom_domain
(
self
):
parameter_dict
=
self
.
assertSlaveBase
(
parameter_dict
=
self
.
assertSlaveBase
(
...
@@ -5867,10 +5878,10 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -5867,10 +5878,10 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin):
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
'_default_ciphers.conf'
'_default_ciphers.conf'
))[
0
]
))[
0
]
self
.
assertTrue
(
with
open
(
configuration_file
)
as
fh
:
'ciphers ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384'
self
.
assertIn
(
in
open
(
configuration_file
).
read
()
'ciphers ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384'
,
)
fh
.
read
()
)
def
test_own_ciphers
(
self
):
def
test_own_ciphers
(
self
):
parameter_dict
=
self
.
assertSlaveBase
(
'own_ciphers'
)
parameter_dict
=
self
.
assertSlaveBase
(
'own_ciphers'
)
...
@@ -5893,10 +5904,10 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin):
...
@@ -5893,10 +5904,10 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin):
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
self
.
instance_path
,
'*'
,
'etc'
,
'caddy-slave-conf.d'
,
'_own_ciphers.conf'
'_own_ciphers.conf'
))[
0
]
))[
0
]
self
.
assertTrue
(
with
open
(
configuration_file
)
as
fh
:
'ciphers ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256'
self
.
assertIn
(
in
open
(
configuration_file
).
read
()
'ciphers ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256'
,
)
fh
.
read
()
)
class
TestSlaveRejectReportUnsafeDamaged
(
SlaveHttpFrontendTestCase
):
class
TestSlaveRejectReportUnsafeDamaged
(
SlaveHttpFrontendTestCase
):
...
...
software/html5as/buildout.hash.cfg
View file @
a61f948b
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
[template-cfg]
[template-cfg]
filename = instance.cfg.in
filename = instance.cfg.in
md5sum =
ef264514b64a4b2c77c9965c587c6d34
md5sum =
23c15a579b66cef866b30a2f53b1b737
[instance_html5as]
[instance_html5as]
_update_hash_filename_ = instance_html5as.cfg.in
_update_hash_filename_ = instance_html5as.cfg.in
...
@@ -45,4 +45,4 @@ md5sum = 1c0ee16966e1fcdb3fd11c09f12ee2b2
...
@@ -45,4 +45,4 @@ md5sum = 1c0ee16966e1fcdb3fd11c09f12ee2b2
[template_instance_replicate]
[template_instance_replicate]
_update_hash_filename_ = instance_replicate.cfg.in
_update_hash_filename_ = instance_replicate.cfg.in
md5sum =
7ff7e11d05145115f53564ec1af205ef
md5sum =
d7071867625070c27dbd6456c761f9f0
software/html5as/instance.cfg.in
View file @
a61f948b
...
@@ -61,7 +61,7 @@ default = instance-html5as:output
...
@@ -61,7 +61,7 @@ default = instance-html5as:output
replicate = instance-replicate:output
replicate = instance-replicate:output
[slap-configuration]
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
recipe = slapos.cookbook:slapconfiguration
.serialised
computer = ${slap-connection:computer-id}
computer = ${slap-connection:computer-id}
partition = ${slap-connection:partition-id}
partition = ${slap-connection:partition-id}
url = ${slap-connection:server-url}
url = ${slap-connection:server-url}
...
...
software/html5as/instance_replicate.cfg.in
View file @
a61f948b
...
@@ -23,7 +23,7 @@ offline = true
...
@@ -23,7 +23,7 @@ offline = true
# Macro section sharing request parameters
# Macro section sharing request parameters
[instance-request-base]
[instance-request-base]
<= slap-connection
<= slap-connection
recipe = slapos.cookbook:request
recipe = slapos.cookbook:request
.serialised
# It is the same software as the current one
# It is the same software as the current one
software-url = ${slap-connection:software-release-url}
software-url = ${slap-connection:software-release-url}
# We want the default behaviour
# We want the default behaviour
...
@@ -51,7 +51,7 @@ sla-computer_guid = {{ parameter_dict["sla-%s-computer-guid" % i] }}
...
@@ -51,7 +51,7 @@ sla-computer_guid = {{ parameter_dict["sla-%s-computer-guid" % i] }}
# Publish information to connect to the two instances
# Publish information to connect to the two instances
[publish-connection-information]
[publish-connection-information]
recipe = slapos.cookbook:publish
recipe = slapos.cookbook:publish
.serialised
{% for i in range(1, replicate_quantity + 1) %}
{% for i in range(1, replicate_quantity + 1) %}
instance-{{ i }}-server_url = ${instance-{{ i }}:connection-server_url}
instance-{{ i }}-server_url = ${instance-{{ i }}:connection-server_url}
instance-{{ i }}-server-cdn-url = ${instance-{{ i }}:connection-server-cdn-url}
instance-{{ i }}-server-cdn-url = ${instance-{{ i }}:connection-server-cdn-url}
...
...
software/html5as/test/test.py
View file @
a61f948b
...
@@ -25,12 +25,14 @@
...
@@ -25,12 +25,14 @@
#
#
##############################################################################
##############################################################################
import
json
import
os
import
os
import
requests
import
requests
from
urlparse
import
urlparse
from
url
lib.
parse
import
urlparse
from
slapos.testing.testcase
import
makeModuleSetUpAndTestCaseClass
from
slapos.testing.testcase
import
makeModuleSetUpAndTestCaseClass
setUpModule
,
SlapOSInstanceTestCase
=
makeModuleSetUpAndTestCaseClass
(
setUpModule
,
SlapOSInstanceTestCase
=
makeModuleSetUpAndTestCaseClass
(
os
.
path
.
abspath
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'software.cfg'
)))
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'software.cfg'
)))
...
@@ -43,8 +45,8 @@ class HTML5ASTestCase(SlapOSInstanceTestCase):
...
@@ -43,8 +45,8 @@ class HTML5ASTestCase(SlapOSInstanceTestCase):
* Install the software release.
* Install the software release.
* Checks it compile without issue.
* Checks it compile without issue.
* Deploy the instance
* Deploy the instance
* Check deploy
e
ment works and promise pass
* Check deployment works and promise pass
For testing the deploy
e
ment a different testing class will need to be set up
For testing the deployment a different testing class will need to be set up
per each variation of parameters the instance needs to be given.
per each variation of parameters the instance needs to be given.
"""
"""
...
@@ -63,11 +65,12 @@ class TestEmptyDeploy(HTML5ASTestCase):
...
@@ -63,11 +65,12 @@ class TestEmptyDeploy(HTML5ASTestCase):
"""
"""
def
test_deploy_with_no_paramater
(
self
):
def
test_deploy_with_no_paramater
(
self
):
url
=
self
.
requestDefaultInstance
().
getConnectionParameterDict
(
)[
'server_url'
]
url
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
]
)[
'server_url'
]
response
=
self
.
checkUrlAndGetResponse
(
url
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
result
=
response
.
text
result
=
response
.
text
self
.
assertFalse
(
"<h1>"
in
result
)
self
.
assertNotIn
(
"<h1>"
,
result
)
self
.
assertTrue
(
"<p>Hello World</p>"
in
result
)
self
.
assertIn
(
"<p>Hello World</p>"
,
result
)
class
TestDeployWithTitle
(
HTML5ASTestCase
):
class
TestDeployWithTitle
(
HTML5ASTestCase
):
"""
"""
...
@@ -77,17 +80,21 @@ class TestDeployWithTitle(HTML5ASTestCase):
...
@@ -77,17 +80,21 @@ class TestDeployWithTitle(HTML5ASTestCase):
@
classmethod
@
classmethod
def
getInstanceParameterDict
(
cls
):
def
getInstanceParameterDict
(
cls
):
return
{
return
{
'title'
:
'Test1'
,
'_'
:
json
.
dumps
(
{
'title'
:
'Test1'
,
}
)
}
}
def
test_deploy_with_title_parameter
(
self
):
def
test_deploy_with_title_parameter
(
self
):
connection_parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
(
)
connection_parameter_dict
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
]
)
self
.
assertEqual
(
connection_parameter_dict
[
"title"
],
"Title Test1!"
)
self
.
assertEqual
(
connection_parameter_dict
[
"title"
],
"Title Test1!"
)
url
=
connection_parameter_dict
[
'server_url'
]
url
=
connection_parameter_dict
[
'server_url'
]
response
=
self
.
checkUrlAndGetResponse
(
url
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
result
=
response
.
text
result
=
response
.
text
self
.
assert
True
(
"<h1>Test1</h1>"
in
result
)
self
.
assert
In
(
"<h1>Test1</h1>"
,
result
)
self
.
assert
True
(
"<p>Hello World</p>"
in
result
)
self
.
assert
In
(
"<p>Hello World</p>"
,
result
)
class
TestGracefulWithPortChange
(
HTML5ASTestCase
):
class
TestGracefulWithPortChange
(
HTML5ASTestCase
):
"""
"""
...
@@ -95,7 +102,9 @@ class TestGracefulWithPortChange(HTML5ASTestCase):
...
@@ -95,7 +102,9 @@ class TestGracefulWithPortChange(HTML5ASTestCase):
"""
"""
instance_parameter_dict
=
{
instance_parameter_dict
=
{
'port'
:
8087
'_'
:
json
.
dumps
({
'port'
:
8087
})
}
}
@
classmethod
@
classmethod
...
@@ -107,23 +116,23 @@ class TestGracefulWithPortChange(HTML5ASTestCase):
...
@@ -107,23 +116,23 @@ class TestGracefulWithPortChange(HTML5ASTestCase):
This test test port change and its application with graceful restart
This test test port change and its application with graceful restart
"""
"""
# Check initial connection parameter match expected port
# Check initial connection parameter match expected port
url
=
self
.
computer_partition
.
getConnectionParameterDict
(
)[
'server_url'
]
url
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
]
)[
'server_url'
]
self
.
assertEqual
(
urlparse
(
url
).
port
,
8087
)
self
.
assertEqual
(
urlparse
(
url
).
port
,
8087
)
# Check port is listening even thought it is duplicated with the promise:
# Check port is listening even thought it is duplicated with the promise:
# "port-listening-promise"
# "port-listening-promise"
self
.
checkUrlAndGetResponse
(
url
)
self
.
checkUrlAndGetResponse
(
url
)
# Update port parameter
# Update port parameter
self
.
instance_parameter_dict
.
update
({
self
.
instance_parameter_dict
[
'_'
]
=
json
.
dumps
({
'port'
:
8086
,
'port'
:
8086
})
})
# Request instance with the new port parameter
# Request instance with the new port parameter
self
.
requestDefaultInstance
()
self
.
requestDefaultInstance
()
# Reprocess the instance to apply new port and run promises
# Reprocess the instance to apply new port and run promises
self
.
slap
.
waitForInstance
(
self
.
instance_max_retry
)
self
.
slap
.
waitForInstance
(
self
.
instance_max_retry
)
# Rerequest instance to get update connection parameter
# Re
-
request instance to get update connection parameter
url
=
self
.
requestDefaultInstance
().
getConnectionParameterDict
(
)[
'server_url'
]
url
=
json
.
loads
(
self
.
requestDefaultInstance
().
getConnectionParameterDict
()[
'_'
]
)[
'server_url'
]
# Make sure the new port is the one being used
# Make sure the new port is the one being used
self
.
assertEqual
(
urlparse
(
url
).
port
,
8086
)
self
.
assertEqual
(
urlparse
(
url
).
port
,
8086
)
...
@@ -138,8 +147,10 @@ class TestReplicateHTML5AS(HTML5ASTestCase):
...
@@ -138,8 +147,10 @@ class TestReplicateHTML5AS(HTML5ASTestCase):
"""
"""
instance_parameter_dict
=
{
instance_parameter_dict
=
{
"port-1"
:
8088
,
'_'
:
json
.
dumps
({
"title-1"
:
"Title 1"
,
"port-1"
:
8088
,
"title-1"
:
"Title 1"
,
})
}
}
@
classmethod
@
classmethod
...
@@ -151,32 +162,37 @@ class TestReplicateHTML5AS(HTML5ASTestCase):
...
@@ -151,32 +162,37 @@ class TestReplicateHTML5AS(HTML5ASTestCase):
return
cls
.
instance_parameter_dict
return
cls
.
instance_parameter_dict
def
test_replicate_instance
(
self
):
def
test_replicate_instance
(
self
):
# Check First instance is deployed with proper parameters
# Check First instance is deployed with proper parameters
connection_parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
(
)
connection_parameter_dict
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
]
)
url
=
connection_parameter_dict
[
'instance-1-server_url'
]
url
=
connection_parameter_dict
[
'instance-1-server_url'
]
self
.
assertEqual
(
urlparse
(
url
).
port
,
8088
)
self
.
assertEqual
(
urlparse
(
url
).
port
,
8088
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
result
=
response
.
text
result
=
response
.
text
self
.
assert
True
(
"<h1>Title 1</h1>"
in
result
)
self
.
assert
In
(
"<h1>Title 1</h1>"
,
result
)
# Check only one instance is deployed by default
# Check only one instance is deployed by default
self
.
assert
True
(
"instance-2-server_url"
not
in
connection_parameter_dict
)
self
.
assert
NotIn
(
"instance-2-server_url"
,
connection_parameter_dict
)
# Update replicate quantity parameter
# Update replicate quantity parameter
self
.
instance_parameter_dict
.
update
({
self
.
instance_parameter_dict
[
'_'
]
=
json
.
dumps
(
'replicate-quantity'
:
2
,
dict
(
'port-2'
:
8089
,
json
.
loads
(
self
.
instance_parameter_dict
[
'_'
]),
'sla-2-computer_guid'
:
self
.
slap
.
_computer_id
,
**
{
"title-2"
:
"Title 314"
,
'replicate-quantity'
:
2
,
})
'port-2'
:
8089
,
'sla-2-computer_guid'
:
self
.
slap
.
_computer_id
,
"title-2"
:
"Title 314"
,
}
)
)
# Request instance with the one more replicate
# Request instance with the one more replicate
self
.
requestDefaultInstance
()
self
.
requestDefaultInstance
()
self
.
slap
.
waitForInstance
(
self
.
instance_max_retry
)
self
.
slap
.
waitForInstance
(
self
.
instance_max_retry
)
# Check the second replicate
# Check the second replicate
connection_parameter_dict
=
self
.
requestDefaultInstance
().
getConnectionParameterDict
(
)
connection_parameter_dict
=
json
.
loads
(
self
.
requestDefaultInstance
().
getConnectionParameterDict
()[
'_'
]
)
url
=
connection_parameter_dict
[
'instance-2-server_url'
]
url
=
connection_parameter_dict
[
'instance-2-server_url'
]
self
.
assertEqual
(
urlparse
(
url
).
port
,
8089
)
self
.
assertEqual
(
urlparse
(
url
).
port
,
8089
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
response
=
self
.
checkUrlAndGetResponse
(
url
)
result
=
response
.
text
result
=
response
.
text
self
.
assert
True
(
"<h1>Title 314</h1>"
in
result
)
self
.
assert
In
(
"<h1>Title 314</h1>"
,
result
)
software/htmlvalidatorserver/software.cfg
View file @
a61f948b
...
@@ -45,7 +45,5 @@ url = ${:_profile_base_location_}/${:filename}
...
@@ -45,7 +45,5 @@ url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
output = ${buildout:directory}/template.cfg
[versions]
[versions]
# 1.3.4nxd2 is invalid version string, thus pached version string is not '1.3.4nxd2+SlapOSPatched001'
# but '1.3.4nxd2-SlapOSPatched001'.
gunicorn = 19.1.1
gunicorn = 19.1.1
inotifyx = 0.2.2
inotifyx = 0.2.2
software/htmlvalidatorserver/test/test.py
View file @
a61f948b
...
@@ -41,7 +41,6 @@ class TestHtmlValidatorServer(InstanceTestCase):
...
@@ -41,7 +41,6 @@ class TestHtmlValidatorServer(InstanceTestCase):
def
test
(
self
):
def
test
(
self
):
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
# Check that there is a RSS feed
self
.
assertTrue
(
'vnu-url'
in
parameter_dict
)
self
.
assertTrue
(
'vnu-url'
in
parameter_dict
)
self
.
assertEqual
(
self
.
assertEqual
(
'https://[%s]:8899/'
%
(
self
.
_ipv6_address
,
),
'https://[%s]:8899/'
%
(
self
.
_ipv6_address
,
),
...
...
software/jstestnode/buildout.hash.cfg
View file @
a61f948b
...
@@ -27,4 +27,4 @@ md5sum = 98faa5ad8cfb23a11d97a459078a1d05
...
@@ -27,4 +27,4 @@ md5sum = 98faa5ad8cfb23a11d97a459078a1d05
[template-runTestSuite]
[template-runTestSuite]
filename = runTestSuite.in
filename = runTestSuite.in
md5sum =
70d10e7005b98620ddbbf30030b08198
md5sum =
54d585d50a3464100611774db68b72c0
software/jstestnode/runTestSuite.in
View file @
a61f948b
...
@@ -33,7 +33,7 @@ def main():
...
@@ -33,7 +33,7 @@ def main():
parser = argparse.ArgumentParser(description='Run a test suite.')
parser = argparse.ArgumentParser(description='Run a test suite.')
parser.add_argument('--test_suite', help='The test suite name',
parser.add_argument('--test_suite', help='The test suite name',
default=parsed_parameters.get('test-suite', ''),
default=parsed_parameters.get('test-suite', ''),
required=
not parsed_parameters.has_key('test-suite')
)
required=
'test-suite' not in parsed_parameters
)
parser.add_argument('--test_suite_title', help='The test suite title')
parser.add_argument('--test_suite_title', help='The test suite title')
parser.add_argument('--test_node_title', help='The test node title')
parser.add_argument('--test_node_title', help='The test node title')
parser.add_argument('--project_title', help='The project title')
parser.add_argument('--project_title', help='The project title')
...
@@ -96,7 +96,7 @@ def main():
...
@@ -96,7 +96,7 @@ def main():
firefox_binary='${firefox-wrapper-68:location}',
firefox_binary='${firefox-wrapper-68:location}',
executable_path='${geckodriver:location}')
executable_path='${geckodriver:location}')
else:
else:
assert target == 'selenium-server',
"Unsupported target {}".format(test_runner['target'])
assert target == 'selenium-server',
f"Unsupported target {test_runner['target']}"
# use a remote connection which optionally verifies TLS certificate
# use a remote connection which optionally verifies TLS certificate
# and optionally against a user provided CA.
# and optionally against a user provided CA.
executor = RemoteConnection(test_runner['server-url'], keep_alive=True)
executor = RemoteConnection(test_runner['server-url'], keep_alive=True)
...
@@ -120,14 +120,14 @@ def main():
...
@@ -120,14 +120,14 @@ def main():
remote_access_url = parsed_parameters.get('remote-access-url')
remote_access_url = parsed_parameters.get('remote-access-url')
if remote_access_url:
if remote_access_url:
if ('jio' in test_suite):
if ('jio' in test_suite):
url =
'{}/jio/test/tests.html'.format(remote_access_url)
url =
f'{remote_access_url}/jio/test/tests.html'
else:
else:
url =
'{}/renderjs/test/'.format(remote_access_url)
url =
f'{remote_access_url}/renderjs/test'
is_browser_running = True
is_browser_running = True
agent = browser.execute_script("return navigator.userAgent")
agent = browser.execute_script("return navigator.userAgent")
print
agent
print
(agent)
print
url
print
(url)
browser.get(url)
browser.get(url)
WebDriverWait(browser, 300).until(EC.presence_of_element_located((
WebDriverWait(browser, 300).until(EC.presence_of_element_located((
...
@@ -137,7 +137,7 @@ def main():
...
@@ -137,7 +137,7 @@ def main():
html_parser = etree.HTMLParser(recover=True)
html_parser = etree.HTMLParser(recover=True)
body = etree.fromstring(browser.page_source.encode('UTF-8'), html_parser)
body = etree.fromstring(browser.page_source.encode('UTF-8'), html_parser)
print
' '.join(body.xpath('//*[@id="qunit-testresult"]//text()'
))
print
(' '.join(body.xpath('//*[@id="qunit-testresult"]//text()')
))
for elt in body.xpath('.//ol[@id="qunit-tests"]/li'):
for elt in body.xpath('.//ol[@id="qunit-tests"]/li'):
if (len(elt.xpath('.//span[@class="module-name"]'))):
if (len(elt.xpath('.//span[@class="module-name"]'))):
...
@@ -149,7 +149,7 @@ def main():
...
@@ -149,7 +149,7 @@ def main():
else:
else:
test_name = elt.xpath('.//span[@class="test-name"]')[0].text
test_name = elt.xpath('.//span[@class="test-name"]')[0].text
print
elt.get('class'), ''.join(elt.xpath('.//strong')[0].itertext(
))
print
(elt.get('class'), ''.join(elt.xpath('.//strong')[0].itertext()
))
# print elt.find_element_by_tag_name('ol').get_attribute('innerHTML')
# print elt.find_element_by_tag_name('ol').get_attribute('innerHTML')
failure = int(elt.xpath('.//b[@class="failed"]')[0].text)
failure = int(elt.xpath('.//b[@class="failed"]')[0].text)
...
@@ -176,7 +176,7 @@ def main():
...
@@ -176,7 +176,7 @@ def main():
# Send results
# Send results
tool = taskdistribution.TaskDistributor(portal_url=args.master_url)
tool = taskdistribution.TaskDistributor(portal_url=args.master_url)
test_result = tool.createTestResult(revision = revision,
test_result = tool.createTestResult(revision = revision,
test_name_list =
test_line_dict.keys(
),
test_name_list =
list(test_line_dict.keys()
),
node_title = args.test_node_title,
node_title = args.test_node_title,
test_title = test_suite_title,
test_title = test_suite_title,
project_title = args.project_title)
project_title = args.project_title)
...
@@ -186,17 +186,17 @@ def main():
...
@@ -186,17 +186,17 @@ def main():
while 1:
while 1:
test_result_line = test_result.start()
test_result_line = test_result.start()
if not test_result_line:
if not test_result_line:
print
'No test result anymore.'
print
('No test result anymore.')
break
break
print
'Submitting: "%s"' % test_result_line.name
print
('Submitting: "%s"' % test_result_line.name)
# report status back to Nexedi ERP5
# report status back to Nexedi ERP5
test_result_line.stop(**test_line_dict[test_result_line.name])
test_result_line.stop(**test_line_dict[test_result_line.name])
except:
except:
# Catch any exception here, to warn user instead of being silent,
# Catch any exception here, to warn user instead of being silent,
# by generating fake error result
# by generating fake error result
print
traceback.format_exc(
)
print
(traceback.format_exc()
)
result = dict(status_code=-1,
result = dict(status_code=-1,
command=url,
command=url,
stderr=traceback.format_exc(),
stderr=traceback.format_exc(),
...
...
software/jstestnode/software.cfg
View file @
a61f948b
...
@@ -29,9 +29,6 @@ parts =
...
@@ -29,9 +29,6 @@ parts =
openssl
openssl
instance
instance
[python]
part = python2.7
[nodejs]
[nodejs]
<= nodejs-14.16.0
<= nodejs-14.16.0
...
...
software/ors-amarisoft/buildout.hash.cfg
View file @
a61f948b
...
@@ -20,7 +20,7 @@ md5sum = fc7bccab64e6794b33766ca9925231c8
...
@@ -20,7 +20,7 @@ md5sum = fc7bccab64e6794b33766ca9925231c8
[template-lte-enb-epc]
[template-lte-enb-epc]
_update_hash_filename_ = instance-enb-epc.jinja2.cfg
_update_hash_filename_ = instance-enb-epc.jinja2.cfg
md5sum =
b10c10a9408a934052fd0960f31a75f
c
md5sum =
c9994f2ef03edd7d6773307a6385c47
c
[template-lte-enb]
[template-lte-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg
_update_hash_filename_ = instance-enb.jinja2.cfg
...
@@ -28,11 +28,11 @@ md5sum = c450b8c307d20738a98bcb4f6ffeee16
...
@@ -28,11 +28,11 @@ md5sum = c450b8c307d20738a98bcb4f6ffeee16
[template-lte-gnb-epc]
[template-lte-gnb-epc]
_update_hash_filename_ = instance-gnb-epc.jinja2.cfg
_update_hash_filename_ = instance-gnb-epc.jinja2.cfg
md5sum =
5f86177e7ef18a6046826f96397ded1d
md5sum =
4b27f60eab8d71c2c47f21a845fddb47
[template-lte-epc]
[template-lte-epc]
_update_hash_filename_ = instance-epc.jinja2.cfg
_update_hash_filename_ = instance-epc.jinja2.cfg
md5sum =
2cfe5679374559ab94478b987d646d83
md5sum =
b17674f523adce9b0dda942c1493674d
[template-lte-gnb]
[template-lte-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg
_update_hash_filename_ = instance-gnb.jinja2.cfg
...
...
software/ors-amarisoft/instance-enb-epc.jinja2.cfg
View file @
a61f948b
...
@@ -51,7 +51,7 @@ config-monitor-password = ${monitor-htpasswd:passwd}
...
@@ -51,7 +51,7 @@ config-monitor-password = ${monitor-htpasswd:passwd}
name = MME
name = MME
software-type = mme
software-type = mme
config-name = mme
config-name = mme
{%- for key, value in slapparameter_dict.ite
rite
ms() %}
{%- for key, value in slapparameter_dict.items() %}
config-{{ key }} = {{ dumps(value) }}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
{% endfor -%}
config-slave-list = {{ dumps(slave_instance_list) }}
config-slave-list = {{ dumps(slave_instance_list) }}
...
@@ -62,7 +62,7 @@ return = monitor-base-url epc-ipv6
...
@@ -62,7 +62,7 @@ return = monitor-base-url epc-ipv6
name = eNB
name = eNB
software-type = enb
software-type = enb
config-name = enb
config-name = enb
{%- for key, value in slapparameter_dict.ite
rite
ms() %}
{%- for key, value in slapparameter_dict.items() %}
config-{{ key }} = {{ dumps(value) }}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
{% endfor -%}
return = monitor-base-url
return = monitor-base-url
...
...
software/ors-amarisoft/instance-epc.jinja2.cfg
View file @
a61f948b
...
@@ -51,7 +51,7 @@ return = monitor-base-url epc-ipv6
...
@@ -51,7 +51,7 @@ return = monitor-base-url epc-ipv6
name = MME
name = MME
software-type = mme
software-type = mme
config-name = mme
config-name = mme
{%- for key, value in slapparameter_dict.ite
rite
ms() %}
{%- for key, value in slapparameter_dict.items() %}
config-{{ key }} = {{ dumps(value) }}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
{% endfor -%}
config-slave-list = {{ dumps(slave_instance_list) }}
config-slave-list = {{ dumps(slave_instance_list) }}
...
...
software/ors-amarisoft/instance-gnb-epc.jinja2.cfg
View file @
a61f948b
...
@@ -51,7 +51,7 @@ config-monitor-password = ${monitor-htpasswd:passwd}
...
@@ -51,7 +51,7 @@ config-monitor-password = ${monitor-htpasswd:passwd}
name = MME
name = MME
software-type = mme
software-type = mme
config-name = mme
config-name = mme
{%- for key, value in slapparameter_dict.ite
rite
ms() %}
{%- for key, value in slapparameter_dict.items() %}
config-{{ key }} = {{ dumps(value) }}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
{% endfor -%}
config-slave-list = {{ dumps(slave_instance_list) }}
config-slave-list = {{ dumps(slave_instance_list) }}
...
@@ -62,7 +62,7 @@ return = monitor-base-url epc-ipv6
...
@@ -62,7 +62,7 @@ return = monitor-base-url epc-ipv6
name = gNB
name = gNB
software-type = gnb
software-type = gnb
config-name = gnb
config-name = gnb
{%- for key, value in slapparameter_dict.ite
rite
ms() %}
{%- for key, value in slapparameter_dict.items() %}
config-{{ key }} = {{ dumps(value) }}
config-{{ key }} = {{ dumps(value) }}
{% endfor -%}
{% endfor -%}
return = monitor-base-url
return = monitor-base-url
...
...
software/ors-amarisoft/software.cfg
View file @
a61f948b
...
@@ -21,8 +21,6 @@ parts +=
...
@@ -21,8 +21,6 @@ parts +=
# apache-php
# apache-php
# logrotate
# logrotate
[python]
part = python2.7
[template]
[template]
recipe = slapos.recipe.template
recipe = slapos.recipe.template
...
...
software/seleniumserver/buildout.hash.cfg
View file @
a61f948b
...
@@ -19,4 +19,4 @@ md5sum = 9b41238f67ea8e12f8ea9590fd552b33
...
@@ -19,4 +19,4 @@ md5sum = 9b41238f67ea8e12f8ea9590fd552b33
[template-selenium]
[template-selenium]
filename = instance-selenium.cfg.in
filename = instance-selenium.cfg.in
md5sum =
3e50d629307ca9f1381909102a52756d
md5sum =
9b4742e8a249aef38c7c8c12d74b0605
software/seleniumserver/instance-selenium.cfg.in
View file @
a61f948b
...
@@ -316,10 +316,10 @@ recipe = slapos.recipe.template
...
@@ -316,10 +316,10 @@ recipe = slapos.recipe.template
output = $${directory:bin}/$${:_buildout_section_name_}
output = $${directory:bin}/$${:_buildout_section_name_}
inline =
inline =
#!${buildout:executable}
#!${buildout:executable}
import json, urllib, sys
import json, urllib
.request
, sys
api_url = sys.argv[1]
api_url = sys.argv[1]
expected_node_count = int(sys.argv[2])
expected_node_count = int(sys.argv[2])
actual_node_count = json.load(urllib.urlopen(api_url))['slotCounts']['total']
actual_node_count = json.load(urllib.
request.
urlopen(api_url))['slotCounts']['total']
sys.exit(0 if expected_node_count == actual_node_count else 1)
sys.exit(0 if expected_node_count == actual_node_count else 1)
...
...
software/seleniumserver/software.cfg
View file @
a61f948b
...
@@ -23,9 +23,6 @@ parts =
...
@@ -23,9 +23,6 @@ parts =
collective.recipe.shelloutput
collective.recipe.shelloutput
template
template
[python]
part = python2.7
[collective.recipe.shelloutput]
[collective.recipe.shelloutput]
recipe = zc.recipe.egg
recipe = zc.recipe.egg
...
...
software/seleniumserver/test/test.py
View file @
a61f948b
...
@@ -31,12 +31,12 @@ import multiprocessing
...
@@ -31,12 +31,12 @@ import multiprocessing
import
os
import
os
import
tempfile
import
tempfile
import
unittest
import
unittest
import
urlparse
import
url
lib.
parse
import
base64
import
base64
import
hashlib
import
hashlib
import
logging
import
logging
import
contextlib
import
contextlib
from
BaseHTTPS
erver
import
BaseHTTPRequestHandler
from
http.s
erver
import
BaseHTTPRequestHandler
from
io
import
BytesIO
from
io
import
BytesIO
...
@@ -72,7 +72,7 @@ class WebServer(ManagedHTTPServer):
...
@@ -72,7 +72,7 @@ class WebServer(ManagedHTTPServer):
self
.
send_response
(
200
)
self
.
send_response
(
200
)
self
.
end_headers
()
self
.
end_headers
()
self
.
wfile
.
write
(
self
.
wfile
.
write
(
'''
b
'''
<html>
<html>
<title>Test page</title>
<title>Test page</title>
<body>
<body>
...
@@ -97,15 +97,15 @@ class WebServer(ManagedHTTPServer):
...
@@ -97,15 +97,15 @@ class WebServer(ManagedHTTPServer):
self
.
send_response
(
200
)
self
.
send_response
(
200
)
self
.
end_headers
()
self
.
end_headers
()
file_data
=
'no file'
file_data
=
'no file'
if
form
.
has_key
(
'f'
)
:
if
'f'
in
form
:
file_data
=
form
[
'f'
].
file
.
read
()
file_data
=
form
[
'f'
].
file
.
read
()
.
decode
()
self
.
wfile
.
write
(
self
.
wfile
.
write
(
'''
(
'''
<html>
<html>
<title>%s</title>
<title>%s</title>
<div>%s</div>
<div>%s</div>
</html>
</html>
'''
%
(
form
[
'q'
].
value
,
file_data
))
'''
%
(
form
[
'q'
].
value
,
file_data
))
.
encode
())
log_message
=
logging
.
getLogger
(
__name__
+
'.WebServer'
).
info
log_message
=
logging
.
getLogger
(
__name__
+
'.WebServer'
).
info
...
@@ -148,7 +148,7 @@ class BrowserCompatibilityMixin(WebServerMixin):
...
@@ -148,7 +148,7 @@ class BrowserCompatibilityMixin(WebServerMixin):
WebDriverWait
(
self
.
driver
,
3
).
until
(
EC
.
title_is
(
self
.
id
()))
WebDriverWait
(
self
.
driver
,
3
).
until
(
EC
.
title_is
(
self
.
id
()))
def
test_upload_file
(
self
):
def
test_upload_file
(
self
):
f
=
tempfile
.
NamedTemporaryFile
(
delete
=
False
)
f
=
tempfile
.
NamedTemporaryFile
(
delete
=
False
,
mode
=
'w'
)
f
.
write
(
self
.
id
())
f
.
write
(
self
.
id
())
f
.
close
()
f
.
close
()
self
.
addCleanup
(
lambda
:
os
.
remove
(
f
.
name
))
self
.
addCleanup
(
lambda
:
os
.
remove
(
f
.
name
))
...
@@ -307,7 +307,7 @@ class TestFrontend(WebServerMixin, SeleniumServerTestCase):
...
@@ -307,7 +307,7 @@ class TestFrontend(WebServerMixin, SeleniumServerTestCase):
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
admin_url
=
parameter_dict
[
'admin-url'
]
admin_url
=
parameter_dict
[
'admin-url'
]
parsed
=
urlparse
.
urlparse
(
admin_url
)
parsed
=
url
lib
.
parse
.
urlparse
(
admin_url
)
self
.
assertEqual
(
'admin'
,
parsed
.
username
)
self
.
assertEqual
(
'admin'
,
parsed
.
username
)
self
.
assertTrue
(
parsed
.
password
)
self
.
assertTrue
(
parsed
.
password
)
...
@@ -316,7 +316,7 @@ class TestFrontend(WebServerMixin, SeleniumServerTestCase):
...
@@ -316,7 +316,7 @@ class TestFrontend(WebServerMixin, SeleniumServerTestCase):
def
test_browser_use_hub
(
self
):
def
test_browser_use_hub
(
self
):
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
webdriver_url
=
parameter_dict
[
'url'
]
webdriver_url
=
parameter_dict
[
'url'
]
parsed
=
urlparse
.
urlparse
(
webdriver_url
)
parsed
=
url
lib
.
parse
.
urlparse
(
webdriver_url
)
self
.
assertEqual
(
'selenium'
,
parsed
.
username
)
self
.
assertEqual
(
'selenium'
,
parsed
.
username
)
self
.
assertTrue
(
parsed
.
password
)
self
.
assertTrue
(
parsed
.
password
)
...
@@ -343,7 +343,7 @@ class TestSSHServer(SeleniumServerTestCase):
...
@@ -343,7 +343,7 @@ class TestSSHServer(SeleniumServerTestCase):
def
test_connect
(
self
):
def
test_connect
(
self
):
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
parameter_dict
=
self
.
computer_partition
.
getConnectionParameterDict
()
ssh_url
=
parameter_dict
[
'ssh-url'
]
ssh_url
=
parameter_dict
[
'ssh-url'
]
parsed
=
urlparse
.
urlparse
(
ssh_url
)
parsed
=
url
lib
.
parse
.
urlparse
(
ssh_url
)
self
.
assertEqual
(
'ssh'
,
parsed
.
scheme
)
self
.
assertEqual
(
'ssh'
,
parsed
.
scheme
)
client
=
paramiko
.
SSHClient
()
client
=
paramiko
.
SSHClient
()
...
@@ -359,9 +359,9 @@ class TestSSHServer(SeleniumServerTestCase):
...
@@ -359,9 +359,9 @@ class TestSSHServer(SeleniumServerTestCase):
with
contextlib
.
closing
(
client
):
with
contextlib
.
closing
(
client
):
client
.
connect
(
client
.
connect
(
username
=
urlparse
.
urlparse
(
ssh_url
).
username
,
username
=
url
lib
.
parse
.
urlparse
(
ssh_url
).
username
,
hostname
=
urlparse
.
urlparse
(
ssh_url
).
hostname
,
hostname
=
url
lib
.
parse
.
urlparse
(
ssh_url
).
hostname
,
port
=
urlparse
.
urlparse
(
ssh_url
).
port
,
port
=
url
lib
.
parse
.
urlparse
(
ssh_url
).
port
,
pkey
=
self
.
ssh_key
,
pkey
=
self
.
ssh_key
,
)
)
...
@@ -378,7 +378,7 @@ class TestSSHServer(SeleniumServerTestCase):
...
@@ -378,7 +378,7 @@ class TestSSHServer(SeleniumServerTestCase):
# Paramiko does not allow to get the fingerprint as SHA256 easily yet
# Paramiko does not allow to get the fingerprint as SHA256 easily yet
# https://github.com/paramiko/paramiko/pull/1103
# https://github.com/paramiko/paramiko/pull/1103
self
.
assertEqual
(
self
.
assertEqual
(
fingerprint
,
fingerprint
.
encode
()
,
# XXX with sha256, we need to remove that trailing =
# XXX with sha256, we need to remove that trailing =
base64
.
b64encode
(
base64
.
b64encode
(
hashlib
.
new
(
fingerprint_algorithm
,
hashlib
.
new
(
fingerprint_algorithm
,
...
@@ -386,15 +386,15 @@ class TestSSHServer(SeleniumServerTestCase):
...
@@ -386,15 +386,15 @@ class TestSSHServer(SeleniumServerTestCase):
channel
=
client
.
invoke_shell
()
channel
=
client
.
invoke_shell
()
channel
.
settimeout
(
30
)
channel
.
settimeout
(
30
)
received
=
''
received
=
b
''
while
True
:
while
True
:
r
=
channel
.
recv
(
1024
)
r
=
channel
.
recv
(
1024
)
if
not
r
:
if
not
r
:
break
break
received
+=
r
received
+=
r
if
'Selenium Server.'
in
received
:
if
b
'Selenium Server.'
in
received
:
break
break
self
.
assertIn
(
"Welcome to SlapOS Selenium Server."
,
received
)
self
.
assertIn
(
b
"Welcome to SlapOS Selenium Server."
,
received
)
class
TestFirefox52
(
class
TestFirefox52
(
...
@@ -405,8 +405,9 @@ class TestFirefox52(
...
@@ -405,8 +405,9 @@ class TestFirefox52(
desired_capabilities
=
dict
(
DesiredCapabilities
.
FIREFOX
,
version
=
'52.9.0esr'
)
desired_capabilities
=
dict
(
DesiredCapabilities
.
FIREFOX
,
version
=
'52.9.0esr'
)
user_agent
=
'Gecko/20100101 Firefox/52.0'
user_agent
=
'Gecko/20100101 Firefox/52.0'
# resizing window is not supported on firefox 52 geckodriver
# resizing window is not supported on firefox 52 geckodriver
test_resize_window
=
unittest
.
expectedFailure
(
@
unittest
.
expectedFailure
BrowserCompatibilityMixin
.
test_resize_window
)
def
test_resize_window
(
self
):
super
().
test_resize_window
()
class
TestFirefox60
(
class
TestFirefox60
(
...
...
software/slapos-sr-testing/software-py3.cfg
View file @
a61f948b
...
@@ -16,18 +16,26 @@ extra =
...
@@ -16,18 +16,26 @@ extra =
caddy-frontend ${slapos.test.caddy-frontend-setup:setup}
caddy-frontend ${slapos.test.caddy-frontend-setup:setup}
erp5testnode ${slapos.test.erp5testnode-setup:setup}
erp5testnode ${slapos.test.erp5testnode-setup:setup}
galene ${slapos.test.galene-setup:setup}
galene ${slapos.test.galene-setup:setup}
grafana ${slapos.test.grafana-setup:setup}
headless-chromium ${slapos.test.headless-chromium-setup:setup}
headless-chromium ${slapos.test.headless-chromium-setup:setup}
helloworld ${slapos.test.helloworld-setup:setup}
helloworld ${slapos.test.helloworld-setup:setup}
html5as ${slapos.test.html5as-setup:setup}
html5as-base ${slapos.test.html5as-base-setup:setup}
hugo ${slapos.test.hugo-setup:setup}
hugo ${slapos.test.hugo-setup:setup}
jstestnode ${slapos.test.jstestnode-setup:setup}
jupyter ${slapos.test.jupyter-setup:setup}
jupyter ${slapos.test.jupyter-setup:setup}
kvm ${slapos.test.kvm-setup:setup}
kvm ${slapos.test.kvm-setup:setup}
matomo ${slapos.test.matomo-setup:setup}
matomo ${slapos.test.matomo-setup:setup}
metabase ${slapos.test.metabase-setup:setup}
monitor ${slapos.test.monitor-setup:setup}
monitor ${slapos.test.monitor-setup:setup}
nextcloud ${slapos.test.nextcloud-setup:setup}
nextcloud ${slapos.test.nextcloud-setup:setup}
nginx-push-stream ${slapos.test.nginx-push-stream-setup:setup}
nginx-push-stream ${slapos.test.nginx-push-stream-setup:setup}
ors-amarisoft ${slapos.test.ors-amarisoft-setup:setup}
plantuml ${slapos.test.plantuml-setup:setup}
plantuml ${slapos.test.plantuml-setup:setup}
powerdns ${slapos.test.powerdns-setup:setup}
powerdns ${slapos.test.powerdns-setup:setup}
proftpd ${slapos.test.proftpd-setup:setup}
proftpd ${slapos.test.proftpd-setup:setup}
repman ${slapos.test.repman-setup:setup}
repman ${slapos.test.repman-setup:setup}
restic-rest-server ${slapos.test.restic_rest_server-setup:setup}
restic-rest-server ${slapos.test.restic_rest_server-setup:setup}
seleniumserver ${slapos.test.seleniumserver-setup:setup}
theia ${slapos.test.theia-setup:setup}
theia ${slapos.test.theia-setup:setup}
turnserver ${slapos.test.turnserver-setup:setup}
software/slapos-sr-testing/software.cfg
View file @
a61f948b
...
@@ -359,8 +359,6 @@ tests =
...
@@ -359,8 +359,6 @@ tests =
# here, to check there's no promise issue when slapos node runs with Python 2.
# here, to check there's no promise issue when slapos node runs with Python 2.
erp5 ${slapos.test.erp5-setup:setup}
erp5 ${slapos.test.erp5-setup:setup}
fluentd ${slapos.test.fluentd-setup:setup}
fluentd ${slapos.test.fluentd-setup:setup}
metabase ${slapos.test.metabase-setup:setup}
ors-amarisoft ${slapos.test.ors-amarisoft-setup:setup}
###
###
${:extra}
${:extra}
...
@@ -373,17 +371,11 @@ extra =
...
@@ -373,17 +371,11 @@ extra =
cloudooo ${slapos.test.cloudooo-setup:setup}
cloudooo ${slapos.test.cloudooo-setup:setup}
dream ${slapos.test.dream-setup:setup}
dream ${slapos.test.dream-setup:setup}
gitlab ${slapos.test.gitlab-setup:setup}
gitlab ${slapos.test.gitlab-setup:setup}
grafana ${slapos.test.grafana-setup:setup}
html5as ${slapos.test.html5as-setup:setup}
html5as-base ${slapos.test.html5as-base-setup:setup}
htmlvalidatorserver ${slapos.test.htmlvalidatorserver-setup:setup}
htmlvalidatorserver ${slapos.test.htmlvalidatorserver-setup:setup}
jscrawler ${slapos.test.jscrawler-setup:setup}
jscrawler ${slapos.test.jscrawler-setup:setup}
jstestnode ${slapos.test.jstestnode-setup:setup}
re6stnet ${slapos.test.re6stnet-setup:setup}
re6stnet ${slapos.test.re6stnet-setup:setup}
seleniumserver ${slapos.test.seleniumserver-setup:setup}
slapos-master ${slapos.test.slapos-master-setup:setup}
slapos-master ${slapos.test.slapos-master-setup:setup}
slaprunner ${slapos.test.slaprunner-setup:setup}
slaprunner ${slapos.test.slaprunner-setup:setup}
turnserver ${slapos.test.turnserver-setup:setup}
upgrade_erp5 ${slapos.test.upgrade_erp5-setup:setup}
upgrade_erp5 ${slapos.test.upgrade_erp5-setup:setup}
[versions]
[versions]
...
...
software/turnserver/software.cfg
View file @
a61f948b
...
@@ -14,9 +14,6 @@ parts =
...
@@ -14,9 +14,6 @@ parts =
coturn
coturn
instance-cfg
instance-cfg
[python]
part = python2.7
[download-base]
[download-base]
recipe = slapos.recipe.build:download
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/${:filename}
url = ${:_profile_base_location_}/${:filename}
...
...
software/turnserver/test/test.py
View file @
a61f948b
...
@@ -29,7 +29,7 @@ import os
...
@@ -29,7 +29,7 @@ import os
import
subprocess
import
subprocess
import
json
import
json
import
glob
import
glob
import
ConfigP
arser
import
configp
arser
from
slapos.recipe.librecipe
import
generateHashFromFiles
from
slapos.recipe.librecipe
import
generateHashFromFiles
from
slapos.testing.testcase
import
makeModuleSetUpAndTestCaseClass
from
slapos.testing.testcase
import
makeModuleSetUpAndTestCaseClass
...
@@ -96,7 +96,7 @@ class TestServices(TurnServerTestCase):
...
@@ -96,7 +96,7 @@ class TestServices(TurnServerTestCase):
secret_file
=
os
.
path
.
join
(
self
.
partition_path
,
'etc/.turnsecret'
)
secret_file
=
os
.
path
.
join
(
self
.
partition_path
,
'etc/.turnsecret'
)
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
partition_path
))
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
partition_path
))
self
.
assertTrue
(
os
.
path
.
exists
(
secret_file
))
self
.
assertTrue
(
os
.
path
.
exists
(
secret_file
))
config
=
ConfigP
arser
.
ConfigParser
()
config
=
configp
arser
.
ConfigParser
()
with
open
(
secret_file
)
as
f
:
with
open
(
secret_file
)
as
f
:
config
.
readfp
(
f
)
config
.
readfp
(
f
)
secret
=
config
.
get
(
'turnserver'
,
'secret'
)
secret
=
config
.
get
(
'turnserver'
,
'secret'
)
...
@@ -151,7 +151,7 @@ class TestParameters(TurnServerTestCase):
...
@@ -151,7 +151,7 @@ class TestParameters(TurnServerTestCase):
secret_file
=
os
.
path
.
join
(
self
.
partition_path
,
'etc/.turnsecret'
)
secret_file
=
os
.
path
.
join
(
self
.
partition_path
,
'etc/.turnsecret'
)
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
partition_path
))
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
partition_path
))
self
.
assertTrue
(
os
.
path
.
exists
(
secret_file
))
self
.
assertTrue
(
os
.
path
.
exists
(
secret_file
))
config
=
ConfigP
arser
.
ConfigParser
()
config
=
configp
arser
.
ConfigParser
()
with
open
(
secret_file
)
as
f
:
with
open
(
secret_file
)
as
f
:
config
.
readfp
(
f
)
config
.
readfp
(
f
)
secret
=
config
.
get
(
'turnserver'
,
'secret'
)
secret
=
config
.
get
(
'turnserver'
,
'secret'
)
...
...
stack/slapos.cfg
View file @
a61f948b
...
@@ -194,7 +194,7 @@ setuptools-dso = 1.7
...
@@ -194,7 +194,7 @@ setuptools-dso = 1.7
rubygemsrecipe = 0.4.3
rubygemsrecipe = 0.4.3
six = 1.16.0
six = 1.16.0
slapos.cookbook = 1.0.253
slapos.cookbook = 1.0.253
slapos.core = 1.
7.13
slapos.core = 1.
8.0
slapos.extension.shared = 1.0
slapos.extension.shared = 1.0
slapos.libnetworkcache = 0.25
slapos.libnetworkcache = 0.25
slapos.rebootstrap = 4.5
slapos.rebootstrap = 4.5
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment