示例#1
0
 def test_zoo_pay_worker_no_budget(self):
     z = Zoo("Zoo", 200, 2, 2)
     z.hire_worker(Vet("John", 23, 100))
     z.hire_worker(Keeper("Bill", 28, 150))
     res = z.pay_workers()
     self.assertEqual(
         res, "You have no budget to pay your workers. They are unhappy")
示例#2
0
async def start_keeper(params, _loop=None):
    backend = None

    try:
        backend = Backend(params, _loop)
        await backend.connect()

        geodetector = get_geodetector(params, backend)

        frame_engine = Frame(geodetector)
        vehicles_engine = Vehicles(backend)

        keeper = Keeper(frame_engine, vehicles_engine)

        uri = f"ws://{params.wsaddr}{params.wspath}:{params.wsport}"
        async with websockets.connect(uri) as websocket:
            while True:
                message = await websocket.recv()
                try:
                    await keeper.serve(json.loads(message))
                except JSONDecodeError:
                    # todo logging
                    pass
                except error.KeeperError as e:
                    print(e)
                    break

    except error.KeeperBackendConnectionError as e:
        # todo организовать обработку прочик исключений
        pass
    except error.KeeperError:
        pass
    finally:
        await backend.destroy()
示例#3
0
 def test_zoo_pay_worker_success(self):
     z = Zoo("Zoo", 1500, 2, 2)
     z.hire_worker(Vet("John", 23, 100))
     z.hire_worker(Keeper("Bill", 28, 150))
     res = z.pay_workers()
     self.assertEqual(z._Zoo__budget, 1250)
     self.assertEqual(
         res, "You payed your workers. They are happy. Budget left: 1250")
示例#4
0
文件: keep.py 项目: basiliskus/keeper
def main(args):
    keeper = Keeper()

    if args['download']:
        keeper.download()

    if args['upload']:
        keeper.upload()
示例#5
0
    def test_restore_check_content(self):
        """Test restoring a file and check contents"""
        # Set paths
        cwd = os.getcwd()
        file_paths = [
            cwd + "/tmp/keeper_test_r_check/a/b/file1.txt",
            cwd + "/tmp/keeper_test_r_check/a/b/c/file2.txt",
            cwd + "/tmp/keeper_test_r_check/a/b/c/file3.txt",
            cwd + "/tmp/keeper_test_r_check/a/b/c/e/f4",
            cwd + "/tmp/keeper_test_r_check/a/b/d/file5.txt"
        ]
        folder_paths_to_create = [
            cwd + "/tmp/keeper_test_r_check/a/b/c/e/",
            cwd + "/tmp/keeper_test_r_check/a/b/d"
        ]
        directories_to_backup = [
            cwd + "/tmp/keeper_test_r_check/a/b/d/"
        ]
        file_expected_in_restore = os.path.join(
            cwd + "/tmp/keeper_test_r_check/a/b/d/file5.txt"
        )

        # Set sails
        keeper = Keeper(system_directories=directories_to_backup,
                        show_progress=False)

        # Create all directories
        for path in folder_paths_to_create:
            self._create_dir(path)

        # Create all files for backup
        for path in file_paths:
            # Create file
            with open(path, "w") as file_handle:
                file_handle.write("For Gondor!\n")

        # Create backup
        keeper.backup(
            destination_path=cwd + "/tmp/keeper_test_r_check",
            filename="restore_test.tar.gz"
        )

        # Purge the source directory
        self._purge_directory(cwd + "/tmp/keeper_test_r_check/a")

        # Restore
        keeper.restore(
            cwd + "/tmp/keeper_test_r_check/restore_test.tar.gz")

        # Get file contents
        with open(file_expected_in_restore, 'r') as restored_file:
            content = restored_file.read()
            logging.debug("content " + content)

        self.assertEqual(content, "For Gondor!\n")

        # Clean up test files and directories
        self._purge_directory(cwd + "/tmp/keeper_test_r_check")
示例#6
0
def main():
    keeper = Keeper(CONFIG)
    options = sys.argv[1:]
    comm = keeper.comm(options) if len(options) <= 2 else False

    if comm and callable(comm):
        print(comm())
    else:
        print(comm)
