Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SMART
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
3
Issues
3
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UNI-KLU
SMART
Commits
714b4b1e
Commit
714b4b1e
authored
Jan 28, 2021
by
Alexander Lercher
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'support/code-coverage' into 'develop'
Coverage Testing Implemented See merge request
!24
parents
26a88ef4
eaea04bc
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
336 additions
and
3 deletions
+336
-3
.gitignore
.gitignore
+2
-0
testing.py
bin/testing.py
+73
-3
test_coverage.py
...ub/role-stage-discovery-microservice/app/test_coverage.py
+93
-0
test_coverage.py
...ta-hub/semantic-linking-microservice/app/test_coverage.py
+74
-0
test_coverage.py
...tion-hub/business-logic-microservice/app/test_coverage.py
+94
-0
No files found.
.gitignore
View file @
714b4b1e
...
@@ -17,3 +17,5 @@ src/modules/security/regular_user_credentials.json
...
@@ -17,3 +17,5 @@ src/modules/security/regular_user_credentials.json
src/modules/security/default_users.json
src/modules/security/default_users.json
resources/
resources/
reports/
bin/testing.py
View file @
714b4b1e
...
@@ -2,6 +2,8 @@ import os
...
@@ -2,6 +2,8 @@ import os
import
sys
import
sys
import
importlib.util
import
importlib.util
import
pathlib
import
pathlib
import
shutil
import
re
'''
'''
This script searches for all 'tests/' directories and executes all tests
This script searches for all 'tests/' directories and executes all tests
...
@@ -11,30 +13,97 @@ Use command line argument '-w' to run on windows.
...
@@ -11,30 +13,97 @@ Use command line argument '-w' to run on windows.
'''
'''
PY
=
sys
.
argv
[
2
]
if
(
len
(
sys
.
argv
)
>
1
and
sys
.
argv
[
1
]
==
'-py'
)
else
'python3.7'
# use -py to use your own python command
PY
=
sys
.
argv
[
2
]
if
(
len
(
sys
.
argv
)
>
1
and
sys
.
argv
[
1
]
==
'-py'
)
else
'python3.7'
# use -py to use your own python command
COVERAGE
=
"coverage run --append --omit=*/site-packages*"
ROOT
=
pathlib
.
Path
(
__file__
)
.
parent
.
parent
.
absolute
()
ROOT
=
pathlib
.
Path
(
__file__
)
.
parent
.
parent
.
absolute
()
REPORTS
=
ROOT
/
'reports'
TESTS_FOLDER_NAME
=
os
.
path
.
normpath
(
"/tests"
)
TESTS_FOLDER_NAME
=
os
.
path
.
normpath
(
"/tests"
)
print
(
"
\n
Searching for tests at the path: "
+
str
(
ROOT
))
print
(
"
\n
Searching for tests at the path: "
+
str
(
ROOT
))
count
=
0
count
=
0
resultCodeList
=
[]
resultCodeList
=
[]
coverage_paths_set
=
set
()
for
(
dirname
,
dirs
,
files
)
in
os
.
walk
(
ROOT
):
for
(
dirname
,
dirs
,
files
)
in
os
.
walk
(
ROOT
):
#I assume all the tests are placed in a folder named "tests"
#I assume all the tests are placed in a folder named "tests"
if
(
TESTS_FOLDER_NAME
in
str
(
dirname
))
\
if
(
TESTS_FOLDER_NAME
in
str
(
dirname
))
\
and
'src'
in
str
(
dirname
)
\
and
'src'
in
str
(
dirname
)
\
and
not
(
f
"{TESTS_FOLDER_NAME}{os.path.normpath('/')}"
in
str
(
dirname
))
\
and
not
(
f
"{TESTS_FOLDER_NAME}{os.path.normpath('/')}"
in
str
(
dirname
))
\
and
not
(
"venv"
in
str
(
dirname
)):
and
not
(
"venv"
in
str
(
dirname
))
\
and
not
(
"Lib"
in
str
(
dirname
)):
try
:
try
:
print
(
f
"Executing tests in {dirname}"
)
print
(
f
"Executing tests in {dirname}"
)
os
.
chdir
(
os
.
path
.
normpath
(
dirname
))
os
.
chdir
(
os
.
path
.
normpath
(
dirname
))
# TODO do this during docker image setup
# TODO do this during docker image setup
exit_val
=
os
.
system
(
f
"{PY} -m pip install -r ../requirements.txt"
)
# install pip dependencies
exit_val
=
os
.
system
(
f
"{PY} -m pip install -r ../requirements.txt"
)
# install pip dependencies
exit_val
=
os
.
system
(
f
"{PY} -m unittest discover"
)
# execute the tests
#resultCodeList.append(exit_val)
#exit_val = os.system(f"{PY} -m unittest discover") # execute the tests
exit_val
=
os
.
system
(
f
"coverage run --append --omit=*/site-packages* -m unittest discover"
)
#TEST CODE COVERAGE
coverage_paths_set
.
add
(
os
.
path
.
normpath
(
dirname
))
resultCodeList
.
append
(
exit_val
)
#once per folder i.e if 3 tests are in a folder and crash, there will be just one exit val
resultCodeList
.
append
(
exit_val
)
#once per folder i.e if 3 tests are in a folder and crash, there will be just one exit val
except
Exception
as
e
:
except
Exception
as
e
:
print
(
e
)
print
(
e
)
continue
continue
try
:
cur_dir
=
pathlib
.
Path
(
os
.
path
.
normpath
(
dirname
))
.
parent
.
absolute
()
filename_regular_expresion
=
re
.
compile
(
'(test_.*)|(TEST_.*)'
)
for
filename
in
os
.
listdir
(
cur_dir
):
if
filename_regular_expresion
.
match
(
filename
):
#gets here only if there is a test file which matches the regular expression in the app folder,
#cur_dir = os.path(dirname).parent()
os
.
chdir
(
cur_dir
)
exit_val
=
os
.
system
(
f
"coverage run --append --omit=*/site-packages* -m unittest discover"
)
coverage_paths_set
.
add
(
os
.
path
.
normpath
(
cur_dir
))
resultCodeList
.
append
(
exit_val
)
except
Exception
as
e
:
print
(
e
)
continue
#CHANGE FOLDER TO REPORTS, in order to combine the coverage
try
:
if
not
os
.
path
.
exists
(
REPORTS
):
os
.
makedirs
(
REPORTS
)
except
:
pass
os
.
chdir
(
REPORTS
)
target
=
REPORTS
target
=
str
(
target
)
+
f
'
\\
.coverage'
try
:
os
.
remove
(
target
)
#Try to Remove old coverage file, if exists
except
Exception
as
e
:
pass
print
(
"Combinging coverages"
)
counter
=
0
for
path
in
coverage_paths_set
:
try
:
path
+=
'
\\
.coverage'
original
=
path
target
=
REPORTS
target
=
str
(
target
)
+
f
'
\\
.coverage.{counter}'
counter
+=
1
shutil
.
copyfile
(
original
,
target
)
#copy new generated coverage files
os
.
remove
(
original
)
except
Exception
as
e
:
print
(
e
)
continue
print
(
"Generating Combined report"
)
os
.
system
(
"coverage combine"
)
os
.
system
(
"coverage xml"
)
os
.
system
(
"coverage html"
)
#if you want to generate the html as well
firstError
=
-
1
firstError
=
-
1
i
=
0
i
=
0
...
@@ -49,3 +118,4 @@ if(firstError<0): #no errors found
...
@@ -49,3 +118,4 @@ if(firstError<0): #no errors found
sys
.
exit
(
0
)
sys
.
exit
(
0
)
else
:
else
:
sys
.
exit
(
1
)
#return code>0
sys
.
exit
(
1
)
#return code>0
src/data-hub/role-stage-discovery-microservice/app/test_coverage.py
0 → 100644
View file @
714b4b1e
import
unittest
import
sys
for
path
in
[
'../'
,
'./'
]:
sys
.
path
.
insert
(
1
,
path
)
class
TestCoverage
(
unittest
.
TestCase
):
def
test_init_main
(
self
):
# python -m unittest discover
from
db.entities
import
Cluster
from
datetime
import
date
,
datetime
import
json
# add modules folder to interpreter path
import
sys
import
os
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
### init logging ###
import
logging
LOG_FORMAT
=
(
'
%(levelname) -5
s
%(asctime)
s
%(name)
s:
%(funcName) -35
s
%(lineno) -5
d:
%(message)
s'
)
logging
.
basicConfig
(
level
=
logging
.
INFO
,
format
=
LOG_FORMAT
)
LOGGER
=
logging
.
getLogger
(
__name__
)
#############################
import
connexion
from
security
import
swagger_util
from
pathlib
import
Path
from
env_info
import
is_running_locally
,
get_resources_path
from
flask
import
request
from
flask
import
redirect
import
main
#error when importing main, ModuleNotFoundError: No module named 'security'
#exec(open('main.py').read())
def
test_init_run_clustering
(
self
):
import
sys
import
os
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
import
json
from
db.entities
import
Layer
,
Cluster
from
typing
import
List
,
Dict
,
Tuple
,
Any
from
db.repository
import
Repository
from
processing.clustering
import
Clusterer
,
ClusterResult
import
run_clustering
def
test_init_run_node
(
self
):
import
sys
import
os
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
import
json
import
urllib3
urllib3
.
disable_warnings
(
urllib3
.
exceptions
.
InsecureRequestWarning
)
import
processing.fetching.fetching
as
f
import
run_node_fetching
def
test_init_run_similarity
(
self
):
import
processing.similarityFiles.similarityMain
as
SimilarityCalc
from
db.repository
import
Repository
import
run_similarity_calc
def
test_init_run_time
(
self
):
import
sys
import
os
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
import
json
from
datetime
import
datetime
,
date
from
db.repository
import
Repository
from
db.entities
import
ClusterSet
,
Cluster
,
Layer
,
TimeSlice
from
typing
import
Tuple
,
Dict
,
Any
,
List
import
run_time_slicing
if
__name__
==
'__main__'
:
unittest
.
main
()
src/data-hub/semantic-linking-microservice/app/test_coverage.py
0 → 100644
View file @
714b4b1e
import
unittest
import
sys
for
path
in
[
'../'
,
'./'
]:
sys
.
path
.
insert
(
1
,
path
)
class
TestCoverage
(
unittest
.
TestCase
):
def
test_init_main
(
self
):
# add modules folder to interpreter path
import
sys
import
os
import
prance
from
pathlib
import
Path
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
# init logging to file
import
logging
LOG_FORMAT
=
(
'
%(levelname) -5
s
%(asctime)
s
%(name)
s:
%(funcName) -35
s
%(lineno) -5
d:
%(message)
s'
)
logging
.
basicConfig
(
level
=
logging
.
INFO
,
format
=
LOG_FORMAT
)
LOGGER
=
logging
.
getLogger
(
__name__
)
#################################
import
connexion
from
security
import
swagger_util
from
env_info
import
is_running_locally
,
get_resources_path
from
messaging.ReconnectingMessageManager
import
ReconnectingMessageManager
from
messaging.MessageHandler
import
MessageHandler
from
flask
import
request
from
flask
import
redirect
# init message handler
from
db.repository
import
Repository
import
main
def
test_routes
(
self
):
from
routes
import
debug
from
routes
import
layers
from
routes
import
nodes
def
test_messaging
(
self
):
import
network_constants
as
netconst
from
security.token_manager
import
TokenManager
from
db.entities
import
Layer
import
json
import
requests
from
typing
import
Dict
,
List
from
threading
import
Thread
import
logging
from
messaging
import
MessageHandler
def
test_db
(
self
):
import
network_constants
as
netconst
from
database.MongoRepositoryBase
import
MongoRepositoryBase
from
db.entities
import
Layer
import
pymongo
import
json
from
typing
import
List
,
Dict
# init logging to file
import
logging
from
db
import
repository
from
db.entities
import
layer
if
__name__
==
'__main__'
:
unittest
.
main
()
src/participation-hub/business-logic-microservice/app/test_coverage.py
0 → 100644
View file @
714b4b1e
import
unittest
import
sys
for
path
in
[
'../'
,
'./'
]:
sys
.
path
.
insert
(
1
,
path
)
class
TestCoverage
(
unittest
.
TestCase
):
def
test_init_main
(
self
):
# python -m unittest discover
# add modules folder to interpreter path
import
sys
import
os
from
pathlib
import
Path
from
typing
import
Dict
,
Any
modules_path
=
'../../../modules/'
if
os
.
path
.
exists
(
modules_path
):
sys
.
path
.
insert
(
1
,
modules_path
)
# load swagger config
import
connexion
from
security
import
swagger_util
from
env_info
import
is_running_locally
,
get_resources_path
from
flask
import
request
from
flask
import
redirect
app
=
connexion
.
App
(
__name__
,
specification_dir
=
'configs/'
)
from
db.entities.layer_adapter
import
LayerAdapter
import
main
def
test_db_main
(
self
):
import
network_constants
as
netconst
from
database.MongoRepositoryBase
import
MongoRepositoryBase
from
db.entities
import
layer_adapter
from
db.entities
import
table
from
db.entities
import
use_case
import
pymongo
import
json
from
typing
import
List
,
Dict
from
db
import
repository
from
db
import
table_repository
from
db
import
use_case_repository
def
test_routes
(
self
):
from
routes
import
layer
from
routes
import
tables
from
routes
import
use_case
def
test_services
(
self
):
from
services
import
layer_adapter_service
def
test_use_case_scripts
(
self
):
import
network_constants
as
nc
from
security.token_manager
import
TokenManager
import
requests
from
typing
import
List
from
_add_use_case_scripts
import
requestPost
#######
#from _add_use_case_scripts.bank-app import add_bank_app_schema ##eror not importing? invalid folder name?
#from _add_use_case_scripts.bank-app.tables import add_bank_app_schema
from
_add_use_case_scripts.car_sharing
import
add_carsharing_schema
from
_add_use_case_scripts.car_sharing.tables
import
add_car
from
_add_use_case_scripts.car_sharing.tables
import
add_hash
from
_add_use_case_scripts.car_sharing.tables
import
add_offer
from
_add_use_case_scripts.car_sharing.tables
import
add_publication
from
_add_use_case_scripts.car_sharing.tables
import
add_travel
from
_add_use_case_scripts.car_sharing.tables
import
add_user
from
_add_use_case_scripts.crowd_journalism
import
add_crowdjournalism_schema
from
_add_use_case_scripts.crowd_journalism.tables
import
add_classification
from
_add_use_case_scripts.crowd_journalism.tables
import
add_event
from
_add_use_case_scripts.crowd_journalism.tables
import
add_purchase
from
_add_use_case_scripts.crowd_journalism.tables
import
add_tag
from
_add_use_case_scripts.crowd_journalism.tables
import
add_video
from
_add_use_case_scripts.debug
import
add_debug_schema
from
_add_use_case_scripts.debug.tables
import
add_pizza_table
#from _add_use_case_scripts.smart-energy import add_smart_energy_schema
#from _add_use_case_scripts.smart-energy.tables import add_smart_energy
from
_add_use_case_scripts.vialog
import
add_vialog_schema
from
_add_use_case_scripts.vialog.tables
import
add_user
from
_add_use_case_scripts.vialog.tables
import
add_video
if
__name__
==
'__main__'
:
unittest
.
main
()
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