Commit 0621c6c1 authored by Rafael Monnerat's avatar Rafael Monnerat

promise.check_re6st_optimal_status: New Promise

  Add new promise to check re6st is on optimal status
parent 15b4c0c8
...@@ -69,6 +69,7 @@ setup(name=name, ...@@ -69,6 +69,7 @@ setup(name=name,
'check-web-page-http-cache-hit = slapos.promise.check_web_page_http_cache_hit:main', 'check-web-page-http-cache-hit = slapos.promise.check_web_page_http_cache_hit:main',
'check-feed-as-promise = slapos.checkfeedaspromise:main', 'check-feed-as-promise = slapos.checkfeedaspromise:main',
'check-error-on-apache-log = slapos.promise.check_error_on_apache_log:main', 'check-error-on-apache-log = slapos.promise.check_error_on_apache_log:main',
'check-re6st-optimal-status = slapos.promise.check_re6st_optimal_status:main',
'clouddestroy = slapos.cloudmgr.destroy:main', 'clouddestroy = slapos.cloudmgr.destroy:main',
'cloudgetprivatekey = slapos.cloudmgr.getprivatekey:main', 'cloudgetprivatekey = slapos.cloudmgr.getprivatekey:main',
'cloudgetpubliciplist = slapos.cloudmgr.getpubliciplist:main', 'cloudgetpubliciplist = slapos.cloudmgr.getpubliciplist:main',
......
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"
if float(result_ipv4[3]) < float(result_ipv6[3]):
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)
##############################################################################
#
# 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.assertEquals(result, 'OK')
def test_ipv4_is_faster(self):
result = test('ipv6.google.com', '127.0.0.1', 5)
self.assertEquals(result, 'FAIL')
def test_ipv4_unreacheable_and_ipv6_ok(self):
result = test('::1', 'couscous', 5)
self.assertEquals(result, 'OK')
def test_ipv6_fail(self):
result = test('couscous', '127.0.0.1', 5)
self.assertEquals(result, 'FAILED')
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