You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.5 KiB
104 lines
3.5 KiB
# Copyright 2018 Creu Blanca
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import mock
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class Popen:
|
|
def __init__(self, cmd, stdout, stdin, stderr):
|
|
self.cmd = cmd
|
|
self.stdout = stdout
|
|
self.stdin = stdin
|
|
self.stderr = stderr
|
|
|
|
def communicate(input):
|
|
return ['test']
|
|
|
|
|
|
class TestNsca(TransactionCase):
|
|
|
|
def test_nsca(self):
|
|
server = self.env['nsca.server'].create({
|
|
'name': 'localhost',
|
|
'password': 'pass',
|
|
'encryption_method': '3',
|
|
'node_hostname': 'odoodev',
|
|
})
|
|
self.assertTrue(server.config_file_path)
|
|
with mock.patch('subprocess.Popen') as post:
|
|
post.return_value = Popen
|
|
check = self.env['nsca.check'].create({
|
|
'server_id': server.id,
|
|
'service': 'test',
|
|
'nsca_model': 'nsca.server',
|
|
'nsca_function': 'current_status'
|
|
})
|
|
self.assertTrue(check.model_id)
|
|
self.env['nsca.check']._cron_check(check.id,)
|
|
|
|
def test_write(self):
|
|
server = self.env['nsca.server'].create({
|
|
'name': 'localhost',
|
|
'password': 'pass',
|
|
'encryption_method': '3',
|
|
'node_hostname': 'odoodev',
|
|
})
|
|
self.assertTrue(server.config_file_path)
|
|
check = self.env['nsca.check'].create({
|
|
'server_id': server.id,
|
|
'service': 'test',
|
|
'nsca_model': 'nsca.server',
|
|
'nsca_function': 'current_status'
|
|
})
|
|
check.cron_id.state = 'object_create'
|
|
check.write({'interval_number': 1})
|
|
self.assertEqual(check.cron_id.state, 'object_create')
|
|
check.write({'service': 'change'})
|
|
self.assertNotEqual(check.cron_id.state, 'object_create')
|
|
|
|
def test_void_failure(self):
|
|
server = self.env['nsca.server'].create({
|
|
'name': 'localhost',
|
|
'password': 'pass',
|
|
'encryption_method': '3',
|
|
'node_hostname': 'odoodev',
|
|
})
|
|
check = self.env['nsca.check'].create({
|
|
'server_id': server.id,
|
|
'service': 'test',
|
|
'nsca_model': 'nsca.server',
|
|
'allow_void_result': False,
|
|
'nsca_function': '_check_send_nsca_command'
|
|
})
|
|
with mock.patch('subprocess.Popen') as post:
|
|
post.return_value = Popen
|
|
self.env['nsca.check']._cron_check(check.id,)
|
|
post.assert_called_once()
|
|
|
|
def test_void_ok(self):
|
|
server = self.env['nsca.server'].create({
|
|
'name': 'localhost',
|
|
'password': 'pass',
|
|
'encryption_method': '3',
|
|
'node_hostname': 'odoodev',
|
|
})
|
|
self.assertEqual(server.check_count, 0)
|
|
check = self.env['nsca.check'].create({
|
|
'server_id': server.id,
|
|
'service': 'test',
|
|
'nsca_model': 'nsca.server',
|
|
'allow_void_result': True,
|
|
'nsca_function': '_check_send_nsca_command'
|
|
})
|
|
self.assertEqual(server.check_count, 1)
|
|
action = server.show_checks()
|
|
self.assertEqual(check, self.env['nsca.check'].browse(
|
|
action['res_id']))
|
|
self.assertEqual(check, self.env['nsca.check'].search(
|
|
action['domain']))
|
|
with mock.patch('subprocess.Popen') as post:
|
|
post.return_value = Popen
|
|
self.env['nsca.check']._cron_check(check.id,)
|
|
post.assert_not_called()
|