def test_provider_vm_terminate(self):
        HEADING()
        name = str(Name())
        Benchmark.Start()
        data = provider.destroy(name=name)
        Benchmark.Stop()

        pprint(data)

        termination_timeout = 360
        time = 0
        while time <= termination_timeout:
            sleep(5)
            time += 5
            if cloud == 'chameleon' and len(provider.info(name=name)) == 0:
                break
            elif cloud == 'aws' and (len(
                    provider.info(name=name)) == 0 or provider.info(
                        name=name)[0]["cm"]["status"] in ['TERMINATED']):
                break
            elif cloud == 'azure':
                try:
                    provider.info(name=name)
                except Exception:
                    # if there is an exception that means the group has been
                    # deleted
                    break

        # print(provider.info(name=name))
        if cloud == 'chameleon':
            assert len(provider.info(name=name)) == 0
        elif cloud == 'aws':
            assert len(data) == 0 if data else True \
                   or (data[0]["cm"]["status"] in ['BOOTING', 'TERMINATED']
                       if data and data[0].get('cm', None) is not None
                       else True)
        elif cloud == 'azure':
            try:
                provider.info(name=name)
            except Exception:
                # if there is an exception that means the group has been
                # deleted
                pass
        elif cloud == 'oracle':
            info = provider.info(name)
            assert info is None or info[0]['_lifecycle_state'] in [
                'TERMINATED'
            ]
        else:
            raise NotImplementedError
예제 #2
0
    def test_create_with_options(self):
        HEADING()

        vm_name = f"{self.vm_name_prefix}3"

        Benchmark.Start()
        result = Shell.execute(
            f"cms multipass create {vm_name} --cpus=2 --size=3G --image=bionic --mem=1G",
            shell=True)
        Benchmark.Stop()
        VERBOSE(result)

        assert f'Launched: {vm_name}' in result, "Error creating instance"
        Benchmark.Status(True)
예제 #3
0
    def test_02_start(self):
        HEADING()

        Benchmark.Start()
        result = Shell.execute(
            "cms vm start test_boot_02 --parallel --processors=3 --dryrun",
            shell=True)
        Benchmark.Stop()

        VERBOSE(result)

        assert "start nodes ['test_boot_02']" in result
        assert "option - pool" in result
        assert "processors - 3" in result
예제 #4
0
 def test_provider_volume_delete(self):
     HEADING()
     Benchmark.Start()
     provider.delete(name=name)
     Benchmark.Stop()
     result = provider.info(name=name)
     if cloud == 'oracle':
         status = result['lifecycle_state']
         assert status in ['TERMINATED']
     elif cloud == 'multipass':
         status = result['State']
         assert status in ['deleted']
     else:
         assert result is None
예제 #5
0
    def test_provider_create(self):
        HEADING()

        vm_name = f"{self.vm_name_prefix}2"

        provider = Provider(vm_name)

        Benchmark.Start()
        result = provider.create(vm_name)
        Benchmark.Stop()
        VERBOSE(result)

        assert 'Running' in result['status'], "Error creating instance"
        Benchmark.Status(True)
예제 #6
0
 def test_upload_key_to_cloud(self):
     HEADING()
     if cloud == 'aws':
         all_keys = cm.find_all_by_name(KEY, "key")
         for k in all_keys:
             if 'public_key' in k.keys():
                 key = k
                 break
     else:
         key = cm.find_name(KEY, "key")[0]
     pprint(key)
     Benchmark.Start()
     r = provider.key_upload(key)
     Benchmark.Stop()
예제 #7
0
    def test_03_delete(self):
        HEADING()

        while 'pending' in Shell.execute("cms vm list test_boot_02 --refresh",
                                         shell=True):
            time.sleep(1)

        Benchmark.Start()
        result = Shell.execute("cms vm delete test_boot_02", shell=True)
        Benchmark.Stop()

        VERBOSE(result)

        assert "test_boot_02" in result
예제 #8
0
    def test_01_start(self):
        HEADING()

        Benchmark.Start()
        result = Shell.execute(
            f"cms vm start test_boot_02 --cloud={CLOUD} --dryrun",
            shell=True)
        Benchmark.Stop()

        VERBOSE(result)

        assert "start nodes ['test_boot_02']" in result
        assert "option - iter" in result
        assert "processors - None" in result
    def test_provider_get(self):
        HEADING()

        self.provider = Provider()

        Benchmark.Start()
        result = self.provider.get()
        Benchmark.Stop()
        VERBOSE(result)

        result = str(result)

        assert "missing" in result
        Benchmark.Status(True)