示例#7
0
 def test_worker_status(self):
     z = Zoo("My Zoo", 500, 3, 3)
     z.hire_worker(Vet("Leo", 35, 100))
     z.hire_worker(Keeper("Tigy", 40, 100))
     z.hire_worker(Caretaker("Chi", 24, 100))
     res = z.workers_status()
     self.assertEqual(
         res,
         "You have 3 workers\n----- 1 Keepers:\nName: Tigy, Age: 40, Salary: 100\n----- 1 Caretakers:\nName: Chi, Age: 24, Salary: 100\n----- 1 Vets:\nName: Leo, Age: 35, Salary: 100"
     )
示例#8
0
 def test_instantiating(self):
     """Test that Keeper class can be instantiated"""
     directories = [
         "/var/lib/rundeck/data",          # database
         "/var/lib/rundeck/logs",          # execution logs (by far biggest)
         "/var/lib/rundeck/.ssh",          # ssh keys
         "/var/lib/rundeck/var/storage",   # key storage files and metadata
         "/var/rundeck/projects"           # project definitions
     ]
     Keeper(system_directories=directories, show_progress=False)
示例#9
0
    def setUp(self):
        self.original_stream = console.stream
        console.stream = sys.stdout
        self.keeper_root = 'testkeeper'
        shutil.rmtree(self.keeper_root, ignore_errors=True)

        try:
            os.mkdir(self.keeper_root)
        except FileExistsError:
            pass
        self.keeper = Keeper(self.keeper_root)
示例#10
0
 def test_raises_exception_on_relative_paths(self):
     """Test that relative paths raise an exception"""
     contains_relative_paths = [
         "some/path/here",
         "some/other/path",
         "/this/is/valid/though"
     ]
     with self.assertRaises(Exception):
         Keeper(
             system_directories=contains_relative_paths,
             show_progress=False
         )
示例#11
0
    def test_raises_exception_on_overlapping_dirs_reversed(self):
        """Test that exception is raised for overlapping dirs.

        For example /tmp/a/b,/tmp/a/b/c should fail
        """
        # Set bad directories
        bad_directories = [
            "/tmp/keeper_python_unittest_raises/a/b",
            "/tmp/keeper_python_unittest_raises/a/b/c"
        ]
        # Set sails
        with self.assertRaises(Exception):
            Keeper(system_directories=bad_directories, show_progress=False)
示例#12
0
    def test_cleanup_pending_add_buffered_stream(self):
        # Temporarily ignore warnings
        with warnings.catch_warnings():
            warnings.simplefilter("ignore")

            stream = self.keeper.add_buffered_stream()
            stream.write(b"The very hungry caterpillar")
            self.assertIs(stream.key, None)
            # deliberately omitted close causes an intentional ResourceWarning
            self.assertEqual(len(self.keeper), 0)

            self.keeper = Keeper(self.keeper_root)
            stream = self.keeper.add_buffered_stream()
            stream.write(b"The very hungry caterpillar")
            stream.close()
            self.assertEqual(len(self.keeper), 1)
示例#13
0
    def __init__(self, config_file, nbr_total_item):
        """Constructeur.

        Argument(2):
        config_file : structure du labyrinthe
        nbr_total_item : nombre total d'objet présent dans la structure"""

        pygame.init()
        self.window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_WIDTH))
        pygame.display.set_caption("P3 : labyrinthe")
        font = pygame.font.Font(None, 64)
        self.text_victoire = font.render("Victoire !", 1, (0, 255, 0))
        self.text_defeat = font.render("Défaite !", 1, (255, 0, 0))
        self.level = Gameboard(config_file, nbr_total_item)
        self.character = Character(self.level)
        self.keeper = Keeper()
        i = 0
        while i < nbr_total_item:
            self.item = Item(self.level.gameboard)
            self.level.gameboard[self.item.pos_y][self.item.pos_x] = "I"
            i += 1
