예제 #1
0
 def initialize(self):
     super(simple, self).initialize()
     config.none_if_empty(self.config)
     # Get free name
     docker_containers = DockerContainers(self)
     name = docker_containers.get_unique_name()
     self.sub_stuff['container_name'] = name
예제 #2
0
 def initialize(self):
     super(stop_base, self).initialize()
     # Prepare a container
     docker_containers = DockerContainers(self.parent_subtest)
     prefix = self.config["stop_name_prefix"]
     name = docker_containers.get_unique_name(prefix, length=4)
     self.sub_stuff['container_name'] = name
     config.none_if_empty(self.config)
     if self.config.get('run_options_csv'):
         subargs = [arg for arg in
                    self.config['run_options_csv'].split(',')]
     subargs.append("--name %s" % name)
     fin = DockerImage.full_name_from_defaults(self.config)
     subargs.append(fin)
     subargs.append("bash")
     subargs.append("-c")
     subargs.append(self.config['exec_cmd'])
     container = AsyncDockerCmd(self, 'run', subargs)
     self.sub_stuff['container_cmd'] = container
     container.execute()
     time.sleep(self.config['wait_start'])
     # Prepare the "stop" command
     if self.config.get('stop_options_csv'):
         subargs = [arg for arg in
                    self.config['stop_options_csv'].split(',')]
     subargs.append(name)
     self.sub_stuff['stop_cmd'] = DockerCmd(self, 'stop', subargs)
예제 #3
0
    def _init_container(self):
        """ Create, store in self.stuff and execute container """
        try:
            fin = DockerImage.full_name_from_defaults(self.config)
        except ValueError:
            raise DockerTestNAError("Empty test image name configured,"
                                    "did you set one for this test?")

        docker_containers = DockerContainers(self)
        name = docker_containers.get_unique_name()
        self.stuff['container_name'] = name
        if self.config.get('run_options_csv'):
            subargs = [arg for arg in
                       self.config['run_options_csv'].split(',')]
        else:
            subargs = []
        subargs.append("--name %s" % name)

        subargs.append(fin)
        subargs.append("bash")
        container = NoFailDockerCmd(self, 'run', subargs)
        self.stuff['container_cmd'] = container
        container.execute()

        if self.config.get('attach_options_csv'):
            subargs = [arg for arg in
                       self.config['attach_options_csv'].split(',')]
        else:
            subargs = []
        subargs.append(name)
        container = AsyncDockerCmd(self, 'attach', subargs)
        self.stuff['container_cmd'] = container  # overwrites finished cmd
        stdin = os.pipe()
        self.stuff['container_stdin'] = stdin[1]
        container.execute(stdin[0])
예제 #4
0
    def initialize(self):
        super(stop_base, self).initialize()
        # Prepare a container
        docker_containers = DockerContainers(self)
        name = docker_containers.get_unique_name()
        self.sub_stuff['container_name'] = name
        config.none_if_empty(self.config)
        if self.config.get('run_options_csv'):
            subargs = [
                arg for arg in self.config['run_options_csv'].split(',')
            ]
        subargs.append("--name %s" % name)
        fin = DockerImage.full_name_from_defaults(self.config)
        subargs.append(fin)
        subargs.append("bash")
        subargs.append("-c")
        subargs.append(self.config['exec_cmd'])

        container = AsyncDockerCmd(self, 'run', subargs)
        self.sub_stuff['container_cmd'] = container
        container.execute()
        container.wait_for_ready()
        # Prepare the "stop" command
        if self.config.get('stop_options_csv'):
            subargs = [
                arg for arg in self.config['stop_options_csv'].split(',')
            ]
        subargs.append(name)
        self.sub_stuff['stop_cmd'] = DockerCmd(self, 'stop', subargs)
예제 #5
0
    def initialize(self):
        super(run_memory_base, self).initialize()
        docker_containers = DockerContainers(self.parent_subtest)
        image = DockerImage.full_name_from_defaults(self.config)
        unit_list = ['', 'b', 'B', 'k', 'K', 'm', 'M', 'g', 'G']
        memory_list = []
        self.sub_stuff['name'] = []
        args = []

        if self.config['expect_success'] == "PASS":
            memory_value = str(self.config['memory_value'])
            if memory_value is not '0':
                for unit in unit_list:
                    memory_list.append(memory_value + unit)
            else:
                memory_list.append('0')
        else:
            memory_list.append(self.config['memory_min_invalid'])
            memory_list.append(self.config['memory_max_invalid'])
            memory_list.append(self.config['memory_invalid'])

        for memory in memory_list:
            prefix = self.config['memory_name_prefix']
            name = docker_containers.get_unique_name(prefix, length=4)
            if self.config['expect_success'] == "PASS":
                self.sub_stuff['name'].append(name)
            args.append(self.combine_subargs(name,
                                             memory,
                                             image,
                                             '/bin/bash'))
        self.sub_stuff['subargs'] = args
        self.sub_stuff['container_memory'] = memory_list
        self.sub_stuff['cgroup_memory'] = []
        self.sub_stuff['result'] = []
