Newer
Older
<a href="#steps-to-test" class="md-nav__link">
<span class="md-ellipsis">
Steps to Test
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#script-test-execution" class="md-nav__link">
<span class="md-ellipsis">
Script Test Execution
</span>
</a>
<nav class="md-nav" aria-label="Script Test Execution">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#mock-server" class="md-nav__link">
<span class="md-ellipsis">
Mock Server
</span>
</a>
</li>
</ul>
</nav>
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
</li>
<li class="md-nav__item">
<a href="#manual-build-and-test-execution" class="md-nav__link">
<span class="md-ellipsis">
Manual Build And Test Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-result-review" class="md-nav__link">
<span class="md-ellipsis">
Test result review
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../postman/" class="md-nav__link">
<span class="md-ellipsis">
Postman
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Contribute
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Contribute
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contribute/documenting/" class="md-nav__link">
<span class="md-ellipsis">
Documenting
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../FAQ/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#steps-to-test" class="md-nav__link">
<span class="md-ellipsis">
Steps to Test
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#script-test-execution" class="md-nav__link">
<span class="md-ellipsis">
Script Test Execution
</span>
</a>
<nav class="md-nav" aria-label="Script Test Execution">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#mock-server" class="md-nav__link">
<span class="md-ellipsis">
Mock Server
</span>
</a>
</li>
</ul>
</nav>
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
</li>
<li class="md-nav__item">
<a href="#manual-build-and-test-execution" class="md-nav__link">
<span class="md-ellipsis">
Manual Build And Test Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#test-result-review" class="md-nav__link">
<span class="md-ellipsis">
Test result review
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="robot-framework">Robot Framework</h1>
<h2 id="steps-to-test">Steps to Test</h2>
<p>To run any test locally you will need <em>docker</em> and <em>docker-compose</em> installed in order run services and execute test plan. Steps will be:</p>
<ul>
<li>
<p><strong>Run All Services</strong>: See section <a href="../../gettingstarted/howtorun/#run-all-capif-services-locally-with-docker-images">Run All CAPIF Services</a></p>
</li>
<li>
<p><strong>Run desired tests</strong>: At this point we have 2 options:</p>
</li>
<li>
<p><strong>Using helper script</strong>: <a href="#script-test-execution">Script Test Execution</a></p>
</li>
<li><strong>Build robot docker image and execute manually robot docker</strong>: <a href="#manual-build-and-test-execution">Manual Build And Test Execution</a></li>
</ul>
<h2 id="script-test-execution">Script Test Execution</h2>
<p>This script will build robot docker image if it's need and execute tests selected by "include" option. Just go to service folder, execute and follow steps.</p>
<pre><code>./run_capif_tests.sh --include <TAG>
</code></pre>
<p>Results will be stored at <REPOSITORY_FOLDER>/results</p>
<p>Please check parameters (include) under <em>Test Execution</em> at <a href="#manual-build-and-test-execution">Manual Build And Test Execution</a>.</p>
<h3 id="mock-server">Mock Server</h3>
<p>Some tests on Test Plans require mockserver. That mock server must be deployed and reachable by Robot Framework and CCF under test.</p>
<p>To run Mock Server locally you can just execute the next script:</p>
<pre><code>cd services
./run_mock_server.sh
or
./run.sh -s
</code></pre>
<p>If you want to launch only tests that not needed mockserver, just add "--exclude mockserver" parameter to robot execution:</p>
<pre><code>./run_capif_tests.sh --include <TAG> --exclude mockserver
</code></pre>
<p>After run tests the Mock Server can be removed from local deployment:</p>
<pre><code>./clean_mock_server.sh
or
./clean_capif_docker_services.sh -s
</code></pre>
<h2 id="manual-build-and-test-execution">Manual Build And Test Execution</h2>
<ul>
<li><strong>Build Robot docker image</strong>:</li>
</ul>
<pre><code>cd tools/robot
docker build . -t capif-robot-test:latest
</code></pre>
<ul>
<li><strong>Tests Execution</strong>:</li>
</ul>
<p>Execute all tests locally:</p>
<pre><code><PATH_TO_REPOSITORY>=path in local machine to repository cloned.
<PATH_RESULT_FOLDER>=path to a folder on local machine to store results of Robot Framework execution.
<CAPIF_HOSTNAME>=Is the hostname set when run.sh is executed, by default it is capifcore.
<CAPIF_HTTP_PORT>=This is the port to reach when robot framework want to reach CAPIF deployment using http, this should be set to port without TLS set on Nginx, 8080 by default.
<CAPIF_HTTPS_PORT>=This is the port to be used when we want to use https connection, this should be set to port with TLS set on Nginx, 443 by default
<CAPIF_REGISTER>=This is the hostname of register service deployed. By default it is register.
<CAPIF_REGISTER_PORT>=This is the port to be used to reach register service deployed. By default it is 8084.
<CAPIF_VAULT>=This is the hostname of vault service. By default it is vault.
<CAPIF_VAULT_PORT>=This is the port to be used to reach vault service. By default it is 8200.
<CAPIF_VAULT_TOKEN>=Vault token to be used on request through vault. By default it is "read-ca-token".
<MOCK_SERVER_URL>=Setup Mock server url to be used in notifications at tests marked with mockserver tag. By default it is not set.
To execute all tests run :
docker run -ti --rm --network="host" \
--add-host host.docker.internal:host-gateway \
--add-host vault:host-gateway \
--add-host register:host-gateway \
--add-host mock-server:host-gateway \
-v <PATH_TO_REPOSITORY>/tests:/opt/robot-tests/tests \
-v <PATH_RESULT_FOLDER>:/opt/robot-tests/results capif-robot-test:latest \
--variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \
--variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \
--variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \
--variable CAPIF_REGISTER:$CAPIF_REGISTER \
--variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \
--variable CAPIF_VAULT:$CAPIF_VAULT \
--variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \
--variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \
--variable MOCK_SERVER_URL:$MOCK_SERVER_URL \
--include all
</code></pre>
<p>Execute specific tests locally:</p>
<pre><code>To run more specific tests, for example, only one functionality:
<TAG>=Select one from list:
"capif_api_acl",
"capif_api_auditing_service",
"capif_api_discover_service",
"capif_api_events",
"capif_api_invoker_management",
"capif_api_logging_service",
"capif_api_provider_management",
"capif_api_publish_service",
"capif_security_api",
"api_status",
"vendor_extensibility",
"smoke"
And Run:
docker run -ti --rm --network="host" \
--add-host host.docker.internal:host-gateway \
--add-host vault:host-gateway \
--add-host register:host-gateway \
--add-host mock-server:host-gateway \
-v <PATH_TO_REPOSITORY>/tests:/opt/robot-tests/tests \
-v <PATH_RESULT_FOLDER>:/opt/robot-tests/results capif-robot-test:latest \
--variable CAPIF_HOSTNAME:$CAPIF_HOSTNAME \
--variable CAPIF_HTTP_PORT:$CAPIF_HTTP_PORT \
--variable CAPIF_HTTPS_PORT:$CAPIF_HTTPS_PORT \
--variable CAPIF_REGISTER:$CAPIF_REGISTER \
--variable CAPIF_REGISTER_PORT:$CAPIF_REGISTER_PORT \
--variable CAPIF_VAULT:$CAPIF_VAULT \
--variable CAPIF_VAULT_PORT:$CAPIF_VAULT_PORT \
--variable CAPIF_VAULT_TOKEN:$CAPIF_VAULT_TOKEN \
--variable MOCK_SERVER_URL:$MOCK_SERVER_URL \
--include <TAG>
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
</code></pre>
<h2 id="test-result-review">Test result review</h2>
<p>In order to Review results after tests, you can check general report at <PATH_RESULT_FOLDER>/report.html or if you need more detailed information <PATH_RESULT_FOLDER>/log.html, example:</p>
<ul>
<li>
<p>Report:
<img alt="Report" src="robot_report_example.png" /></p>
</li>
<li>
<p>Detailed information:
<img alt="Log" src="robot_log_example.png" /></p>
</li>
</ul>
<p><strong>NOTE: If you need more detail at Robot Framework Logs you can set log level option just adding to command --loglevel DEBUG</strong></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="../testplan/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Test Plan">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
Test Plan
</div>
</div>
</a>
<a href="../postman/" class="md-footer__link md-footer__link--next" aria-label="Next: Postman">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Postman
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2019-2024 OpenCAPIF Project
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://ocf.etsi.org/" target="_blank" rel="noopener" title="ocf.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M352 256c0 22.2-1.2 43.6-3.3 64H163.4c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64h185.3c2.2 20.4 3.3 41.8 3.3 64m28.8-64h123.1c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64m112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6 78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7 10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5 11.6 26 20.9 58.2 27 94.7m-209 0H18.6c30-74.1 93.6-130.9 172-151.6-25.5 34.2-45.3 87.7-55.3 151.6M8.1 192h123.1c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64m186.6 254.6c-11.6-26-20.9-58.2-27-94.6h176.6c-6.1 36.4-15.5 68.6-27 94.6-10.5 23.6-22.2 40.7-33.5 51.5-11.2 10.7-20.5 13.9-27.8 13.9s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6-78.4-20.7-142-77.5-172-151.6zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6 25.5-34.2 45.2-87.7 55.3-151.6h116.7z"/></svg>
</a>
<a href="https://labs.etsi.org/rep/ocf" target="_blank" rel="noopener" title="labs.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
</a>
<a href="https://www.linkedin.com/company/opencapif/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</a>
<a href="https://twitter.com/OpenCAPIF" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8l164.9-188.5L26.8 48h145.6l100.5 132.9zm-24.8 373.8h39.1L151.1 88h-42z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant.progress", "navigation.top", "navigation.footer", "navigation.path", "search", "search.highlight"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../../assets/javascripts/bundle.c8b220af.min.js"></script>
<script src="../../assets/swagger/swagger-ui-bundle.js"></script>
<script src="../../assets/swagger/swagger-ui-standalone-preset.js"></script>
</body>
</html>