Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
MEC - Multi-access Edge Computing
MEC TTCN-3 Test Suite
Commits
1997f2ce
Commit
1997f2ce
authored
Jul 12, 2019
by
Yann Garcia
Browse files
Validate MEC simulator for UETAG
parent
2a63e10d
Changes
2
Hide whitespace changes
Inline
Side-by-side
simu/mec_http_server.py
View file @
1997f2ce
...
@@ -6,6 +6,10 @@ from mec_database import mec_database
...
@@ -6,6 +6,10 @@ from mec_database import mec_database
class
myHandler
(
http
.
server
.
BaseHTTPRequestHandler
):
class
myHandler
(
http
.
server
.
BaseHTTPRequestHandler
):
__db__
=
mec_database
()
__db__
=
mec_database
()
def
__init__
(
self
,
p_request
,
p_client_address
,
p_server
):
super
(
http
.
server
.
BaseHTTPRequestHandler
,
self
).
__init__
(
p_request
,
p_client_address
,
p_server
)
self
.
wfile
.
_wbufsize
=
-
1
;
# Handler for the GET requests
# Handler for the GET requests
def
do_GET
(
self
):
def
do_GET
(
self
):
print
(
'>>> do_GET: '
,
self
.
path
)
print
(
'>>> do_GET: '
,
self
.
path
)
...
@@ -14,8 +18,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -14,8 +18,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
if
self
.
__check_http_headers__
()
==
False
:
if
self
.
__check_http_headers__
()
==
False
:
resp
=
"{
\"
problemDetails
\"
: {
\t\"
type
\"
:
\"
Bad Request
\"
,
\t\"
title
\"
:
\"
N/A
\"
,
\t\"
status
\"
: 400,
\t\"
detail
\"
:
\"
Wrong headers
\"
,
\t\"
instance
\"
:
\"
N/A
\"
}}"
resp
=
"{
\"
problemDetails
\"
: {
\t\"
type
\"
:
\"
Bad Request
\"
,
\t\"
title
\"
:
\"
N/A
\"
,
\t\"
status
\"
: 400,
\t\"
detail
\"
:
\"
Wrong headers
\"
,
\t\"
instance
\"
:
\"
N/A
\"
}}"
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
'application/problem+json'
)
self
.
send_header
(
'Content-Type'
,
'application/problem+json'
)
l
=
len
(
resp
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
send_header
(
'Content-Length'
,
str
(
l
))
...
@@ -27,8 +32,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -27,8 +32,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
print
(
'do_GET: resp= '
,
resp
,
', Content_Type= '
,
content_type
)
print
(
'do_GET: resp= '
,
resp
,
', Content_Type= '
,
content_type
)
if
(
resp
==
None
):
if
(
resp
==
None
):
self
.
send_response
(
404
,
'Not Found'
)
self
.
send_response
(
404
,
'Not Found'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Length'
,
'0'
)
self
.
send_header
(
'Content-Length'
,
'0'
)
self
.
end_headers
()
self
.
end_headers
()
...
@@ -41,13 +47,21 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -41,13 +47,21 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_response
(
400
,
'Bad Request'
)
else
:
else
:
self
.
send_response
(
200
,
'OK'
)
self
.
send_response
(
200
,
'OK'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Type'
,
content_type
)
l
=
len
(
resp
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
end_headers
()
#self.end_headers() # Unable to bufferize wfile, so calling end_headers() headers and body are sent in 2 different TCP packets
self
.
wfile
.
write
(
bytes
(
resp
,
'utf-8'
))
self
.
_headers_buffer
.
append
(
b
"
\r\n
"
)
self
.
_headers_buffer
.
append
(
bytes
(
resp
,
'utf-8'
))
self
.
wfile
.
write
(
b
""
.
join
(
self
.
_headers_buffer
))
self
.
_headers_buffer
=
[]
#self.wfile.write(bytes(resp, 'utf-8'))
#self.wfile.flush()
print
(
"<<< do_GET"
)
return
# End of do_GET
# End of do_GET
# Handler for the POST requests
# Handler for the POST requests
...
@@ -61,6 +75,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -61,6 +75,7 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
'application/problem+json'
)
self
.
send_header
(
'Content-Type'
,
'application/problem+json'
)
l
=
len
(
resp
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
send_header
(
'Content-Length'
,
str
(
l
))
...
@@ -72,8 +87,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -72,8 +87,9 @@ class myHandler(http.server.BaseHTTPRequestHandler):
print
(
'do_POST: resp= '
,
resp
,
', Content_Type= '
,
content_type
)
print
(
'do_POST: resp= '
,
resp
,
', Content_Type= '
,
content_type
)
if
(
resp
==
None
):
if
(
resp
==
None
):
self
.
send_response
(
404
,
'Not Found'
)
self
.
send_response
(
404
,
'Not Found'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Length'
,
'0'
)
self
.
send_header
(
'Content-Length'
,
'0'
)
self
.
end_headers
()
self
.
end_headers
()
...
@@ -88,15 +104,76 @@ class myHandler(http.server.BaseHTTPRequestHandler):
...
@@ -88,15 +104,76 @@ class myHandler(http.server.BaseHTTPRequestHandler):
self
.
send_response
(
201
,
'Created'
)
self
.
send_response
(
201
,
'Created'
)
else
:
else
:
self
.
send_response
(
200
,
'OK'
)
self
.
send_response
(
200
,
'OK'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Type'
,
content_type
)
l
=
len
(
resp
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
send_header
(
'Content-Length'
,
str
(
l
))
#self.end_headers() # Unable to bufferize wfile, so calling end_headers() headers and body are sent in 2 different TCP packets
self
.
_headers_buffer
.
append
(
b
"
\r\n
"
)
self
.
_headers_buffer
.
append
(
bytes
(
resp
,
'utf-8'
))
self
.
wfile
.
write
(
b
""
.
join
(
self
.
_headers_buffer
))
self
.
_headers_buffer
=
[]
#self.wfile.write(bytes(resp, 'utf-8'))
#self.wfile.flush()
print
(
"<<< do_POST"
)
return
# End of do_POST
# Handler for the DELETE requests
def
do_DELETE
(
self
):
print
(
'>>> do_DELETE: '
,
self
.
path
)
self
.
protocol_version
=
self
.
request_version
# Check HTTP end_headers
if
self
.
__check_http_headers__
()
==
False
:
resp
=
"{
\"
problemDetails
\"
: {
\t\"
type
\"
:
\"
Bad Request
\"
,
\t\"
title
\"
:
\"
N/A
\"
,
\t\"
status
\"
: 400,
\t\"
detail
\"
:
\"
Wrong headers
\"
,
\t\"
instance
\"
:
\"
N/A
\"
}}"
self
.
send_response
(
400
,
'Bad Request'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
'application/problem+json'
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
self
.
end_headers
()
self
.
end_headers
()
self
.
wfile
.
write
(
bytes
(
resp
,
'utf-8'
))
self
.
wfile
.
write
(
bytes
(
resp
,
'utf-8'
))
# End of do_POST
return
resp
,
content_type
=
self
.
__process__
()
print
(
'do_DELETE: resp= '
,
resp
,
', Content_Type= '
,
content_type
)
if
(
resp
==
None
):
self
.
send_response
(
404
,
'Not Found'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
self
.
send_header
(
'Content-Length'
,
'0'
)
self
.
end_headers
()
else
:
if
resp
.
find
(
'Not Found'
)
!=
-
1
:
self
.
send_response
(
404
,
'Not Found'
)
elif
resp
.
find
(
'Forbidden'
)
!=
-
1
:
self
.
send_response
(
403
,
'Forbidden'
)
elif
resp
.
find
(
'Bad Request'
)
!=
-
1
:
self
.
send_response
(
400
,
'Bad Request'
)
else
:
self
.
send_response
(
200
,
'OK'
)
self
.
send_header
(
'Host'
,
self
.
headers
.
get
(
'Host'
))
# send_header() shall be after send_response()
self
.
send_header
(
'Authorization'
,
self
.
headers
.
get
(
'Authorization'
))
self
.
send_header
(
'Connection'
,
'keep-alive'
)
self
.
send_header
(
'Content-Type'
,
content_type
)
l
=
len
(
resp
)
self
.
send_header
(
'Content-Length'
,
str
(
l
))
#self.end_headers()
self
.
_headers_buffer
.
append
(
b
"
\r\n
"
)
self
.
_headers_buffer
.
append
(
bytes
(
resp
,
'utf-8'
))
self
.
wfile
.
write
(
b
""
.
join
(
self
.
_headers_buffer
))
self
.
_headers_buffer
=
[]
#self.wfile.write(bytes(resp, 'utf-8'))
#self.wfile.flush()
print
(
"<<< do_DELETE"
)
return
# End of do_DELETE
# Check HTTP headers
# Check HTTP headers
def
__check_http_headers__
(
self
):
def
__check_http_headers__
(
self
):
...
...
simu/mec_simulator.py
View file @
1997f2ce
...
@@ -10,7 +10,7 @@ import msvcrt
...
@@ -10,7 +10,7 @@ import msvcrt
# MEC simulator IPv4 address
# MEC simulator IPv4 address
#ADDRESS_BINDING = '172.28.4.87'
#ADDRESS_BINDING = '172.28.4.87'
#ADDRESS_BINDING = '192.168.1.21'
#ADDRESS_BINDING = '192.168.1.21'
ADDRESS_BINDING
=
'192.168.0.
5
'
ADDRESS_BINDING
=
'192.168.0.
17
'
#ADDRESS_BINDING = '127.0.0.1'
#ADDRESS_BINDING = '127.0.0.1'
# MEC simulator IPv4 listening port
# MEC simulator IPv4 listening port
PORT_NUMBER
=
8081
PORT_NUMBER
=
8081
...
@@ -25,16 +25,20 @@ if __name__ == '__main__':
...
@@ -25,16 +25,20 @@ if __name__ == '__main__':
exit
=
False
exit
=
False
try
:
try
:
# Create a web server and define the handler to manage the incoming request
# Create a web server and define the handler to manage the incoming request
server
=
socketserver
.
TCPServer
((
ADDRESS_BINDING
,
PORT_NUMBER
),
mec_http_server
.
myHandler
)
# server = socketserver.TCPServer((ADDRESS_BINDING, PORT_NUMBER), mec_http_server.myHandler)
print
(
'Started httpserver on port '
,
PORT_NUMBER
)
server
=
http
.
server
.
HTTPServer
((
ADDRESS_BINDING
,
PORT_NUMBER
),
mec_http_server
.
myHandler
)
server
.
wbufsize
=
-
1
print
(
'Started httpserver on port '
,
PORT_NUMBER
)
# Wait forever for incoming http requests in background
# Wait forever for incoming http requests in background
#server.serve_forever()
#server.serve_forever(
poll_interval=2
)
threading
.
Thread
(
target
=
server
.
serve_forever
).
start
()
threading
.
Thread
(
target
=
server
.
serve_forever
).
start
()
# Use keybord entries to trigBger notifications
# Use keybord entries to trigBger notifications
while
exit
==
False
:
while
exit
==
False
:
ch
=
getch
()
ch
=
getch
()
if
ch
==
b
'
\x03
'
:
if
ch
==
b
'
\x03
'
:
exit
=
True
exit
=
True
elif
ch
==
b
'q'
:
exit
=
True
else
:
else
:
print
(
">>> ch= "
,
ch
)
print
(
">>> ch= "
,
ch
)
server
.
shutdown
()
server
.
shutdown
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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