示例#14
0
def main():
    try:
        if args.conf:
            log.info("Reading conf from {}".format(args.conf))
            with open(args.conf, 'r') as pipes_file:
                conf = json.load(pipes_file,
                                 object_pairs_hook=collections.OrderedDict)

        simulators = []
        cache = Cache(args.db)

        admin_user = cache["users"]["admin"]
        admin_user["auth_url"] = cache["api"]["auth_url"]

        admin_factory = ClientFactory(admin_user)
        admin_keeper = Keeper(cache, admin_factory)

        if args.clean:
            log.info("Starting cleanup")
            admin_keeper.clean(args.clean)
            sys.exit()

        # This section for default initialization of cirros image
        log.debug("Caching default cirros image")
        (cache["glance"]["images"][admin_keeper.get(
            "glance", "images", "name",
            lambda x: x == "cirros-0.3.4-x86_64-uec")[0].id]) = False
        for flavor in admin_factory.nova().flavors.list():
            log.debug(
                "Caching flavor with name {name}".format(name=flavor.name))
            (cache["nova"]["flavors"][flavor.id]) = False

        for pipe_name, pipe in conf.iteritems():
            simulators.append(Simulator(pipe_name, pipe, cache, admin_keeper))

        for simulator in simulators:
            simulator.simulate()
    except KeyboardInterrupt:
        print('\nThe process was interrupted by the user')
        raise SystemExit
示例#15
0
# Copyright:   (c) CNYS 2015
# Licence:     <your licence>
#-------------------------------------------------------------------------------
#class imports
from maze import Maze
from keeper import Keeper
from crate import Crate

#add in the pygame imports
import random, sys, copy, os, pygame
from pygame.locals import *

score = 0
moves = 0
maze = Maze()
keeper = Keeper("^", 4, 1)
crate1 = Crate("/", 4, 2)
maze.placeCrate("/", 4, 2)



FPS = 30                    # frames per second to update the screen
WINWIDTH = 800              # width of the program's window, in pixels
WINHEIGHT = 600             # height in pixels
HALF_WINWIDTH = int(WINWIDTH / 2) #you need to know 1/2 sizes so you can
HALF_WINHEIGHT = int(WINHEIGHT / 2) #place things centrally

# The total width and height of each tile in pixels.
TILEWIDTH = 32
TILEHEIGHT = 32
TILEFLOORHEIGHT = 32
示例#16
0
from flask import Flask, Blueprint, request, Response, jsonify
from flask_api import status
from keeper import Keeper

app = Flask(__name__)
keep = Keeper()

@app.route('/<list_id>', methods=['GET'])
def listItems(list_id):
    return jsonify(
        uncheckedItems = keep.getUncheckedItems(list_id),
        checkedItems = keep.getCheckedItems(list_id)
    ), status.HTTP_200_OK

@app.route('/<list_id>', methods=['POST'])
def addListItem(list_id):
    content = request.json
    item = content['item']
    keep.addItem(list_id, item)

    return jsonify(
        addedItem = item,
    ), status.HTTP_200_OK

@app.route('/<list_id>', methods=['PUT'])
def checkUncheck(list_id):
    content = request.json
    item = content['item']

    keep.modifyCheckState(list_id, item)
示例#17
0
 def test_keeper_repr(self):
     k = Keeper("ally", 36, 190)
     res = str(k)
     self.assertEqual(res, "Name: ally, Age: 36, Salary: 190")
示例#18
0
import sys
from keeper import Keeper

if __name__ == '__main__':
    Keeper(sys.argv[1:]).main()
示例#19
0
    def test_backup(self):
        """Test creating a backup file from a set of directories"""
        cwd = os.getcwd()
        # Set paths
        file_paths = [
            cwd + "/tmp/keeper_test_backup/house/room/file1.txt",
            cwd + "/tmp/keeper_test_backup/house/room/desk/file2.txt",
            cwd + "/tmp/keeper_test_backup/house/room/desk/file3.txt",
            cwd + "/tmp/keeper_test_backup/house/room/desk/drawer/file4",
            cwd + "/tmp/keeper_test_backup/house/room/locker/file5.txt"
        ]
        folder_paths_to_create = [
            cwd + "/tmp/keeper_test_backup/house/room/desk/drawer",
            cwd + "/tmp/keeper_test_backup/house/room/locker"
        ]
        directories_to_backup = [
            cwd + "/tmp/keeper_test_backup/house/room/desk/drawer",
            cwd + "/tmp/keeper_test_backup/house/room/locker"
        ]
        files_expected_in_tar = [
            os.path.join(
                cwd.strip("/"),
                "tmp/keeper_test_backup/house/room/desk/drawer"
            ),
            os.path.join(
                cwd.strip("/"),
                "tmp/keeper_test_backup/house/room/desk/drawer/file4"
            ),
            os.path.join(
                cwd.strip("/"),
                "tmp/keeper_test_backup/house/room/locker"
            ),
            os.path.join(
                cwd.strip("/"),
                "tmp/keeper_test_backup/house/room/locker/file5.txt"
            )
        ]

        # Set sails
        keeper = Keeper(system_directories=directories_to_backup,
                        show_progress=False)

        # Create all directories
        for path in folder_paths_to_create:
            self._create_dir(path)

        # Create all files for backup test
        for path in file_paths:
            # Create file
            with open(path, "w") as file_handle:
                file_handle.write("For Gondor!\n")

        # Create backup
        keeper.backup(
            destination_path=cwd + "/tmp/keeper_test_backup",
            filename="backup_test.tar.gz"
        )

        # Get list of all file paths inside tar file
        files_in_tar = self._list_files_in_tar(
            cwd + "/tmp/keeper_test_backup/backup_test.tar.gz")

        # tar file can't be empty
        self.assertNotEqual(len(files_in_tar), 0)

        # Normpath the paths
        # NOTE: I don't know why this is necessary
        files_expected_in_tar = [
            os.path.normpath(p) for p in files_expected_in_tar
        ]
        files_in_tar = [
            os.path.normpath(p) for p in files_in_tar
        ]

        # Compare tar file and list of files
        self.assertEqual(files_expected_in_tar,
                         files_in_tar)

        # Recursively remove all directories and files used in test
        self._purge_directory(cwd + "/tmp/keeper_test_backup")
