a4a969c94f
This is an experimental feature in stx5.0. This commit enables following commands for the edgeworker node: system host-add/system host-update/system host-delete After the host being added/updated, the mgmt ip of an edgeworker node will be assigned during the configuration process of it. There will be limitations of edgeworker nodes before the final phase of the feature finished: - The Kubernetes provisioning requires ansible playbook triggered manually. - Gather node HW information is not supported. - Configure node from controller is not supported. - Manage node lifecycle is not supported. - Update/upgrade node is not supported. Story: 2008129 Task: 40862 Change-Id: I7e6de65ba848d9468a4e5afddd16b1cd9e3cd7dd Signed-off-by: Mingyuan Qi <mingyuan.qi@intel.com> Depends-On: https://review.opendev.org/c/starlingx/config/+/761716 |
||
---|---|---|
.. | ||
agent | ||
api | ||
cert_mon | ||
common | ||
conductor | ||
db | ||
helm | ||
objects | ||
puppet | ||
__init__.py | ||
base.py | ||
conf_fixture.py | ||
events_for_testing.yaml | ||
fake_policy.py | ||
keyring_fixture.py | ||
matchers.py | ||
policy_fixture.py | ||
policy.json | ||
README.txt | ||
stubs.py | ||
test_dbsync.py | ||
test_images.py | ||
test_utils.py | ||
utils.py |
This file discusses the current status of sysinv tests and areas where issues still exist and what to do in order to test them. -------------------------------------------------------------------------------- RUNNING TESTS: To actually run the tests, in console navigate to $MY_REPO/stx/stx-config/sysinv/sysinv/sysinv On your first ever run of tox tests enter: tox --recreate -e py27 This will make sure tox's environment is fresh and fully built. To test both py27 (the actual unit tests), and check the flake8 formatting: tox You can also run both py27 and flake8 by entering the following instead: tox -e flake8,py27 The above order of environments matters. If py27 comes first, flake8 won't run. To run either individually enter: tox -e py27 tox -e flake8 -------------------------------------------------------------------------------- RUNNING TESTS WITH POSTGRESQL: The default behaviour is to run the sysinv tests with the mySQL database. This should be fine in most cases. If you really want to test with postgreSQL, in a local Ubuntu VM or similar: - go to test_migrations.py and in the function test_postgresql_opportunistically, comment out the self.skipTest line to enable the test to be run. - Also go to the function test_postgresql_connect_fail and comment out the self.skipTest line so that test can be run as well. - Lastly, in the function _reset_databases, go to the bottom and uncomment self._reset_pg(conn_pieces) so the postgres DB can be reset between runs. If this last line is not uncommented, your first run of the py27 tests will work, but after that you will get migrate.exceptions.DatabaseAlreadyControlledError Do not push these lines uncommented upstream to the repo. To set up the postgres db for the first time enter the following in console: sudo apt-get install postgresql postgresql-contrib pip install psycopg2 sudo -u postgres psql CREATE USER openstack_citest WITH CREATEDB LOGIN PASSWORD 'openstack_citest'; CREATE DATABASE openstack_citest WITH OWNER openstack_citest; \q -------------------------------------------------------------------------------- OUTSTANDING ISSUES: tests/api/test_acl.py test_authenticated Fails due HTTPS connection failure as a result of an invalid user token which causes webtest.app.AppError: Bad response: 401 Unauthorized 'Authentication required' test_non_admin Fails due to invalid user token resulting in raise mismatch_error testtools.matchers._impl.MismatchError: 401 != 403 Occurs against Www-Authenticate: Keystone uri='https://127.0.0.1:5000' test_non_admin_with_admin_header Fails due to invalid user token resulting in raise mismatch_error testtools.matchers._impl.MismatchError: 401 != 403 tests/conductor/test_manager.py test_configure_ihost_new IOError: [Errno 13] Permission denied: '/tmp/dnsmasq.hosts' This directory does not exist. I am not sure if this directory is still supposed to exist, if it has moved, or if this entire test is based on deprecated/replaced functionality. test_configure_ihost_no_hostname os.rename(temp_dnsmasq_hosts_file, dnsmasq_hosts_file) OSError: [Errno 1] Operation not permitted Fails because the dnsmasq files don't exist. test_configure_ihost_replace IOError: [Errno 13] Permission denied: '/tmp/dnsmasq.hosts' This dnsmasq file doesn't exist. Same issue as in the first test. There also exists the issue of using postgres for db migrations in tests/db/sqlalchemy/test_migrations.py. The issue with this is that these migrations can only be run on local VMs such as Ubuntu, and not on the build servers or on Jenkins because it would require that someone manually set up the database on those systems, and the issue with putting it on the build server is that because there presently exist no ways of getting postgres running in a virtual environment (e.g. tox's), it must be set up on the actual system. This means that multiple people running these tests at the same time would interact with the same db and could run into issues. The reason postgres is being used is because between versions, some columns of enumerated types are being altered and SQLite doesn't support ALTER COLUMN or ALTER TABLE functionality. Alembic and sqlalchemy-migrate offer solutions to this, but presently there is no intention to incorporate either of these packages. -------------------------------------------------------------------------------- TESTING DECISIONS: We've chosen to use flake8 instead of PEP8 because PEP8 results in a lot more insignificant issues being found, and flake8 combines PEP8 with PyFlakes which combines code formatting with syntax and import checking, additionally, flake8 provides the option to test code complexity and return warnings if the complexity exceeds whatever limit you've set. --------------------------------------------------------------------------------