예제 #6
0
    def _init_container(self):
        """ Create, store in self.stuff and execute container """
        docker_containers = DockerContainers(self)
        prefix = self.config["container_name_prefix"]
        name = docker_containers.get_unique_name(prefix, length=4)
        self.stuff['container_name'] = name
        if self.config.get('run_options_csv'):
            subargs = [arg for arg in
                       self.config['run_options_csv'].split(',')]
        else:
            subargs = []
        subargs.append("--name %s" % name)
        fin = DockerImage.full_name_from_defaults(self.config)
        subargs.append(fin)
        subargs.append("bash")
        container = NoFailDockerCmd(self, 'run', subargs)
        self.stuff['container_cmd'] = container
        container.execute()

        if self.config.get('attach_options_csv'):
            subargs = [arg for arg in
                       self.config['attach_options_csv'].split(',')]
        else:
            subargs = []
        subargs.append(name)
        container = AsyncDockerCmd(self, 'attach', subargs)
        self.stuff['container_cmd'] = container  # overwrites finished cmd
        stdin = os.pipe()
        self.stuff['container_stdin'] = stdin[1]
        container.execute(stdin[0])
예제 #7
0
 def initialize(self):
     super(flag, self).initialize()
     self.stuff["containter_name"] = []
     self.stuff["subargs"] = []
     self.stuff["cmdresult"] = []
     docker_containers = DockerContainers(self)
     self.logdebug("Generating ramdom name will take 1 minute")
     cname = docker_containers.get_unique_name()
     self.stuff["containter_name"] = cname
예제 #8
0
 def initialize(self):
     super(simple, self).initialize()
     self._init_stuff()
     config.none_if_empty(self.config)
     # Get free name
     prefix = self.config["container_name_prefix"]
     docker_containers = DockerContainers(self.parent_subtest)
     name = docker_containers.get_unique_name(prefix, length=4)
     self.sub_stuff['container_name'] = name
예제 #9
0
 def initialize(self):
     super(flag, self).initialize()
     self.stuff["containter_name"] = []
     self.stuff["subargs"] = []
     self.stuff["cmdresult"] = []
     docker_containers = DockerContainers(self)
     self.logdebug("Generating ramdom name will take 1 minute")
     cname = docker_containers.get_unique_name("docker", "test", 4)
     self.stuff["containter_name"] = cname
예제 #10
0
 def initialize(self):
     super(diff_base, self).initialize()
     dc = DockerContainers(self)
     name = self.sub_stuff['name'] = dc.get_unique_name()
     fin = DockerImage.full_name_from_defaults(self.config)
     subargs = ['--name=%s' % (name), fin]
     subargs = subargs + self.config['command'].split(',')
     nfdc = DockerCmd(self, 'run', subargs)
     mustpass(nfdc.execute())
예제 #11
0
 def initialize(self):
     super(diff_base, self).initialize()
     dc = DockerContainers(self)
     name = self.sub_stuff['name'] = dc.get_unique_name()
     fin = DockerImage.full_name_from_defaults(self.config)
     subargs = ['--name=%s' % (name), fin]
     subargs = subargs + self.config['command'].split(',')
     nfdc = DockerCmd(self, 'run', subargs)
     mustpass(nfdc.execute())
예제 #12
0
 def initialize(self):
     super(run_attach_stdout, self).initialize()
     dc = DockerContainers(self.parent_subtest)
     self.sub_stuff["rand_name"] = rand_name = dc.get_unique_name()
     self.sub_stuff["rand_data"] = utils.generate_random_string(8)
     self.sub_stuff["subargs"].insert(0, "--name=\"%s\"" % rand_name)
     attach_options = self.config['attach_options_csv'].split(',')
     attach_options.append(rand_name)
     self.sub_stuff['attach_options'] = attach_options
     self.sub_stuff["rpipe"], self.sub_stuff["wpipe"] = os.pipe()