예제 #10
0
 def test_provider_volume_add_tag(self):
     HEADING()
     key = "key"
     key_value = "value"
     params = {"key": key, "value": key_value, 'NAME': name}
     Benchmark.Start()
     data = provider.add_tag(**params)
     Benchmark.Stop()
     for entry in data:
         if cloud == 'aws':
             tags = entry['cm']['tags']
             assert tags == [{'Key': key, 'Value': key_value}]
         elif cloud == 'multipass':
             tags = entry['tags']
             assert tags == [{key: key_value}]
 def test_vm_status(self):
     HEADING()
     name = str(Name())
     Benchmark.Start()
     data = provider.status(name=name)
     if type(data) == list:
         data = data[0]
     print(data)
     Benchmark.Stop()
     if cloud == 'oracle':
         assert data["cm.status"] in ['STARTING', 'RUNNING', 'STOPPING',
                                      'STOPPED']
     else:
         assert data["cm.status"] in ['ACTIVE', 'BOOTING', 'TERMINATED',
                                      'STOPPED']
예제 #12
0
    def test_googletoawsDir2(self):
        HEADING()

        sourcecloud = "google"
        targetcloud = "aws"
        sourceFile = "a1/testfolder/"
        targetFile = "a1/testfolder_1/"

        Benchmark.Start("GOOGLE_TO_AWS3")
        awsProvider = Provider(service=sourcecloud)
        testResult = awsProvider.copyFiles(source_cloud=sourcecloud,
                                           source_file=sourceFile,
                                           target_cloud=targetcloud,
                                           target_file=targetFile)
        Benchmark.Stop()
예제 #13
0
    def test_googletoaws(self):
        HEADING()
        sourcecloud = "google"
        targetcloud = "aws"
        sourceFile = "uploadtest_awsgoogle.txt"
        targetFile = "uploadtest_googeaws.txt"

        Benchmark.Start("GOOGLE_TO_AWS1")
        awsProvider = Provider(service=sourcecloud)
        testResult = awsProvider.copyFiles(source_cloud=sourcecloud,
                                           source_file=sourceFile,
                                           target_cloud=targetcloud,
                                           target_file=targetFile)

        Benchmark.Stop()
    def test_reboot(self):
        HEADING()

        self.provider = Provider()

        #Using 2 VMs to test_created usingn test_create* methods.
        vm_names = f"{self.vm_name_prefix}1,{self.vm_name_prefix}3"

        Benchmark.Start()
        result = Shell.execute(f"cms multipass reboot {vm_names}", shell=True)
        Benchmark.Stop()

        VERBOSE(result)

        assert 'Running' in result, "Error rebooting instance"
    def test_cm_find_loop(self):
        HEADING()
        Benchmark.Start()
        entries = []
        for kind in ['vm', "image", "flavor"]:
            data = cm.find(cloud=f"{cloud}", kind=kind)
            if len(data) > 0:
                entries.append(data)
        if benchmark_print:
            pprint(entries)
        else:
            print(f"Number of entries [{kind}", len(data))
        Benchmark.Stop()

        assert len(entries) > 0
    def test_cm_find_cloud_name_attributes(self):
        HEADING()
        print()
        Benchmark.Start()
        entries = cm.find(collection=f"{cloud}-vm",
                          attributes=['cm.cloud', 'cm.name'])
        Benchmark.Stop()

        kind = "vm"
        if benchmark_print:
            print(entries)
        else:
            print(f"Number of entries [{kind}", len(entries))

        assert len(entries) > 0
    def test_provider_run_buffer(self):
        HEADING()

        self.provider = Provider()

        Benchmark.Start()
        result = self.provider.run(command="uname -a", executor="buffer")
        Benchmark.Stop()
        VERBOSE(result)

        # find a good assertion
        result = str(result)

        assert "18.04" in result
        Benchmark.Status(True)
예제 #18
0
 def test_check(self):
     HEADING()
     cmd = "cms burn check"
     Benchmark.Start()
     result = Shell.run(cmd)
     Benchmark.Stop()
     print(result)
     expected = [
         'hostname', 'test_host', 'ip', '10.1.1.253/24', 'ssh', 'True',
         'auth_key', 'test@test', 'wifi', 'True', 'psk', 'test_pass',
         'ssid', 'test_ssid'
     ]
     for val in expected:
         assert val in result.split()
     assert result.split().count('True') == 2
예제 #19
0
    def test_get_storage_lifecycle_policy(self):
        ''' Return Storage Lifecycle Policy details '''

        HEADING()
        Benchmark.Start()

        # Execute CMS command
        result = Shell.execute(
            "cms", ["storagelifecycle", "get", "aws", self.storage_bucket])

        # Evaluate result
        data = json.loads(result)
        assert data["ResponseMetadata"]["HTTPStatusCode"] == 200

        Benchmark.Stop()
예제 #20
0
    def test_delete_storage_lifecycle_policy(self):
        ''' Delete Storage Lifecycle Policy '''

        HEADING()
        Benchmark.Start()

        # Execute CMS command
        result = Shell.execute(
            "cms", ["storagelifecycle", "delete", "aws", self.storage_bucket])

        # Evaluate result (Successful delete = 204)
        data = json.loads(result)
        assert data["ResponseMetadata"]["HTTPStatusCode"] == 204

        Benchmark.Stop()
예제 #21
0
    def test_load(self):
        HEADING(color="HEADER")

        r = rules.clear()
        g = groups.clear()

        Benchmark.Start()
        examples.load()
        Benchmark.Stop()

        r = rules.list()
        g = groups.list()

        assert len(g) == len(examples.secgroups)
        assert len(r) == len(examples.secrules)
