summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2019-02-18Only run bgpvpn tempest api testsCédric Ollivier2-2/+2
It conforms with SFC regex and fits OPNFV criteria. Running scenarios may force the use of bagpipe [1]. The SUT (functest-virtual) is being updated to verify SFC and BGPVPN apis. [1] https://docs.openstack.org/networking-bgpvpn/latest/user/drivers/bagpipe/index.html Change-Id: I1442b9cac7eaba1aeef04e36a2f790bd29f90976 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 2b4e7955815ce27284043c03730fff6ace029a0d)
2019-02-15Harden upper-constraints.txt operationsCédric Ollivier7-36/+33
It takes into account the wget exit values and avoids manipulating a falsy empty file. It won't help fixing the network outages in LF network which have been highlighted by false failures in api_check (the wrong snaps package is installed [1]) [1] https://build.opnfv.org/ci/job/functest-opnfv-functest-healthcheck-latest-api_check-run/100/console Change-Id: Ic9b75965b1ffb1f7bb342ff216bda9933ca75f0b Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit fa8c50f4fd19576a2fde5b04077810d4ca91b330)
2019-02-15Generate xunit reports (rally and tempest)Cédric Ollivier6-128/+153
It adds xunit reports for rally-based and tempest-based testcases. It completes the reports provided by snaps (thanks to Xtesting). All rally related operations are moved to rally. It allows removing the rally dependency to tempest which was false. Change-Id: Ia7d2476f58f4f68b7c88442e50cad844037a36e9 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 3393f2016483555c27d612c69ec11274cc8aa72a)
2019-02-15Update rally to support one global htmlCédric Ollivier1-1/+1
It isn't supported by Rally initally selected in Functest Hunter [1]. [1] https://build.opnfv.org/ci/job/functest-opnfv-functest-smoke-hunter-rally_sanity-run/15/console Change-Id: I3182e73db580fc32959339c13b3b725283535b29 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-02-15Stop building components in travis-ciCédric Ollivier2-11/+0
It was removed by "Move rally_full in benchmarking" [1] [1] https://gerrit.opnfv.org/gerrit/#/c/66911/1 Change-Id: I7ade6f474364646bfe0f3ae1b2718749bd0ff26e Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 257af33f88e7f2ff55aa74b171455c83978610f1)
2019-02-14Specify which rally tests to runStamatis Katsaounis2-24/+16
This patch adds the ability to specify which rally test to run by setting the appropriate configuration value. Change-Id: I6cbc9d12aada4f8eab68d2219d94ae1391a79021 Signed-off-by: Stamatis Katsaounis <mokats@intracom-telecom.com> (cherry picked from commit d0cb38d7ad5046700564f2700df9b8c92706b32c)
2019-02-13Publish tempest details into databaseCédric Ollivier1-1/+1
It switches from tempest.log to rally.log to conform with rally/stestr. Change-Id: I00c2a268a2bc312a22a8d70278fad618c1c25235 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 4afaf09c94da6e98ca449a7495f158e2d30255e5)
2019-02-13Fix smoke testcase listCédric Ollivier1-14/+0
Rally_jobs were moved into benchmarking. It completes "Move testcases in the right tiers" [1] [1] https://gerrit.opnfv.org/gerrit/#/c/66875/ Change-Id: I1c2da77eff6682f85ab8504750077c9ee542edb8 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit dd217735edd2e596d396a2b8815b418548f78111)
2019-02-13Generate one single report for Rally testcasesCédric Ollivier2-9/+41
It eases sharing one single report including all task results. For the time being, rally_jobs only generates neutron.html. Then it only adds one report for rally_full and rally_sanity. We may consider generating only one json file but it asks for a refactoring (result parsing) which can be done in a second change. Change-Id: I8fa75ae80750336950f355c2aedc3dd4dc621cc5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 2df7a0728d687de9a24d8432ef30bbd2ecd771c8)
2019-02-13Increase timeout to reach vnf APICédric Ollivier2-3/+3
It increases the timeout in cloudify-based and clearwater-based testcases to allow running them in parallel (functest-virtual) [1]. [1] https://build.opnfv.org/ci/job/functest-latest-gate/54/ Change-Id: Ic637cb46a1380a683cb1e2b633cb97ac3be6affa Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 38cba4aa2c2cdfd17ea1aa0c29ee14ed7b2bf035)
2019-02-12Set gnocchi as optional in Rally testcasesCédric Ollivier2-0/+15
ci/testcases.yaml was copied/pasted when moving the rally testcases. It completes "Set Gnocchi scenario as optional in rally tests" [1]. [1] https://gerrit.opnfv.org/gerrit/#/c/66653/ Change-Id: Ia23ae9764750775fe8983660c56ced06f3de977a Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 44db92e6135a573ed4bb23648ea1c73e8a70f91b)
2019-02-12Update ansible/site.yml (rally_full)Cédric Ollivier1-6/+1
It conforms with "Move rally_full in benchmarking" [1] [1] https://gerrit.opnfv.org/gerrit/#/c/66911/ Change-Id: I6382f6e612343896a1d817675e122d2c1e0b1a38 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 883d645814f2afd85bb37d042ab5c43565983f6a)
2019-02-12Move rally_full in benchmarkingCédric Ollivier6-84/+24
It allows merging all benchmarking testcases in one tiers and saves lots of time as they could all run in parallel. Change-Id: I551179709d2ce862056c1f5fcc1e16ef0b776dd4 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit cec721055631734d2d1d39bd09cfa1404ee1d32e)
2019-02-12Remove go cache dirCédric Ollivier1-1/+1
It saves about 290M. Change-Id: I603c689be989a603e933970f52510026026c7001 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 56c077dde1556b88030619cd4d26703060cb0824)
2019-02-12Select last git commit id from vyos blueprintCédric Ollivier1-1/+1
The pull request #4 fixing the blueprint [1] was merged [1]. [1] https://github.com/oolorg/opnfv-vnf-vyos-blueprint/commit/9b76d46a388d32d4985797620e67c2ed3315b3e4 [2] https://build.opnfv.org/ci/job/functest-opnfv-functest-vnf-hunter-gate/4/console Change-Id: I3ddd86ee8c9fd30e68de74f06f40f782b1b04fd2 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 83a4d0ca9875890ddee2128976325c0c6a6263fe)
2019-02-11Update and enable Cloudify-based testcasesCédric Ollivier8-20/+50
It switches from the Cloudify virtual machine to the community container which allows deploying vyos_vrouter and cloudify_ims. Last stable Cloudify OpenStack plugin (2.4.17) is now deployed. It also updates the Cloudify python package to latest release. It adds a delay before deleting the blueprint which may be improved in a second change (it allows enabling the testcase in the stable release). Change-Id: Ie48a2c9d2badab0d7ba0b9e7845f453fad335ef7 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 97dde581982b9d49122aee3630328fb6064c8609)
2019-02-11Increase juju_epc timeoutCédric Ollivier1-1/+1
It fails 4 times in functest-virtual (out of 34) due to a possible slow bandwidth (e.g. [1]). [1] https://build.opnfv.org/ci/job/functest-opnfv-functest-vnf-latest-juju_epc-run/24/console Change-Id: Ie1aa69464f8dd0fa1a15900e7d49576368187a44 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-02-11Remove tempest_smoke from smokeCédric Ollivier1-18/+0
It completes "Move testcases in the right tiers" [1] [1] https://gerrit.opnfv.org/gerrit/#/c/66863/ Change-Id: Ic2e6ebf9371de87caafbfdb54029a24440e6fd5b Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-02-07Move testcases in the right tiersCédric Ollivier8-63/+124
Here are the moves: - tempest_smoke in healthcheck - tempest_full and tempest_scenario in smoke - rally_jobs in benchmarking It avoids conflicts between benchmarking tools and few functional tests (short timeouts). Then it should allow running in parallel all testcases in one tiers. It also allows cleaning the additional steps defined in releng. rally_full could move in benchmarking in a second step. Change-Id: I0bc657557a61c7d9bf7679b4f2dbda08c36728ca Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 1d0f0bbf773aaaf7139b76442a9e59d13bd32830)
2019-02-03Update Cloudify imagesCédric Ollivier4-2/+6
The former image can't be downloaded and then breaks all gates. It will be completed by changes in vnf if needed. Change-Id: Ie364aa2315257157a5e09eb4ba121926a60e7b26 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit f501b520f80d573a77cdae941fe19db216b94307)
2019-02-02Override tempest upper-contraintsCédric Ollivier3-9/+6
Change-Id: Ieadf7ec3d1b05eefa6634db5f3d0ea264e9994af Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-01-31Update tempest to fix interfaces_by_fixed_ipCédric Ollivier1-2/+8
It includes [1] which allows testing even if one shared network is defined. [1] https://review.openstack.org/#/c/615425/3 Change-Id: I8bd72ad351a3702e9f72014a1ae43542e5d8e927 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-01-28Remove CreateInstanceVolumeTests (snaps_smoke)Cédric Ollivier1-7/+1
The volume and the virtual machine created are not deleted. Change-Id: I238fcb0839a2f609333080bc8c88b84327d51475 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 14d26a963665f17dc01d95bb996e1ae91ac44f03)
2019-01-28Decrease volume_size in all Rally testsCédric Ollivier3-7/+7
Devstack allocates a 24G disk image by default [1]. It can be easily reached by setting volume size to 5G or 10G. [1] https://github.com/openstack-dev/devstack/blob/master/stackrc#L779 Change-Id: I7c35d8f333718d6c192a9f12a714e626d60b1895 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 890d9a764bf88752d36983802f375d5e29c2bee2)
2019-01-28Allow running latest tempest_fullCédric Ollivier1-0/+5
It allows running test_user_update_own_password [1] [1] http://artifacts.opnfv.org/functest/functest-opnfv-functest-components-latest-tempest_full-run-8/results/tempest_full/tempest-report.html Change-Id: I9f273ba58871f1e16886af623dcbb91f5c20c2f6 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9cd8ca6db84fd80f17b2d9c37d66d6a861130e7a)
2019-01-28Wait for apps being active (juju_epc)Cédric Ollivier1-8/+14
It seems that juju-wait doesn't wait for all apps. Juju_epc passes in functest-virtual thanks to that additional tries. Change-Id: I161902c6308cfa6323c21e09140d16e036768ece Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 900b51c6885339c68cd0762f2b10363c436fbafb)
2019-01-28Clean project/user if snaps tests are skippedCédric Ollivier1-0/+1
Change-Id: I88a58516a3620cc6b19013313672ad1a80791e70 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit c9b7fe1da2432581d30bb166d381ac72fce33e97)
2019-01-27Merge "Stop using urljoin when adding v3" into stable/hunterCedric Ollivier2-6/+2
2019-01-27Merge "Set Gnocchi scenario as optional in rally tests" into stable/hunterCedric Ollivier3-6/+19
2019-01-27Remove Snaps NeutronUtilsFloatingIpTestsCédric Ollivier1-5/+1
It has been fixed in Snaps [1] but we can't sync its requiremets [2]. Then we have to remove the test. [1] https://gerrit.opnfv.org/gerrit/#/c/66625/ [2] https://gerrit.opnfv.org/gerrit/#/c/66627/1 Change-Id: Ied405092cb4992bc04ca13c1536d1e8cee056ace Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 17b788c5340e7d76f6c37397cd8aa35c8db3f4c2) (cherry picked from commit bda196b00cd7567aad33bde12f66536bd1143bc3)
2019-01-27Stop using urljoin when adding v3Cédric Ollivier2-6/+2
urljoin works here only if url ends by /. It replaces identity by v3 when running vs devstack. Change-Id: Id896f2b54dfcabadaad1137deef91b1cb07c697d Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9e4e6f049fa7d5cce8db61dfa2ebebc55f91c1d8)
2019-01-27Set Gnocchi scenario as optional in rally testsJuha Kosonen3-6/+19
The execution of an optional scenario is skipped if the corresponding openstack service does not exist. Change-Id: I8721f26ebc253ce02138b85d6c88e659c5afae80 Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com> (cherry picked from commit 3b7b393ca643bcf7db0361bcc4414b74fff953be)
2019-01-27Remove test_get_endpoint_with_each_interfaceCédric Ollivier1-5/+1
It checks all 3 endpoints for image but nothing forces to define them. Here is the only endpoint created by devstack. glance | image | RegionOne | | public: http://192.168.1.10/image [1] keystoneauth1.exceptions.catalog.EndpointNotFound: internal endpoint for image service in RegionOne region not found Change-Id: If501b849fbbed6df98742db21e924094c1df9c7f Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9675c5a0cb2ccd698451a5930708263be5eba527)
2019-01-20Slightly improve heat_imsCédric Ollivier1-2/+2
It increases timeouts which could be reached if shared bandwidth (functest-virtual [1]). [1] http://artifacts.opnfv.org/functest/functest-opnfv-functest-vnf-latest-heat_ims-run-4/results/functest.log Change-Id: I29adcd9ea88bbccbaef9ba7f8e155d37a3217433 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9bb9d8d495317fe7e3aaeb7082d9662f211eafec)
2019-01-20Force the right external network if jujuCédric Ollivier1-0/+1
It may select a falsy external network [1]. [1] https://build.opnfv.org/ci/job/functest-opnfv-functest-vnf-latest-juju_epc-run/4/console Change-Id: Ic403d0cfb4bc829275617d6b1338311e8e7ea894 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit f28094ae0ecfedc3c7c3f32cc1cfc1eff12ea773)
2019-01-20Fix one typo in docstring (tempest.py)Cédric Ollivier1-1/+1
Change-Id: I46053c92660139f4004d9cec8d1cfb6817cc0e07 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit bf976b4f606860630ffa967fe70a36a7e5954828)
2019-01-20Take control over Rally logicsCédric Ollivier1-4/+25
Rally selects the first external network [1] which could raise side effects if: - another testcase is creating a dummy external network in // - all external subnets are not reachable from jumphost It's now overriden by EXTERNAL_NETWORK as defined in Functest Rally creates a new shared network if one already exists [2]. As juju now allows other shared networks, it can be safely created by Functest to allow only one logic and to handle provider networks, different name servers, etc... [1] https://github.com/openstack/rally-openstack/blob/master/rally_openstack/verification/tempest/config.py#L146 [2] https://github.com/openstack/rally-openstack/blob/master/rally_openstack/verification/tempest/context.py#L85 Change-Id: Icf8c08077d4b0a9eb1c2e1b7309c62957b0a3b63 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit ee52195f4476d3debf9c3f92c6d808256a199500)
2019-01-20Move logics out of TempestCommon.__init__()Cédric Ollivier2-22/+34
It conforms with best programming practices. It allows muting console and increasing log level (debug). Change-Id: I0e0cfef6abe3b354a43817fcb242c71da701e237 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit b482b494ce695e83cca0a10e7750200fd1be42ea)
2019-01-14Remove former ci jobsCédric Ollivier5-439/+0
They can now be generated via the new ansible role. Change-Id: I7746d08b940e8d6906cb023c39bc87d8dee441cc Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 12023f6a1a040c07f805553a1f5c65ab3940d638)
2019-01-14Remove fds in all branchesCédric Ollivier4-41/+1
FDS didn't participate to Gambia. Removing it in all branches avoids compexifying the jjbs. This patch will be reverted as soon as the support is ready. Change-Id: I9fb293b2972e0deb318ac9d3d08377039ea247e4 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 2fd07adb36288e9247ad73a7344340c36754132e)
2019-01-07Check if key exists instead of leveraging on update_if_existsCédric Ollivier1-5/+12
It seems falsy (see line 72) 2019-01-07 11:50:32,550 - functest.core.cloudify - DEBUG - try 9: Cloudify Manager isn't up and running Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/functest/core/cloudify.py", line 72, in execute "foo", "bar", update_if_exists=True) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/secrets.py", line 86, in create response = self.api.put('/secrets/{0}'.format(key), data=data) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 263, in put timeout=timeout) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 224, in do_request verify=self.get_request_verify(), timeout=timeout) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 158, in _do_request self._raise_client_error(response, request_url) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 119, in _raise_client_error response=response) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 131, in _prepare_and_raise_exception status_code, error_code=error_code, response=response) CloudifyClientError: 409: <Secret id=`foo` tenant=`default_tenant`> already exists on <Tenant name=`default_tenant`> Change-Id: I6f4e2719ad2e55e997ebbd158dce4c6a204b2c36 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 73f4aee1a22e502a7775a9be43829174f18fbc84)
2019-01-07Print traceback as debug during cloudify triesCédric Ollivier1-2/+4
The traceback is printed as debug to avoid priting the first unsuccessful tries in console. It will ease debugging issues as for [1] [1] https://gerrit.opnfv.org/gerrit/#/c/66253/ Change-Id: I89992ea4452b24788cc06dec4c384a263b704efb Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 9ba1fe31f31a3381eef29d820c688feb2c51a7cb)
2019-01-07Prevent from CloudifyClientError (key already exists)Cédric Ollivier1-1/+2
It has rarely occured in Orange Openlab [1]. Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/functest/core/cloudify.py", line 70, in execute self.cfy_client.secrets.create("foo", "bar") File "/usr/lib/python2.7/site-packages/cloudify_rest_client/secrets.py", line 86, in create response = self.api.put('/secrets/{0}'.format(key), data=data) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 263, in put timeout=timeout) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 224, in do_request verify=self.get_request_verify(), timeout=timeout) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 158, in _do_request self._raise_client_error(response, request_url) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 119, in _raise_client_error response=response) File "/usr/lib/python2.7/site-packages/cloudify_rest_client/client.py", line 131, in _prepare_and_raise_exception status_code, error_code=error_code, response=response) CloudifyClientError: 409: <Secret id=`foo` tenant=`default_tenant`> already exists on <Tenant name=`default_tenant`> Change-Id: Ic61d0c729f13caa552a0b0a00dad35e50d130e01 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit b8a115906e4f6e598e7e1f1b59e2b1fb201af6a5)
2019-01-07Merge "Publish "Functest on steroids" (Plugfest-Gambia)" into stable/hunterCedric Ollivier3-0/+230
2019-01-06Switch from port to dport in site.ymlCédric Ollivier1-1/+1
port is reserved in ansible Change-Id: I87842857514e8fb589e565ece83552418a93c550 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 0f440f10bd1567c76720e106813908e01f288ad4)
2019-01-06Publish "Functest on steroids" (Plugfest-Gambia)Cédric Ollivier3-0/+230
It will be completed by demos: - deploy your own Functest CI/CD toolchains (Functest bot) - deploy your own CI/CD toolchains for your test case - run Functest on Raspberry PI The presentation is avalaible in [1] [1] http://testresults.opnfv.org/functest/gambia/ Change-Id: If69f11a3f7dde070e3af0f8a5b082b5ec1443bbb Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 6a31d033b8aef014e62cf6f94f2f98358ed99b90)
2019-01-05Update reveal.js to 3.7.0Cédric Ollivier1-0/+0
Change-Id: I198c757a7bda86c2d87d746aa3d1846be395c987 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
2019-01-05Conform with new tag configsCédric Ollivier2-26/+54
It allows generating gate jobs. Change-Id: I741da199bca7617e73eb1e4638fcb4139b872141 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit eaaec1d3083ba4d579a77345de219409048ee9d7)
2018-12-27Disable nose html output pluginCédric Ollivier2-2/+0
It doesn't run vs py36. Change-Id: Ief5b6ac58a1c2e8aa840362433d94d403e6b52c5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit f89763ed82a429e83a903895eea037bd1c8bd064)
2018-12-27Update Xtesting to 0.61Cédric Ollivier2-64/+101
It now generates html reports for unit tests (snaps). Change-Id: Ica8fab2b383723957c1068c5accbcab9568002ac Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 98ee1837b939f32c2c3bc17787065d0bf0a22c3f)