Add test for EfficacyIndicator value in mysql
Add a test with mysql as backend to show that the current EfficacyIndicator model does not store any decimal digit for the value. Change-Id: I0cdbd7d87cd6869a10b48eda3d59558831c8dd36
This commit is contained in:
14
bindep.txt
Normal file
14
bindep.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# This is a cross-platform list tracking distribution packages needed for install and tests;
|
||||||
|
# see https://docs.openstack.org/infra/bindep/ for additional information.
|
||||||
|
|
||||||
|
mysql [platform:rpm !platform:redhat test]
|
||||||
|
mysql-client [platform:dpkg !platform:debian test]
|
||||||
|
mysql-devel [platform:rpm !platform:redhat test]
|
||||||
|
mysql-server [!platform:redhat !platform:debian test]
|
||||||
|
mariadb-devel [platform:rpm platform:redhat test]
|
||||||
|
mariadb-server [platform:rpm platform:redhat platform:debian test]
|
||||||
|
python3-all [platform:dpkg test]
|
||||||
|
python3-all-dev [platform:dpkg test]
|
||||||
|
python3 [platform:rpm test]
|
||||||
|
python3-devel [platform:rpm test]
|
||||||
|
sqlite-devel [platform:rpm test]
|
||||||
@@ -5,3 +5,6 @@ testscenarios>=0.5.0 # Apache-2.0/BSD
|
|||||||
testtools>=2.3.0 # MIT
|
testtools>=2.3.0 # MIT
|
||||||
stestr>=2.0.0 # Apache-2.0
|
stestr>=2.0.0 # Apache-2.0
|
||||||
WebTest>=2.0.27 # MIT
|
WebTest>=2.0.27 # MIT
|
||||||
|
|
||||||
|
# Include drivers for opportunistic testing.
|
||||||
|
oslo.db[mysql]>=6.0.0 # Apache-2.0
|
||||||
|
|||||||
56
tools/test-setup.sh
Executable file
56
tools/test-setup.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash -xe
|
||||||
|
|
||||||
|
# This script will be run by OpenStack CI before unit tests are run,
|
||||||
|
# it sets up the test system as needed.
|
||||||
|
# Developers should setup their test systems in a similar way.
|
||||||
|
|
||||||
|
# This setup needs to be run as a user that can run sudo.
|
||||||
|
|
||||||
|
# The root password for the MySQL database; pass it in via
|
||||||
|
# MYSQL_ROOT_PW.
|
||||||
|
DB_ROOT_PW=${MYSQL_ROOT_PW:-insecure_slave}
|
||||||
|
|
||||||
|
# This user and its password are used by the tests, if you change it,
|
||||||
|
# your tests might fail.
|
||||||
|
DB_USER=openstack_citest
|
||||||
|
DB_PW=openstack_citest
|
||||||
|
|
||||||
|
function is_rhel9 {
|
||||||
|
[ -f /usr/bin/dnf ] && \
|
||||||
|
cat /etc/*release | grep -q -e "Red Hat" -e "CentOS" -e "CloudLinux" && \
|
||||||
|
cat /etc/*release | grep -q 'release 9'
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_rhel10 {
|
||||||
|
[ -f /usr/bin/dnf ] && \
|
||||||
|
cat /etc/*release | grep -q -e "Red Hat" -e "CentOS" -e "CloudLinux" && \
|
||||||
|
cat /etc/*release | grep -q 'release 10'
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_conf_line { # file regex value
|
||||||
|
sudo sh -c "grep -q -e '$2' $1 && \
|
||||||
|
sed -i 's|$2|$3|g' $1 || \
|
||||||
|
echo '$3' >> $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
if is_rhel9 || is_rhel10; then
|
||||||
|
# mysql needs to be started on centos/rhel
|
||||||
|
sudo systemctl restart mariadb.service
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo -H mysqladmin -u root password $DB_ROOT_PW
|
||||||
|
|
||||||
|
# It's best practice to remove anonymous users from the database. If
|
||||||
|
# an anonymous user exists, then it matches first for connections and
|
||||||
|
# other connections from that host will not work.
|
||||||
|
sudo -H mysql -u root -p$DB_ROOT_PW -h localhost -e "
|
||||||
|
DELETE FROM mysql.user WHERE User='';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PW';
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'%' WITH GRANT OPTION;"
|
||||||
|
|
||||||
|
# Now create our database.
|
||||||
|
mysql -u $DB_USER -p$DB_PW -h 127.0.0.1 -e "
|
||||||
|
SET default_storage_engine=MYISAM;
|
||||||
|
DROP DATABASE IF EXISTS openstack_citest;
|
||||||
|
CREATE DATABASE openstack_citest CHARACTER SET utf8;"
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
import fixtures
|
import fixtures
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_db.sqlalchemy import enginefacade
|
from oslo_db.sqlalchemy import enginefacade
|
||||||
|
from oslo_db.sqlalchemy import test_fixtures
|
||||||
|
|
||||||
|
|
||||||
from watcher.db import api as dbapi
|
from watcher.db import api as dbapi
|
||||||
@@ -86,3 +87,18 @@ class DbTestCase(base.TestCase):
|
|||||||
engine.dispose()
|
engine.dispose()
|
||||||
self.useFixture(_DB_CACHE)
|
self.useFixture(_DB_CACHE)
|
||||||
self._id_gen = utils.id_generator()
|
self._id_gen = utils.id_generator()
|
||||||
|
|
||||||
|
|
||||||
|
class MySQLDbTestCase(test_fixtures.OpportunisticDBTestMixin, base.TestCase):
|
||||||
|
|
||||||
|
FIXTURE = test_fixtures.MySQLOpportunisticFixture
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
conn_str = "mysql+pymysql://root:insecure_slave@127.0.0.1"
|
||||||
|
# to use mysql db
|
||||||
|
cfg.CONF.set_override("connection", conn_str,
|
||||||
|
group="database")
|
||||||
|
super().setUp()
|
||||||
|
self.engine = enginefacade.writer.get_engine()
|
||||||
|
self.dbapi = dbapi.get_instance()
|
||||||
|
migration.create_schema()
|
||||||
|
|||||||
@@ -409,3 +409,55 @@ class DbEfficacyIndicatorTestCase(base.DbTestCase):
|
|||||||
self.assertRaises(exception.EfficacyIndicatorAlreadyExists,
|
self.assertRaises(exception.EfficacyIndicatorAlreadyExists,
|
||||||
utils.create_test_efficacy_indicator,
|
utils.create_test_efficacy_indicator,
|
||||||
id=2, uuid=uuid)
|
id=2, uuid=uuid)
|
||||||
|
|
||||||
|
|
||||||
|
class MySQLDbEfficacyIndicatorTestCase(base.MySQLDbTestCase):
|
||||||
|
|
||||||
|
FAKE_OLDER_DATE = '2014-01-01T09:52:05.219414'
|
||||||
|
FAKE_OLD_DATE = '2015-01-01T09:52:05.219414'
|
||||||
|
FAKE_TODAY = '2016-02-24T09:52:05.219414'
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(MySQLDbEfficacyIndicatorTestCase, self).setUp()
|
||||||
|
self.context.show_deleted = True
|
||||||
|
self._data_setup()
|
||||||
|
|
||||||
|
def _data_setup(self):
|
||||||
|
self.audit_template_name = "Audit Template"
|
||||||
|
|
||||||
|
self.goal = utils.create_test_goal(
|
||||||
|
id=1, uuid=w_utils.generate_uuid(),
|
||||||
|
name="GOAL_1", display_name='Goal 1')
|
||||||
|
self.strategy = utils.create_test_strategy(
|
||||||
|
id=1, uuid=w_utils.generate_uuid(),
|
||||||
|
name="STRATEGY_ID_1", display_name='My Strategy 1')
|
||||||
|
self.audit_template = utils.create_test_audit_template(
|
||||||
|
name=self.audit_template_name, id=1, uuid=None)
|
||||||
|
self.audit = utils.create_test_audit(
|
||||||
|
audit_template_id=self.audit_template.id, id=1, uuid=None)
|
||||||
|
self.action_plan = utils.create_test_action_plan(
|
||||||
|
audit_id=self.audit.id, id=1, uuid=None)
|
||||||
|
|
||||||
|
with freezegun.freeze_time(self.FAKE_TODAY):
|
||||||
|
self.efficacy_indicator1 = utils.create_test_efficacy_indicator(
|
||||||
|
action_plan_id=self.action_plan.id, id=1, uuid=None,
|
||||||
|
name="efficacy_indicator1", description="Test Indicator 1",
|
||||||
|
value=0.01234567912345678)
|
||||||
|
with freezegun.freeze_time(self.FAKE_OLD_DATE):
|
||||||
|
self.efficacy_indicator2 = utils.create_test_efficacy_indicator(
|
||||||
|
action_plan_id=self.action_plan.id, id=2, uuid=None,
|
||||||
|
name="efficacy_indicator2", description="Test Indicator 2")
|
||||||
|
with freezegun.freeze_time(self.FAKE_OLDER_DATE):
|
||||||
|
self.efficacy_indicator3 = utils.create_test_efficacy_indicator(
|
||||||
|
action_plan_id=self.action_plan.id, id=3, uuid=None,
|
||||||
|
name="efficacy_indicator3", description="Test Indicator 3")
|
||||||
|
|
||||||
|
def test_efficacy_indicator_value_decimals(self):
|
||||||
|
db_efficacy_indicator = self.dbapi.get_efficacy_indicator_by_id(
|
||||||
|
self.context, 1)
|
||||||
|
self.assertAlmostEqual(float(db_efficacy_indicator.value),
|
||||||
|
0.00, places=2)
|
||||||
|
# FIXME: once the database bug is fixed check that the value is stored
|
||||||
|
# correctly
|
||||||
|
# self.assertAlmostEqual(float(db_efficacy_indicator.value),
|
||||||
|
# 0.01, places=2)
|
||||||
|
|||||||
Reference in New Issue
Block a user