Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
<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>
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
</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>
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
</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>
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
</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", "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.f1b6f286.min.js"></script>
</body>
</html>