예제 #13
0
 def initialize(self):
     super(diff_base, self).initialize()
     dc = DockerContainers(self.parent_subtest)
     scn = self.__class__.__name__
     name = self.sub_stuff['name'] = dc.get_unique_name(prefix=scn)
     fin = DockerImage.full_name_from_defaults(self.config)
     subargs = ['--name=%s' % (name), fin]
     subargs = subargs + self.config['command'].split(',')
     nfdc = NoFailDockerCmd(self, 'run', subargs)
     nfdc.execute()
예제 #14
0
 def initialize(self):
     """
     Runs one container
     """
     super(kill_bad_base, self).initialize()
     config.none_if_empty(self.config)
     # Prepare a container
     docker_containers = DockerContainers(self)
     name = docker_containers.get_unique_name()
     self.sub_stuff['container_name'] = name
     self._init_container(name)
     time.sleep(self.config.get('wait_start', 3))
예제 #15
0
 def initialize(self):
     super(syslog, self).initialize()
     dc = DockerContainers(self)
     scn = self.__class__.__name__
     name = self.stuff["container_name"] = dc.get_unique_name(prefix=scn)
     self.stuff['name'] = '--name=%s' % name
     self.stuff['fin'] = DockerImage.full_name_from_defaults(self.config)
     self.stuff['params'] = '-v /dev/log:/dev/log'
     now = datetime.datetime.now()
     time = now.strftime("%Y-%m-%d %H:%M:%S")
     self.stuff["msg"] = "SYSLOGTEST at time: %s" % time
     self.stuff['testcmds'] = 'logger %s' % self.stuff["msg"]
예제 #16
0
 def initialize(self):
     """
     Runs one container
     """
     super(kill_bad_base, self).initialize()
     # Prepare a container
     docker_containers = DockerContainers(self.parent_subtest)
     name = docker_containers.get_unique_name()
     self.sub_stuff['container_name'] = name
     config.none_if_empty(self.config)
     self._init_container(name)
     time.sleep(self.config.get('wait_start', 3))
예제 #17
0
 def initialize(self):
     super(syslog, self).initialize()
     if not os.path.isfile(self.config['syslogfile']):
         raise DockerTestNAError("Couldn't find system log: %s"
                                 % self.config['syslogfile'])
     dc = DockerContainers(self)
     name = self.stuff["container_name"] = dc.get_unique_name()
     self.stuff['name'] = '--name=%s' % name
     self.stuff['fin'] = DockerImage.full_name_from_defaults(self.config)
     self.stuff['params'] = '-v /dev/log:/dev/log'
     now = datetime.datetime.now()
     time = now.strftime("%Y-%m-%d %H:%M:%S")
     self.stuff["msg"] = "SYSLOGTEST at time: %s" % time
     self.stuff['testcmds'] = 'logger %s' % self.stuff["msg"]
예제 #18
0
 def init_subargs(self):
     """
     Initialize basic arguments that will use for start container
     Will return a list 'args'
     """
     docker_containers = DockerContainers(self)
     image = DockerImage.full_name_from_defaults(self.config)
     name = docker_containers.get_unique_name()
     self.sub_stuff['name'] = name
     bash_cmd = self.config['bash_cmd']
     args = ["--name=%s" % name]
     args += get_as_list(self.config['run_args_csv'])
     args += [image, bash_cmd]
     return args
예제 #19
0
 def init_subargs(self):
     """
     Initialize basic arguments that will use for start container
     Will return a list 'args'
     """
     docker_containers = DockerContainers(self)
     image = DockerImage.full_name_from_defaults(self.config)
     name = docker_containers.get_unique_name()
     self.sub_stuff['name'] = name
     bash_cmd = self.config['bash_cmd']
     args = ["--name=%s" % name]
     args += get_as_list(self.config['run_args_csv'])
     args += [image, bash_cmd]
     return args
예제 #20
0
 def initialize(self):
     super(simple, self).initialize()
     # Test container setup
     dc = DockerContainers(self)
     c_name = dc.get_unique_name()
     self.sub_stuff["containers"].append(c_name)
     self.init_test_container(c_name)
     # export/import command setup
     di = DockerImages(self)
     i_name = di.get_unique_name(c_name)  # easier debugging
     self.sub_stuff["images"].append(i_name)
     subdct = {"container": c_name, "image": i_name}
     export_cmd_args = self.config['export_cmd_args'].strip() % subdct
     import_cmd_args = self.config['import_cmd_args'].strip() % subdct
     self.init_ei_dockercmd(export_cmd_args, import_cmd_args)
