212 lines
11 KiB
Python
212 lines
11 KiB
Python
import mock
|
|
from sysinv.tests.api import base
|
|
from sysinv.tests.db import utils as dbutils
|
|
from sysinv.api.controllers.v1 import hwmon_api
|
|
from sysinv.api.controllers.v1 import sensorgroup
|
|
|
|
|
|
class sensorgroupTestCase(base.FunctionalTest):
|
|
|
|
def setUp(self):
|
|
super(sensorgroupTestCase, self).setUp()
|
|
self.system = dbutils.create_test_isystem()
|
|
self.load = dbutils.create_test_load()
|
|
self.host = dbutils.create_test_ihost(forisystemid=self.system.id)
|
|
|
|
def assertDeleted(self, fullPath):
|
|
self.get_json(fullPath, expect_errors=True) # Make sure this line raises an error
|
|
|
|
@mock.patch.object(hwmon_api, 'sensorgroup_modify', return_value={'status': 'pass'})
|
|
def test_propagated_to_sensor(self, mock_sgmodify):
|
|
|
|
# Create sensorgroup
|
|
sensorgroupVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorgroupname': 'defaultSensorGroupName',
|
|
}
|
|
sensorgroup = self.post_json('/isensorgroups', sensorgroupVals)
|
|
|
|
# Test post_json worked properly
|
|
self.assertEqual('defaultSensorGroupName', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['sensorgroupname']) # Result
|
|
|
|
# Create sensor
|
|
sensorVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorname': 'defaultSensorName',
|
|
}
|
|
sensor = self.post_json('/isensors', sensorVals, headers={'User-Agent': 'hwmon'})
|
|
self.patch_dict_json('/isensors/%s/' % sensor.json['uuid'],
|
|
headers={'User-Agent': 'hwmon'},
|
|
sensorgroup_uuid=sensorgroup.json['uuid'])
|
|
|
|
# Assert sensorgroup/sensor created properly in DB
|
|
self.assertEqual('defaultSensorGroupName', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['sensorgroupname']) # Result
|
|
self.assertEqual('defaultSensorName', # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['sensorname']) # Result
|
|
self.assertEqual(self.get_json('/isensors/%s/' % sensor.json['uuid'])['sensorgroup_uuid'],
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['uuid'])
|
|
|
|
# Set values in sensorgroup
|
|
self.patch_dict_json('/isensorgroups/%s/' % sensorgroup.json['uuid'],
|
|
headers={'User-Agent': 'hwmon'},
|
|
audit_interval_group=42,
|
|
actions_minor_group='action minor',
|
|
actions_major_group='action major',
|
|
actions_critical_group='action critical',
|
|
suppress='False',)
|
|
|
|
# Assert values got set properly in sensorgroup
|
|
self.assertEqual(42, # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['audit_interval_group']) # Result
|
|
self.assertEqual('action minor', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_minor_group']) # Result
|
|
self.assertEqual('action major', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_major_group']) # Result
|
|
self.assertEqual('action critical', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_critical_group']) # Result
|
|
self.assertEqual('False', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['suppress']) # Result
|
|
|
|
# Assert values got propagated to sensor
|
|
self.assertEqual(42, # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['audit_interval']) # Result
|
|
self.assertEqual('action minor', # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['actions_minor']) # Result
|
|
self.assertEqual('action major', # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['actions_major']) # Result
|
|
self.assertEqual('action critical', # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['actions_critical']) # Result
|
|
self.assertEqual('False', # Expected
|
|
self.get_json('/isensors/%s/' % sensor.json['uuid'])['suppress']) # Result
|
|
|
|
# delete sensorgroup and assert sensorgroup/sensor got deleted
|
|
self.delete('/isensorgroups/%s/' % sensorgroup.json['uuid'])
|
|
self.delete('/isensors/%s/' % sensor.json['uuid'])
|
|
self.assertDeleted('/isensorgroups/%s/' % sensorgroup.json['uuid'])
|
|
self.assertDeleted('/isensors/%s/' % sensor.json['uuid'])
|
|
|
|
@mock.patch.object(hwmon_api, 'sensorgroup_modify', return_value={'status': 'pass'})
|
|
def test_propagated_to_multiple_sensors(self, mock_sgmodify):
|
|
|
|
# Create sensorgroup in DB
|
|
sensorgroupVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorgroupname': 'testsensorgroupname',
|
|
}
|
|
sensorgroup = self.post_json('/isensorgroups', sensorgroupVals)
|
|
|
|
# Test post_json worked properly
|
|
self.assertEqual('testsensorgroupname', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['sensorgroupname']) # Result
|
|
|
|
# Create sensors
|
|
numOfSensors = 10
|
|
sensor = []
|
|
sensorVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorname': 'defaultSensorName',
|
|
}
|
|
for i in range(numOfSensors):
|
|
sensor.append(self.post_json('/isensors', sensorVals, headers={'User-Agent': 'hwmon'}))
|
|
self.patch_dict_json('/isensors/%s/' % sensor[i].json['uuid'],
|
|
headers={'User-Agent': 'hwmon'},
|
|
sensorgroup_uuid=sensorgroup.json['uuid'])
|
|
|
|
# Assert sensors created properly in DB
|
|
for i in range(numOfSensors):
|
|
self.assertEqual('defaultSensorName', # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['sensorname']) # Result
|
|
self.assertEqual(sensorgroup.json['uuid'], # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['sensorgroup_uuid']) # Result
|
|
|
|
# Set values in sensorgroup, then propagate to sensors
|
|
self.patch_dict_json('/isensorgroups/%s/' % (sensorgroup.json['uuid']),
|
|
headers={'User-Agent': 'hwmon'},
|
|
audit_interval_group=42,
|
|
actions_minor_group='action minor',
|
|
actions_major_group='action major',
|
|
actions_critical_group='action critical',
|
|
suppress='False', )
|
|
|
|
# Assert values got set properly in sensorgroup
|
|
self.assertEqual(42, # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['audit_interval_group']) # Result
|
|
self.assertEqual('action minor', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_minor_group']) # Result
|
|
self.assertEqual('action major', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_major_group']) # Result
|
|
self.assertEqual('action critical', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['actions_critical_group']) # Result
|
|
self.assertEqual('False', # Expected
|
|
self.get_json('/isensorgroups/%s/' % sensorgroup.json['uuid'])['suppress']) # Result
|
|
|
|
# Assert values got propagated to sensor
|
|
for i in range(numOfSensors):
|
|
self.assertEqual(42, # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['audit_interval']) # Result
|
|
self.assertEqual('action minor', # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['actions_minor']) # Result
|
|
self.assertEqual('action major', # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['actions_major']) # Result
|
|
self.assertEqual('action critical', # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['actions_critical']) # Result
|
|
self.assertEqual('False', # Expected
|
|
self.get_json('/isensors/%s/' % sensor[i].json['uuid'])['suppress']) # Result
|
|
|
|
# Delete sensorgroup and sensors
|
|
self.delete('/isensorgroups/%s/' % sensorgroup.json['uuid'])
|
|
for i in range(numOfSensors):
|
|
self.delete('/isensors/%s/' % sensor[i].json['uuid'])
|
|
|
|
# Assert deletion of sensorgroup and sensors
|
|
self.assertDeleted('/isensorgroups/%s/' % sensorgroup.json['uuid'])
|
|
for i in range(numOfSensors):
|
|
self.assertDeleted('/isensors/%s/' % sensor[i].json['uuid'])
|
|
|
|
def test_sensorgroup_post(self):
|
|
sensorgroupVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorgroupname': 'testsensorgroupname',
|
|
}
|
|
response = self.post_json('/isensorgroups', sensorgroupVals)
|
|
self.assertEqual('testsensorgroupname', # Expected
|
|
self.get_json('/isensorgroups/%s/' % response.json['uuid'])['sensorgroupname']) # Result
|
|
|
|
self.delete('/isensorgroups/%s/' % response.json['uuid'])
|
|
self.assertDeleted('/isensorgroups/%s/' % response.json['uuid'])
|
|
|
|
def test_sensor_post(self):
|
|
sensorVals = {
|
|
'host_uuid': self.host['uuid'],
|
|
'datatype': 'analog',
|
|
'sensortype': 'testsensortype',
|
|
'sensorname': 'testsensorname',
|
|
}
|
|
response = self.post_json('/isensors', sensorVals)
|
|
self.assertEqual('testsensorname', # Expected
|
|
self.get_json('/isensors/%s/' % response.json['uuid'])['sensorname']) # Result
|
|
self.delete('/isensors/%s/' % response.json['uuid'])
|
|
self.assertDeleted('/isensors/%s/' % response.json['uuid'])
|
|
|
|
@mock.patch.object(sensorgroup.SensorGroupController, '_get_host_uuid')
|
|
@mock.patch.object(sensorgroup.hwmon_api, 'sensorgroup_relearn', return_value={'status': 'pass'})
|
|
def test_sensorgroup_relearn(self, mock_hwmon_relearn, mock_get_host_uuid):
|
|
mock_get_host_uuid.return_value = self.host['uuid']
|
|
request_relearn = {
|
|
'host_uuid': self.host['uuid'],
|
|
}
|
|
self.post_json('/isensorgroups/relearn', request_relearn)
|
|
mock_hwmon_relearn.assert_called_once()
|