예제 #22
0
    def test_load(self):
        HEADING()
        Benchmark.Start()
        run("load", "cms sec load")
        Benchmark.Stop()

        r = rules.list()
        g = groups.list()

        assert len(r) > 0
        assert len(g) > 0

        examples = SecgroupExamples()
        assert len(g) == len(examples.secgroups)
        assert len(r) == len(examples.secrules)
예제 #23
0
    def test_name_counter(self):
        HEADING()
        n = Name()
        Benchmark.Start()
        c = n.counter
        Benchmark.Stop()
        print(n.counter)
        assert n.counter == 2

        m = Name()

        pprint(n.dict())
        pprint(m.dict())
        print(m)
        assert str(n) == str(m)
    def test_rule_list(self):
        HEADING()

        Benchmark.Start()
        result = run("cms sec rule list")
        Benchmark.stop()
        r = rules.list()
        g = groups.list()

        for entry in r:
            name = entry['name']
            assert name in result
        for entry in g:
            name = entry['name']
            assert name in result
def test_remove_group():
    HEADING()
    name = list(examples.secgroups.keys())[0]

    original = groups.list()

    Benchmark.Start()
    groups.remove(name=name)
    Benchmark.Stop()

    updated = groups.list()

    print(len(original), "->", len(updated))

    assert len(updated) == len(original) - 1
    def test_registry_list_name(self):
        HEADING()

        Benchmark.Start()

        title = spec["info"]["title"]

        registry = Registry()

        entry = registry.list(name=title)
        pprint(entry)

        assert entry != None

        Benchmark.Stop()
    def download_data(
            cls,
            images_filename: str = 'lfw-funneled.tgz',
            images_url: str = 'https://ndownloader.figshare.com/files/5976015',
            images_checksum: str = 'b47c8422c8cded889dc5a13418c4bc2a'
        'bbda121092b3533a83306f90d900100a',
            data_home: str = None,
            data_subdir: str = "lfw_home",
            image_subdir: str = "lfw_funneled",
            target_filenames: list = [],
            target_urls: list = [],
            target_checksums: list = []):
        '''
        '''
        # this function is based on SKLearn's _check_fetch_lfw function.
        Benchmark.Start()
        archive = RemoteFileMetadata(images_filename,
                                     images_url,
                                     checksum=(images_checksum))

        if target_filenames != []:
            target_attributes = zip(target_filenames, target_urls,
                                    target_checksums)
            targets = ()
            for target in target_attributes:
                filename, url, checksum = target
                targets = targets + (RemoteFileMetadata(
                    filename, url, checksum))

        data_home = get_data_home(data_home=data_home)
        lfw_home = join(data_home, data_subdir)

        if not exists(lfw_home):
            makedirs(lfw_home)

        for target in TARGETS:
            target_filepath = join(lfw_home, target.filename)
            _fetch_remote(target, dirname=lfw_home)

        data_folder_path = join(lfw_home, image_subdir)
        archive_path = join(lfw_home, archive.filename)
        _fetch_remote(archive, dirname=lfw_home)

        import tarfile
        tarfile.open(archive_path, "r:gz").extractall(path=lfw_home)
        remove(archive_path)
        Benchmark.Stop()
        return f'Data downloaded to {lfw_home}'
예제 #28
0
    def test_unmount(self):
        HEADING()
        card = SDCard(card_os="raspberry")
        global user
        global device
        cmd = f"cms burn unmount --device={device}"
        Benchmark.Start()
        result = os.system(cmd)
        Benchmark.Stop()
        result = Shell.run(f"ls {card.boot_volume}").strip().splitlines()
        assert "No such file or directory" in result[0]
        result = Shell.run(f"ls {card.root_volume}").strip().splitlines()
        assert "No such file or directory" in result[0]

        sys.stdout.flush()
        sys.stderr.flush()
예제 #29
0
    def test_set_key(self):
        HEADING()
        card = SDCard(card_os="raspberry")
        test_key = 'ssh-rsa AAAAAAAA test@test'
        f = open("test.pub", "w")
        f.write(test_key)
        f.close()

        cmd = 'cms burn set --key=./test.pub'
        Benchmark.Start()
        os.system(cmd)
        Benchmark.Stop()
        cmd = f'sudo cat {card.root_volume}/home/pi/.ssh/authorized_keys'
        result = Shell.run(cmd)
        os.system('rm ./test.pub')
        assert test_key in result.strip()
예제 #30
0
    def test_mount(self):
        HEADING()
        card = SDCard(card_os="raspberry")
        global user
        global device
        cmd = f"cms burn mount --device={device}"
        Benchmark.Start()
        result = os.system(cmd)
        Benchmark.Stop()
        result = Shell.run(f"ls {card.boot_volume}").splitlines()
        assert len(result) > 0
        result = Shell.run(f"ls {card.root_volume}").splitlines()
        assert len(result) > 0

        sys.stdout.flush()
        sys.stderr.flush()