예제 #21
0
 def initialize(self):
     super(simple, self).initialize()
     # Test container setup
     dc = DockerContainers(self)
     c_name = dc.get_unique_name()
     self.sub_stuff["containers"].append(c_name)
     self.init_test_container(c_name)
     # export/import command setup
     di = DockerImages(self)
     i_name = di.get_unique_name(c_name)  # easier debugging
     self.sub_stuff["images"].append(i_name)
     subdct = {"container": c_name, "image": i_name}
     export_cmd_args = self.config['export_cmd_args'].strip() % subdct
     import_cmd_args = self.config['import_cmd_args'].strip() % subdct
     self.init_ei_dockercmd(export_cmd_args, import_cmd_args)
예제 #22
0
    def _init_subargs(self):
        """
        Initialize basic arguments that will use for start container
        Will return a list 'args'
        """
        docker_containers = DockerContainers(self.parent_subtest)
        image = DockerImage.full_name_from_defaults(self.config)
        prefix = self.config['name_prefix']
        name = docker_containers.get_unique_name(prefix, length=4)
        self.sub_stuff['name'] = name
        bash_cmd = self.config['bash_cmd']
        args = ["--name=%s" % name,
                image,
                bash_cmd]

        return args
예제 #23
0
 def run_once(self):
     """
     Main test body
     """
     super(kill_bad_base, self).run_once()
     self.logdebug("Executing couple of bad kill signals.")
     self.failif(self.sub_stuff["container_cmd"].done, "Testing container " "died unexpectadly.")
     for signal in self.config["bad_signals"].split(","):
         mustfail(DockerCmd(self, "kill", ["-s", signal, self.sub_stuff["container_name"]]).execute(), 1)
         self.failif(
             self.sub_stuff["container_cmd"].done, "Testing " "container died after using signal %s." % signal
         )
     dkrcnt = DockerContainers(self)
     nonexisting_name = dkrcnt.get_unique_name()
     self.logdebug("Killing nonexisting containe.")
     mustfail(DockerCmd(self, "kill", [nonexisting_name]).execute(), 1)
예제 #24
0
    def initialize(self):
        if self.config["remote_image_fqin"] == "":
            raise error.TestNAError("Unable to prepare env for test:"
                                    "run_remote_tag/remote_image_fqin have to "
                                    "be filled by functional repo address.")
        comp = DockerImage.split_to_component(self.config["remote_image_fqin"])
        (self.config["docker_repo_name"],
         self.config["docker_repo_tag"],
         self.config["docker_registry_host"],
         self.config["docker_registry_user"]) = comp

        super(run_remote_tag, self).initialize()

        dc = DockerContainers(self.parent_subtest)
        rand_name = dc.get_unique_name()
        self.sub_stuff["rand_name"] = rand_name
        self.sub_stuff["subargs"].insert(0, "--name=%s " % rand_name)
예제 #25
0
 def run_once(self):
     """
     Main test body
     """
     super(kill_bad_base, self).run_once()
     self.logdebug("Executing couple of bad kill signals.")
     self.failif(self.sub_stuff['container_cmd'].done, "Testing container "
                 "died unexpectadly.")
     for signal in self.config['bad_signals'].split(','):
         MustFailDockerCmd(self, 'kill',
                           ['-s', signal, self.sub_stuff['container_name']],
                           verbose=False).execute()
         self.failif(self.sub_stuff['container_cmd'].done, "Testing "
                     "container died after using signal %s." % signal)
     dkrcnt = DockerContainers(self.parent_subtest)
     nonexisting_name = dkrcnt.get_unique_name()
     self.logdebug("Killing nonexisting containe.")
     MustFailDockerCmd(self, 'kill', [nonexisting_name],
                       verbose=False).execute()
예제 #26
0
 def run_once(self):
     """
     Main test body
     """
     super(kill_bad_base, self).run_once()
     self.logdebug("Executing couple of bad kill signals.")
     self.failif(self.sub_stuff['container_cmd'].done, "Testing container "
                 "died unexpectadly.")
     for signal in self.config['bad_signals'].split(','):
         mustfail(
             DockerCmd(self, 'kill',
                       ['-s', signal, self.sub_stuff['container_name']
                        ]).execute(), 1)
         self.failif(
             self.sub_stuff['container_cmd'].done, "Testing "
             "container died after using signal %s." % signal)
     dkrcnt = DockerContainers(self)
     nonexisting_name = dkrcnt.get_unique_name()
     self.logdebug("Killing nonexisting containe.")
     mustfail(DockerCmd(self, 'kill', [nonexisting_name]).execute(), 1)
