More tidy up
This commit is contained in:
parent
32832363d4
commit
e4f0ceef05
25
LICENSE
25
LICENSE
|
@ -175,3 +175,28 @@
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
16
copyright
16
copyright
|
@ -1,16 +0,0 @@
|
||||||
Format: http://dep.debian.net/deps/dep5/
|
|
||||||
|
|
||||||
Files: *
|
|
||||||
Copyright: Copyright 2015, Canonical Ltd., All Rights Reserved.
|
|
||||||
License: Apache License 2.0
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
.
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
.
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
53
perf.py
53
perf.py
|
@ -1,53 +0,0 @@
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
import threading
|
|
||||||
|
|
||||||
class Iperf():
|
|
||||||
"""
|
|
||||||
Install and start a server automatically
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
if not nextline:
|
|
||||||
mtu = None
|
|
||||||
except NameError:
|
|
||||||
mtu = None
|
|
||||||
# The following is a mess - since I'm installing iperf3 in the function
|
|
||||||
# Surely there is another easier way to get this into the charm?
|
|
||||||
def __init__(self):
|
|
||||||
#try:
|
|
||||||
# subprocess.check_call(['pgrep', 'iperf'], stderr=subprocess.STDOUT)
|
|
||||||
# if a:
|
|
||||||
thread = threading.Thread(target=self.start_server, args=())
|
|
||||||
thread.start()
|
|
||||||
#except:
|
|
||||||
# pass
|
|
||||||
#hookenv.log(sys.exc_info()[0], 'INFO')
|
|
||||||
|
|
||||||
def start_server(self):
|
|
||||||
process = subprocess.Popen(['iperf', '-s', '-m'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
while True:
|
|
||||||
nextline = process.stdout.readline()
|
|
||||||
nextline = nextline.decode("utf-8")
|
|
||||||
if nextline == '' and process.poll() is not None:
|
|
||||||
break
|
|
||||||
if "bits" in nextline:
|
|
||||||
self.speed = nextline.rsplit(' ', 2)[1]
|
|
||||||
sys.stdout.write(self.speed)
|
|
||||||
sys.stdout.write("\n")
|
|
||||||
if "MTU" in nextline:
|
|
||||||
self.mtu = nextline.rsplit(' ', 4)[1]
|
|
||||||
sys.stdout.write(self.mtu)
|
|
||||||
sys.stdout.flush()
|
|
||||||
#output = process.communicate()[0]
|
|
||||||
#exitCode = process.returncode
|
|
||||||
#
|
|
||||||
#output = exitCode
|
|
||||||
|
|
||||||
#if (exitCode == 0):
|
|
||||||
# pass
|
|
||||||
#elif exitCode:
|
|
||||||
# raise Exception(command, exitCode, output)
|
|
||||||
|
|
||||||
|
|
||||||
perf = Iperf()
|
|
||||||
#print (perf.mtu)
|
|
25
src/LICENSE
25
src/LICENSE
|
@ -175,3 +175,28 @@
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
|
@ -1,4 +1,16 @@
|
||||||
#!/usr/bin/env python
|
# Copyright 2020 Canonical Ltd
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
|
@ -1,3 +1,17 @@
|
||||||
|
# Copyright 2020 Canonical Ltd
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
from charms.reactive import when, when_not, set_state, remove_state
|
from charms.reactive import when, when_not, set_state, remove_state
|
||||||
from charmhelpers.core import hookenv
|
from charmhelpers.core import hookenv
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import unittest
|
|
||||||
import amulet
|
|
||||||
|
|
||||||
|
|
||||||
class TestDeploy(unittest.TestCase):
|
|
||||||
"""
|
|
||||||
Trivial deployment test for Magpie
|
|
||||||
"""
|
|
||||||
|
|
||||||
def test_deploy(self):
|
|
||||||
self.d = amulet.Deployment(series='xenial')
|
|
||||||
self.d.add('magpie', charm='~admcleod/magpie')
|
|
||||||
self.d.setup(timeout=900)
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': 'Waiting for peers...'},
|
|
||||||
timeout=3600)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
|
@ -1,83 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import re
|
|
||||||
import unittest
|
|
||||||
import amulet
|
|
||||||
|
|
||||||
|
|
||||||
class TestDeploy(unittest.TestCase):
|
|
||||||
"""
|
|
||||||
Deploy 2 peers and make sure their status messages contain "or" or "failed"
|
|
||||||
This does not test the substrate - only that the charms deploy and relate.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls):
|
|
||||||
cls.d = amulet.Deployment(series='xenial')
|
|
||||||
cls.d.add('magpie', charm='~admcleod/magpie', units=2)
|
|
||||||
cls.d.setup(timeout=900)
|
|
||||||
cls.magpie_0 = cls.d.sentry['magpie'][0]
|
|
||||||
cls.magpie_1 = cls.d.sentry['magpie'][1]
|
|
||||||
|
|
||||||
def test_deploy(self):
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': re.compile('ok|failed')},
|
|
||||||
timeout=60)
|
|
||||||
|
|
||||||
# following test is commented out until this bug is resolved;
|
|
||||||
# https://bugs.launchpad.net/juju/+bug/1623480
|
|
||||||
# def test_check_local_hostname(self):
|
|
||||||
# self.d.sentry.wait_for_messages({'magpie': {re.compile('.*hostname
|
|
||||||
# ok.*'}}, timeout=60)
|
|
||||||
|
|
||||||
def test_break_dns_single(self):
|
|
||||||
print('Test break dns single...')
|
|
||||||
"""
|
|
||||||
Break DNS on one unit, make sure DNS check fails, fix DNS, toggle
|
|
||||||
back
|
|
||||||
"""
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': 'icmp ok, dns ok'},
|
|
||||||
timeout=60)
|
|
||||||
self.magpie_0.run("sudo mv /etc/resolv.conf /etc/resolv.conf.bak")
|
|
||||||
self.magpie_0.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie':
|
|
||||||
{re.compile('.*dns failed*')}},
|
|
||||||
timeout=60)
|
|
||||||
self.magpie_0.run("sudo mv /etc/resolv.conf.bak /etc/resolv.conf")
|
|
||||||
self.magpie_0.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': 'icmp ok, dns ok'},
|
|
||||||
timeout=60)
|
|
||||||
|
|
||||||
def test_break_dns_all(self):
|
|
||||||
print('Test break dns all...')
|
|
||||||
"""
|
|
||||||
Set DNS with action to 255.255.255.255 - All units should fail DNS.
|
|
||||||
"""
|
|
||||||
self.d.configure('magpie', {'dns_server': '255.255.255.255'})
|
|
||||||
self.magpie_0.run("hooks/update-status")
|
|
||||||
self.magpie_1.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie':
|
|
||||||
re.compile('icmp ok,.*dns failed.*')})
|
|
||||||
self.d.configure('magpie', {'dns_server': ''})
|
|
||||||
self.magpie_0.run("hooks/update-status")
|
|
||||||
self.magpie_1.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': 'icmp ok, dns ok'})
|
|
||||||
|
|
||||||
def test_break_ping_single(self):
|
|
||||||
print('Test break ping single')
|
|
||||||
"""
|
|
||||||
Take primary interface down and make sure ICMP fails.
|
|
||||||
"""
|
|
||||||
stoprestart = "(sudo service networking stop; sleep 60; service \
|
|
||||||
networking start) & "
|
|
||||||
self.magpie_1.run(stoprestart)
|
|
||||||
self.magpie_1.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie':
|
|
||||||
{re.compile('icmp failed.*')}},
|
|
||||||
timeout=120)
|
|
||||||
self.magpie_1.run("hooks/update-status")
|
|
||||||
self.d.sentry.wait_for_messages({'magpie': {re.compile('icmp ok.*')}},
|
|
||||||
timeout=120)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
Loading…
Reference in New Issue