Commit 55ad3276 authored by Alain Takoudjou's avatar Alain Takoudjou

promise: remove old version of promises used for caddy-frontend

parent 98bd30c9
......@@ -76,10 +76,8 @@ setup(name=name,
'check-computer-memory = slapos.promise.check_computer_memory:main',
'check-web-page-http-cache-hit = slapos.promise.check_web_page_http_cache_hit:main',
'check-feed-as-promise = slapos.checkfeedaspromise:main',
'check-error-on-apache-log = slapos.promise.check_error_on_apache_log:main',
'check-apachedex-result = slapos.promise.check_apachedex_result:main',
'check-slow-queries-digest-result = slapos.promise.check_slow_queries_digest_result:main',
'check-re6st-optimal-status = slapos.promise.check_re6st_optimal_status:main',
'clouddestroy = slapos.cloudmgr.destroy:main',
'cloudgetprivatekey = slapos.cloudmgr.getprivatekey:main',
'cloudgetpubliciplist = slapos.cloudmgr.getpubliciplist:main',
......@@ -92,7 +90,6 @@ setup(name=name,
'htpasswd = slapos.htpasswd:main',
'is-local-tcp-port-opened = slapos.promise.is_local_tcp_port_opened:main',
'is-process-older-than-dependency-set = slapos.promise.is_process_older_than_dependency_set:main',
'is-icmp-packet-lost = slapos.promise.is_icmp_packet_lost:main',
'killpidfromfile = slapos.systool:killpidfromfile', # BBB
'monitor.bootstrap = slapos.monitor.monitor:main',
'monitor.collect = slapos.monitor.collect:main',
......
import re
import time
import sys
import gzip
import argparse
import os
r = re.compile("^(\[[^\]]+\]) (\[[^\]]+\]) (.*)$")
def test(log_file, maximum_delay):
error_amount = 0
no_route_error = 0
network_is_unreacheable = 0
timeout = 0
parsing_failure = 0
if not os.path.exists(log_file):
# file don't exist, nothing to check
return "OK"
with open(log_file) as f:
f.seek(0, 2)
block_end_byte = f.tell()
f.seek(-min(block_end_byte, 4096), 1)
data = f.read()
for line in reversed(data.splitlines()):
m = r.match(line)
if m is None:
continue
dt, level, msg = m.groups()
try:
try:
t = time.strptime(dt[1:-1], "%a %b %d %H:%M:%S %Y")
except ValueError:
# Fail to parser for the first time, try a different output.
t = time.strptime(dt[1:-1], "%a %b %d %H:%M:%S.%f %Y")
except ValueError:
# Probably it fail to parse
if parsing_failure < 3:
# Accept failure 2 times, as the line can be actually
# cut on the middle.
parsing_failure += 1
continue
raise
if maximum_delay and (time.time()-time.mktime(t)) > maximum_delay:
# no result in the latest hour
break
if level != "[error]":
continue
# Classify the types of errors
if "(113)No route to host" in msg:
no_route_error += 1
elif "(101)Network is unreachable" in msg:
network_is_unreacheable += 1
elif "(110)Connection timed out" in msg:
timeout += 1
error_amount += 1
if error_amount:
return "ERROR=%s (NOTROUTE=%s, UNREACHEABLENET=%s, TIMEOUT=%s)" % (error_amount, no_route_error, network_is_unreacheable, timeout)
return "OK"
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-l", "--log-file", required=True)
parser.add_argument("-d", "--maximum-delay", default=0)
args = parser.parse_args()
log_file = args.log_file
result = test(args.log_file, args.maximum_delay)
print result
if result != "OK":
sys.exit(1)
import argparse
import re
import time
import sys
from slapos.networkbench.ping import ping, ping6
def test(ipv6, ipv4, count):
result_ipv4 = ping(ipv4, count=count)
print "%s host=%s code=%s, result=%s, packet_lost_ratio=%s msg=%s" % result_ipv4
result_ipv6 = ping6(ipv6, count=count)
print "%s host=%s code=%s, result=%s, packet_lost_ratio=%s msg=%s" % result_ipv6
if result_ipv4[3] == "failed" and result_ipv6[3] != "failed":
# IPv4 is unreacheable
return "OK"
if result_ipv6[3] == "failed":
# IPv6 is unreacheable
return "FAILED"
latency4 = float(result_ipv4[3])
latency6 = float(result_ipv6[3])
# We can consider that at worst 1ms is added to
# ipv4 response, due the usage of openvpn.
acceptable_delay = 1
# We can consider that we accept a certain increase
# on latency, if we are on a bit congested link.
# So 10% is reseonable enough.
acceptable_lost = 0.10
# Increase latency with the value.
latency4 += acceptable_delay + latency4*acceptable_lost
if latency4 < latency6:
print "Fail %s (latency4) > %s (latence6)" % (latency4, latency6)
return "FAIL"
# Compare if both has Same working rate
return "OK"
def main():
parser = argparse.ArgumentParser()
# promise ipv6 and ipv4 address to compare.
parser.add_argument("-4", "--ipv4", required=1 )
parser.add_argument("-6", "--ipv6", required=1)
parser.add_argument("-c", "--count", default=10 )
args = parser.parse_args()
result = test(args.ipv6, args.ipv4, args.count)
print result
if result != "OK":
# re6st is not on an optimal state.
sys.exit(1)
import argparse
import re
import time
import sys
from slapos.networkbench.ping import ping, ping6
def test(address, ipv4, count):
if ipv4:
return ping(address, count=count)
return ping6(address, count=count)
def main():
parser = argparse.ArgumentParser()
# Address to ping to
parser.add_argument("-a", "--address", required=True)
# Force use ipv4 protocol
parser.add_argument("-4", "--ipv4", action="store_true" )
parser.add_argument("-c", "--count", metavar="COUNT", default=10 )
args = parser.parse_args()
result = test(args.address, args.ipv4, args.count)
print "%s host=%s code=%s, result=%s, packet_lost_ratio=%s msg=%s" % result
if result[4] != "0":
# Packet lost occurred
print "FAIL"
sys.exit(1)
print "OK"
##############################################################################
#
# Copyright (c) 2017 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.
#
##############################################################################
import unittest
import os.path
import socket
import time
from slapos.promise.check_error_on_apache_log import test
from slapos.test.promise import data
class TestCheckErrorOnApacheLog(unittest.TestCase):
def get_time(self, sec):
return time.strftime("%a %b %d %H:%M:%S %Y", time.localtime(time.time()-sec))
def _update_logs(self):
log_file_list = [
"apache_error_log",
"infoonly_error_log",
"timeout_error_log",
"unreachable_error_log"]
i = 600
for log_file in log_file_list:
new = ""
old = ""
with open(self.base_path + "/" + log_file) as f:
for line in f:
new += line.replace("DATETIME", self.get_time(i))
old += line.replace("DATETIME", self.get_time(i+3600))
i -= 1
with open(self.base_path + "/SOFTINST-0_" + log_file, "w") as f:
f.write(old)
f.write(new)
def setUp(self):
self.base_path = "/".join(data.__file__.split("/")[:-1])
self._update_logs()
def test_no_error(self):
self.assertEqual("OK",
test(self.base_path + "/SOFTINST-0_infoonly_error_log", 0))
self.assertEqual("OK",
test(self.base_path + "/SOFTINST-0_infoonly_error_log", 3600))
def test_error(self):
self.assertEqual("ERROR=2 (NOTROUTE=2, UNREACHEABLENET=0, TIMEOUT=0)",
test(self.base_path + "/SOFTINST-0_apache_error_log", 0))
self.assertEqual("ERROR=1 (NOTROUTE=1, UNREACHEABLENET=0, TIMEOUT=0)",
test(self.base_path + "/SOFTINST-0_apache_error_log", 3600))
def test_error_timeout(self):
self.assertEqual("ERROR=4 (NOTROUTE=0, UNREACHEABLENET=0, TIMEOUT=4)",
test(self.base_path + "/SOFTINST-0_timeout_error_log", 0))
self.assertEqual("ERROR=2 (NOTROUTE=0, UNREACHEABLENET=0, TIMEOUT=2)",
test(self.base_path + "/SOFTINST-0_timeout_error_log", 3600))
def test_error_unreacheabler(self):
self.assertEqual("ERROR=11 (NOTROUTE=0, UNREACHEABLENET=11, TIMEOUT=0)",
test(self.base_path + "/SOFTINST-0_unreachable_error_log", 0))
self.assertEqual("ERROR=11 (NOTROUTE=0, UNREACHEABLENET=11, TIMEOUT=0)",
test(self.base_path + "/SOFTINST-0_unreachable_error_log", 3600))
if __name__ == '__main__':
unittest.main()
##############################################################################
#
# Copyright (c) 2017 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.
#
##############################################################################
import unittest
import os.path
import socket
import time
from slapos.promise.check_re6st_optimal_status import test
class TestCheckRe6stOptimalStatus(unittest.TestCase):
def test_ipv6_is_faster(self):
result = test('::1', '8.8.8.8', 5)
self.assertEqual(result, 'OK')
def test_ipv4_is_faster(self):
result = test('2001:67c:1254::1', '127.0.0.1', 5)
self.assertEqual(result, 'FAIL')
def test_ipv4_unreacheable_and_ipv6_ok(self):
result = test('::1', 'couscous', 5)
self.assertEqual(result, 'OK')
def test_ipv6_fail(self):
result = test('couscous', '127.0.0.1', 5)
self.assertEqual(result, 'FAILED')
if __name__ == '__main__':
unittest.main()
##############################################################################
#
# Copyright (c) 2017 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.
#
##############################################################################
import unittest
import os.path
import socket
import time
from slapos.promise.is_icmp_packet_lost import test
class TestIsICMPPacketLost(unittest.TestCase):
def test_localhost(self):
result = test("localhost", True, 5)
self.assertEqual(result[4], '0')
def test_error(self):
result = test("couscous", True, 5)
self.assertEqual(result[4], -1)
def test_localhost6_with_ping6 (self):
result = test("::1", False, 5)
self.assertEqual(result[4], '0')
def test_localhost6_with_ping4 (self):
result = test("::1", True, 5)
self.assertEqual(result[4], '0')
def test_error6(self):
result = test("couscous", False, 5)
self.assertEqual(result[4], -1)
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