示例#20
0
 def test_keeper_init(self):
     k = Keeper("john", 21, 200)
     self.assertEqual(k.name, "john")
     self.assertEqual(k.age, 21)
     self.assertEqual(k.salary, 200)
示例#21
0
    def test_restore(self):
        """Test restoring a set of directories and files from a backup file"""
        # Set paths
        cwd = os.getcwd()
        file_paths = [
            cwd + "/tmp/keeper_test_restore/hotel/lobby/file1.txt",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/file2.txt",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/file3.txt",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/drawer/f4",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/locker/file5.txt"
        ]
        folder_paths_to_create = [
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/drawer/",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/locker"
        ]
        directories_to_backup = [
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/drawer/",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/locker/"
        ]
        files_expected_in_restore = [
            cwd + "/tmp/keeper_test_restore/hotel/lobby/desk/drawer/f4",
            cwd + "/tmp/keeper_test_restore/hotel/lobby/locker/file5.txt"
        ]

        # Set sails
        keeper = Keeper(system_directories=directories_to_backup,
                        show_progress=False)

        # Create all directories
        for path in folder_paths_to_create:
            self._create_dir(path)

        # Create all files for backup
        for path in file_paths:
            # Create file
            with open(path, "w") as file_handle:
                file_handle.write("For Gondor!\n")

        # Create backup
        keeper.backup(
            destination_path=cwd + "/tmp/keeper_test_restore",
            filename="restore_test.tar.gz"
        )

        # Purge the source directory
        self._purge_directory(cwd + "/tmp/keeper_test_restore/hotel")

        # Restore
        keeper.restore(
            cwd + "/tmp/keeper_test_restore/restore_test.tar.gz")

        # List all directories
        restored = cwd + "/tmp/keeper_test_restore/hotel"
        files_found = []
        for root, dirs, files in os.walk(restored):
            for f in files:
                files_found.append(os.path.join(root, f))

        self.assertEqual(files_found, files_expected_in_restore)

        # Clean up test files and directories
        self._purge_directory(cwd + "/tmp/keeper_test_restore")
示例#22
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--conf', dest='conf',
                        default='/etc/spamostack/conf.json',
                        help='Path to the config file with pipes')
    parser.add_argument('--db', dest='db', default='./db',
                        help='Path to the database directory')
    parser.add_argument('--verbose', action='store_true',
                        help='Increase verbose output')
    parser.add_argument('--clean', dest='clean', nargs='+',
                        help='Path to the database directory')
    args = parser.parse_args()

    log = logging.getLogger(__name__)
    if args.verbose:
        log.setLevel(logging.DEBUG)
        level = 'DEBUG'
    else:
        log.setLevel(logging.INFO)
        level = 'INFO'
    log.addHandler(logger.SpamStreamHandler())
    coloredlogs.install(level=level)

    try:
        log.info("Reading conf from {}".format(args.conf))
        with open(args.conf, 'r') as pipes_file:
            conf = json.load(pipes_file,
                             object_pairs_hook=collections.OrderedDict)

        simulators = []
        cache = Cache(args.db)

        users = cache["users"]
        admin_user = users["admin"]
        api = cache["api"]
        admin_user["auth_url"] = api["auth_url"]

        admin_factory = ClientFactory(admin_user)
        admin_keeper = Keeper(cache, admin_factory)

        if args.clean:
            log.info("Starting cleanup")
            admin_keeper.clean(args.clean)
            sys.exit()

        # This section for default initialization of cirros image
        log.debug("Caching default cirros image")
        (cache["glance"]["images"]
         [admin_keeper.get(
             "glance", "images", "name",
             lambda x: x == "cirros-0.3.4-x86_64-uec")[0].id]) = False
        for flavor in admin_factory.nova().flavors.list():
            log.debug("Caching flavor with name {name}".
                      format(name=flavor.name))
            (cache["nova"]["flavors"][flavor.id]) = False

        for pipe_name, pipe in conf.iteritems():
            simulators.append(Simulator(pipe_name, pipe, cache, admin_keeper))

        for simulator in simulators:
            simulator.simulate()
    except KeyboardInterrupt:
        print('\nThe process was interrupted by the user')
        raise SystemExit
