예제 #1
0
    def setup(self, context):
        before_dirs = [
            _d(os.path.join(context.output_directory, 'before', self._local_dir(d)))
            for d in self.paths
        ]
        after_dirs = [
            _d(os.path.join(context.output_directory, 'after', self._local_dir(d)))
            for d in self.paths
        ]
        diff_dirs = [
            _d(os.path.join(context.output_directory, 'diff', self._local_dir(d)))
            for d in self.paths
        ]
        self.device_and_host_paths = list(zip(self.paths, before_dirs, after_dirs, diff_dirs))

        if self.use_tmpfs:
            for d in self.paths:
                before_dir = self.target.path.join(self.on_device_before,
                                                   self.target.path.dirname(as_relative(d)))
                after_dir = self.target.path.join(self.on_device_after,
                                                  self.target.path.dirname(as_relative(d)))
                if self.target.file_exists(before_dir):
                    self.target.execute('rm -rf  {}'.format(before_dir), as_root=True)
                self.target.execute('mkdir -p {}'.format(before_dir), as_root=True)
                if self.target.file_exists(after_dir):
                    self.target.execute('rm -rf  {}'.format(after_dir), as_root=True)
                self.target.execute('mkdir -p {}'.format(after_dir), as_root=True)
예제 #2
0
 def stop(self, context):
     if self.use_tmpfs:
         for d in self.paths:
             dest_dir = self.target.path.join(self.on_device_after, as_relative(d))
             if '*' in dest_dir:
                 dest_dir = self.target.path.dirname(dest_dir)
             self.target.execute('{} cp -Hr {} {}'.format(self.target.busybox, d, dest_dir),
                                 as_root=True, check_exit_code=False)
     else:  # not using tmpfs
         for dev_dir, _, after_dir, _ in self.device_and_host_paths:
             self.target.pull(dev_dir, after_dir)
예제 #3
0
 def _local_dir(self, directory):
     return os.path.dirname(
         as_relative(directory).replace(self.target.path.sep, os.sep))