예제 #27
0
    def initialize(self):
        super(kill_base, self).initialize()
        # Prepare a container
        docker_containers = DockerContainers(self)
        name = docker_containers.get_unique_name("test", length=4)
        self.sub_stuff["container_name"] = name
        config.none_if_empty(self.config)
        if self.config.get("run_container_attached"):
            self._init_container_attached(name)
        else:
            self._init_container_normal(name)

        time.sleep(self.config["wait_start"])

        # Prepare the "kill" command
        if self.config.get("kill_options_csv"):
            subargs = [arg for arg in self.config["kill_options_csv"].split(",")]
        else:
            subargs = []
        subargs.append(name)
        self._populate_kill_cmds(subargs)
예제 #28
0
 def initialize(self):
     super(sigproxy_base, self).initialize()
     self.init_test_specific_variables()
     self.sub_stuff['container_name'] = None  # tested container name
     self.sub_stuff['container_cmd'] = None  # tested container cmd
     self.sub_stuff['kill_signals'] = None  # testing kill signal
     self.sub_stuff['negative_test'] = None  # sigproxy enabled/disabled
     self.sub_stuff['check_stdout'] = self.config['check_stdout']
     config.none_if_empty(self.config)
     # Prepare a container
     docker_containers = DockerContainers(self)
     name = docker_containers.get_unique_name()
     self.sub_stuff['container_name'] = name
     if self.sub_stuff['attached']:
         self._init_container_attached(name)
     else:
         self._init_container_normal(name)
     time.sleep(self.config['wait_start'])
     # Prepare the "sigproxy" command
     kill_sigs = [int(sig) for sig in self.config['kill_signals'].split()]
     self.sub_stuff['kill_signals'] = kill_sigs
     self.sub_stuff['negative_test'] = self.config.get('negative_test')
예제 #29
0
 def initialize(self):
     super(sigproxy_base, self).initialize()
     self.init_test_specific_variables()
     self.sub_stuff["container_name"] = None  # tested container name
     self.sub_stuff["container_cmd"] = None  # tested container cmd
     self.sub_stuff["kill_signals"] = None  # testing kill signal
     self.sub_stuff["negative_test"] = None  # sigproxy enabled/disabled
     self.sub_stuff["check_stdout"] = self.config["check_stdout"]
     config.none_if_empty(self.config)
     # Prepare a container
     docker_containers = DockerContainers(self)
     name = docker_containers.get_unique_name()
     self.sub_stuff["container_name"] = name
     if self.sub_stuff["attached"]:
         self._init_container_attached(name)
     else:
         self._init_container_normal(name)
     self._wait_for_ready()
     # Prepare the "sigproxy" command
     kill_sigs = [int(sig) for sig in self.config["kill_signals"].split()]
     self.sub_stuff["kill_signals"] = kill_sigs
     self.sub_stuff["negative_test"] = self.config.get("negative_test")
예제 #30
0
 def initialize(self):
     super(sigproxy_base, self).initialize()
     self.init_test_specific_variables()
     self.sub_stuff['container_name'] = None     # tested container name
     self.sub_stuff['container_cmd'] = None      # tested container cmd
     self.sub_stuff['kill_signals'] = None        # testing kill signal
     self.sub_stuff['negative_test'] = None      # sigproxy enabled/disabled
     self.sub_stuff['check_stdout'] = self.config['check_stdout']
     config.none_if_empty(self.config)
     # Prepare a container
     docker_containers = DockerContainers(self)
     name = docker_containers.get_unique_name()
     self.sub_stuff['container_name'] = name
     if self.sub_stuff['attached']:
         self._init_container_attached(name)
     else:
         self._init_container_normal(name)
     time.sleep(self.config['wait_start'])
     # Prepare the "sigproxy" command
     kill_sigs = [int(sig) for sig in self.config['kill_signals'].split()]
     self.sub_stuff['kill_signals'] = kill_sigs
     self.sub_stuff['negative_test'] = self.config.get('negative_test')
예제 #31
0
    def initialize(self):
        super(kill_base, self).initialize()
        # Prepare a container
        docker_containers = DockerContainers(self)
        name = docker_containers.get_unique_name("test", length=4)
        self.sub_stuff['container_name'] = name
        config.none_if_empty(self.config)
        if self.config.get('run_container_attached'):
            self._init_container_attached(name)
        else:
            self._init_container_normal(name)

        cmd = self.sub_stuff['container_cmd']
        cmd.wait_for_ready()

        # Prepare the "kill" command
        if self.config.get('kill_options_csv'):
            subargs = [arg for arg in
                       self.config['kill_options_csv'].split(',')]
        else:
            subargs = []
        subargs.append(name)
        self._populate_kill_cmds(subargs)