示例#23
0
 def test_zoo_fire_worker_success(self):
     z = Zoo("Zoo", 1500, 1, 1)
     z.hire_worker(Keeper("K", 45, 100))
     res = z.fire_worker("K")
     self.assertEqual(res, "K fired successfully")
     self.assertEqual(z.workers, [])
# Animals creation
animals = [
    Cheetah("Cheeto", "Male", 2),
    Cheetah("Cheetia", "Female", 1),
    Lion("Simba", "Male", 4),
    Tiger("Zuba", "Male", 3),
    Tiger("Tigeria", "Female", 1),
    Lion("Nala", "Female", 4)
]

# Animal prices
prices = [200, 190, 204, 156, 211, 140]

# Workers creation
workers = [
    Keeper("John", 26, 100),
    Keeper("Adam", 29, 80),
    Keeper("Anna", 31, 95),
    Caretaker("Bill", 21, 68),
    Caretaker("Marie", 32, 105),
    Caretaker("Stacy", 35, 140),
    Vet("Peter", 40, 300),
    Vet("Kasey", 37, 280),
    Vet("Sam", 29, 220)
]

# Adding all animals
for i in range(len(animals)):
    animal = animals[i]
    price = prices[i]
    print(zoo.add_animal(animal, price))
示例#25
0
    def test_restore_does_not_overwrite(self):
        """Test that existing files are not overwritten by restore"""
        cwd = os.getcwd()
        base = cwd + "/tmp/keeper_python_unittest_restore_no_overwrite"
        # Set paths
        file_paths = [
            base + "/hotel/lobby/file1.txt",
            base + "/hotel/lobby/desk/file2.txt",
            base + "/hotel/lobby/desk/file3.txt",
            base + "/hotel/lobby/desk/drawer/f4",
            base + "/hotel/lobby/locker/file5.txt"
        ]
        folder_paths_to_create = [
            base + "/hotel/lobby/desk/drawer/",
            base + "/hotel/lobby/locker"
        ]
        directories_to_backup = [
            base + "/hotel/lobby/desk/drawer/",
            base + "/hotel/lobby/locker/"
        ]
        files_expected_in_restore = [
            base + "/hotel/lobby/desk/drawer/f4",
            base + "/hotel/lobby/locker/file5.txt"
        ]

        # Set sails
        keeper = Keeper(system_directories=directories_to_backup,
                        show_progress=False)

        # Create all directories
        for path in folder_paths_to_create:
            self._create_dir(path)

        # Create all files for backup
        for path in file_paths:
            # Create file
            with open(path, "w") as file_handle:
                file_handle.write("For Gondor!\n")

        # Create backup
        keeper.backup(
            destination_path=base,
            filename="restore_test.tar.gz"
        )

        # Write to files again
        for name in files_expected_in_restore:
            with open(name, "w") as file_handle:
                file_handle.write("new version\n")

        # Restore should raise exception on existing file
        with self.assertRaises(Exception):
            keeper.restore(base + "/restore_test.tar.gz")

        # Get file contents
        files_content = []
        for name in files_expected_in_restore:
            with open(name, "r") as file_handle:
                content = file_handle.read()
                files_content.append(content)

        self.assertEqual(
            files_content,
            [
                "new version\n",
                "new version\n"
            ]
        )

        # Purge the test directory
        self._purge_directory(base)