Commit ea7966d9 authored by Alain Takoudjou's avatar Alain Takoudjou

promise: fixup fixupgit status

parent 6fd5eebe
......@@ -57,17 +57,15 @@ setup(name=name,
'requests',
'jsonschema',
'zc.buildout',
'pycurl',
] + additional_install_requires,
extras_require = {
'lampconfigure': ["mysqlclient"], #needed for MySQL Database access
'zodbpack': ['ZODB3'], # needed to play with ZODB
'flask_auth' : ["Flask-Auth"],
'networkbench' : ['pycurl'],
'check_web_page_http_cache_hit' : ['pycurl'], # needed for check_web_page_http_cache_hit module
},
tests_require = [
'mock',
'pycurl'
],
zip_safe=False, # proxy depends on Flask, which has issues with
# accessing templates
......
......@@ -40,6 +40,7 @@ class RunPromise(GenericPromise):
try:
curl.perform()
curl.close()
except pycurl.error, e:
code, message = e
self.logger.error("%s: %s" % (code, message))
......
......@@ -27,7 +27,7 @@ class RunPromise(GenericPromise):
stderr=subprocess.STDOUT,
)
result = process.communicate()[0].strip()
if process.returncode != 0:
if process.returncode == 0:
self.logger.info("OK")
else:
self.logger.error("Cache not available, availability: %s" % result)
......
from zope import interface as zope_interface
from slapos.grid.promise import interface
from slapos.grid.promise.generic import GenericPromise
import os
import subprocess
from slapos.grid.utils import SlapPopen
try:
import subprocess32 as subprocess
except ImportError:
import subprocess
class RunPromise(GenericPromise):
......@@ -12,20 +13,26 @@ class RunPromise(GenericPromise):
def __init__(self, config):
GenericPromise.__init__(self, config)
# check configuration every 5 minutes (only for anomaly)
self.setPeriodicity(minute=5)
self.setPeriodicity(minute=int(self.getConfig('frequency', 5)))
def sense(self):
"""
RUn frontend validatation script
Run frontend validatation script
"""
validate_script = self.getConfig('verification-script')
process = SlapPopen([validate_script])
stdout, stderr = process.communicate()
if process.returncode != 0:
if not validate_script:
raise ValueError("'verification-script' was not set in promise parameters.")
process = subprocess.Popen(
[validate_script],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
message = process.communicate()[0]
if process.returncode == 0:
self.logger.info("OK")
else:
self.logger.error("%s\n%s" % (stdout, stderr))
self.logger.error("%s" % message)
def anomaly(self):
return self._test()
##############################################################################
#
# Copyright (c) 2018 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from slapos.test.promise.plugin import TestPromisePluginMixin
from slapos.grid.promise import PromiseError
import os
class TestCheckUrlAvailable(TestPromisePluginMixin):
def setUp(self):
TestPromisePluginMixin.setUp(self)
self.promise_name = "check-url-available.py"
self.base_content = """from slapos.promise.plugin.check_url_available import RunPromise
extra_config_dict = {
'url': '%(url)s',
'timeout': %(timeout)s,
'check-secure': %(check_secure)s,
}
"""
def tearDown(self):
TestPromisePluginMixin.tearDown(self)
def test_check_url_bad(self):
content = self.base_content % {
'url': 'https://',
'timeout': 10,
'check_secure': 0
}
self.writePromise(self.promise_name, content)
self.configureLauncher()
with self.assertRaises(PromiseError):
self.launcher.run()
result = self.getPromiseResult(self.promise_name)
self.assertEqual(result['result']['failed'], True)
self.assertEqual(result['result']['message'], "3: Bad URL")
def test_check_url_malformed(self):
content = self.base_content % {
'url': '',
'timeout': 10,
'check_secure': 0
}
self.writePromise(self.promise_name, content)
self.configureLauncher()
with self.assertRaises(PromiseError):
self.launcher.run()
result = self.getPromiseResult(self.promise_name)
self.assertEqual(result['result']['failed'], True)
self.assertEqual(result['result']['message'], "3: <url> malformed")
def test_check_url_site_off(self):
content = content = self.base_content % {
'url': 'https://localhost:56789/site',
'timeout': 10,
'check_secure': 0
}
self.writePromise(self.promise_name, content)
self.configureLauncher()
with self.assertRaises(PromiseError):
self.launcher.run()
result = self.getPromiseResult(self.promise_name)
self.assertEqual(result['result']['failed'], True)
self.assertEqual(result['result']['message'], "7: Failed to connect to localhost port 56789: Connection refused")
if __name__ == '__main__':
unittest.main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment