Beispiel #1
0
 def test_print_obj_valid(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir)
     etag_msg = 'ETag: Not found in metadata'
     length_msg = 'Content-Length: Not found in metadata'
     self.assertTrue(etag_msg in out.getvalue())
     self.assertTrue(length_msg in out.getvalue())
Beispiel #2
0
 def test_print_obj_valid(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir)
     etag_msg = 'ETag: Not found in metadata'
     length_msg = 'Content-Length: Not found in metadata'
     self.assertTrue(etag_msg in out.getvalue())
     self.assertTrue(length_msg in out.getvalue())
Beispiel #3
0
    def test_print_obj_no_ring(self):
        no_rings_dir = os.path.join(self.testdir, 'no_rings_here')
        os.mkdir(no_rings_dir)

        out = StringIO()
        with mock.patch('sys.stdout', out):
            print_obj(self.datafile, swift_dir=no_rings_dir)
        self.assertTrue('d41d8cd98f00b204e9800998ecf8427e' in out.getvalue())
        self.assertTrue('Partition' not in out.getvalue())
Beispiel #4
0
    def test_print_obj_no_ring(self):
        no_rings_dir = os.path.join(self.testdir, 'no_rings_here')
        os.mkdir(no_rings_dir)

        out = StringIO()
        with mock.patch('sys.stdout', out):
            print_obj(self.datafile, swift_dir=no_rings_dir)
        self.assertTrue('d41d8cd98f00b204e9800998ecf8427e' in out.getvalue())
        self.assertTrue('Partition' not in out.getvalue())
Beispiel #5
0
 def test_print_obj_with_policy(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir, policy_name='one')
     etag_msg = 'ETag: Not found in metadata'
     length_msg = 'Content-Length: Not found in metadata'
     ring_loc_msg = 'ls -lah'
     self.assertTrue(etag_msg in out.getvalue())
     self.assertTrue(length_msg in out.getvalue())
     self.assertTrue(ring_loc_msg in out.getvalue())
Beispiel #6
0
 def test_print_obj_meta_and_ts_files(self):
     # verify that print_obj will also read from meta and ts files
     base = os.path.splitext(self.datafile)[0]
     for ext in ('.meta', '.ts'):
         test_file = '%s%s' % (base, ext)
         os.link(self.datafile, test_file)
         out = StringIO()
         with mock.patch('sys.stdout', out):
             print_obj(test_file, swift_dir=self.testdir)
         self.assertTrue('/objects-1/' in out.getvalue())
Beispiel #7
0
 def test_print_obj_with_policy(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir, policy_name='one')
     etag_msg = 'ETag: Not found in metadata'
     length_msg = 'Content-Length: Not found in metadata'
     ring_loc_msg = 'ls -lah'
     self.assertTrue(etag_msg in out.getvalue())
     self.assertTrue(length_msg in out.getvalue())
     self.assertTrue(ring_loc_msg in out.getvalue())
Beispiel #8
0
 def test_print_obj_meta_and_ts_files(self):
     # verify that print_obj will also read from meta and ts files
     base = os.path.splitext(self.datafile)[0]
     for ext in ('.meta', '.ts'):
         test_file = '%s%s' % (base, ext)
         os.link(self.datafile, test_file)
         out = StringIO()
         with mock.patch('sys.stdout', out):
             print_obj(test_file, swift_dir=self.testdir)
         self.assertTrue('/objects-1/' in out.getvalue())
Beispiel #9
0
    def test_invalid_etag(self):
        with open(self.datafile, 'wb') as fp:
            md = {'name': '/AUTH_admin/c/obj',
                  'Content-Type': 'application/octet-stream',
                  'ETag': 'badetag',
                  'Content-Length': 0}
            write_metadata(fp, md)

        out = StringIO()
        with mock.patch('sys.stdout', out):
            print_obj(self.datafile)
        self.assertIn('ETag: badetag doesn\'t match file hash',
                      out.getvalue())
Beispiel #10
0
    def test_invalid_etag(self):
        with open(self.datafile, 'wb') as fp:
            md = {'name': '/AUTH_admin/c/obj',
                  'Content-Type': 'application/octet-stream',
                  'ETag': 'badetag',
                  'Content-Length': 0}
            write_metadata(fp, md)

        out = StringIO()
        with mock.patch('sys.stdout', out):
            print_obj(self.datafile)
        self.assertTrue('ETag: badetag doesn\'t match file hash'
                        in out.getvalue())
Beispiel #11
0
    def test_print_obj_policy_index(self):
        # Check an output of policy index when current directory is in
        # object-* directory
        out = StringIO()
        hash_dir = os.path.dirname(self.datafile)
        file_name = os.path.basename(self.datafile)

        # Change working directory to object hash dir
        cwd = os.getcwd()
        try:
            os.chdir(hash_dir)
            with mock.patch('sys.stdout', out):
                print_obj(file_name, swift_dir=self.testdir)
        finally:
            os.chdir(cwd)
        self.assertTrue('X-Backend-Storage-Policy-Index: 1' in out.getvalue())
Beispiel #12
0
    def test_print_obj_policy_index(self):
        # Check an output of policy index when current directory is in
        # object-* directory
        out = StringIO()
        hash_dir = os.path.dirname(self.datafile)
        file_name = os.path.basename(self.datafile)

        # Change working directory to object hash dir
        cwd = os.getcwd()
        try:
            os.chdir(hash_dir)
            with mock.patch('sys.stdout', out):
                print_obj(file_name, swift_dir=self.testdir)
        finally:
            os.chdir(cwd)
        self.assertTrue('X-Backend-Storage-Policy-Index: 1' in out.getvalue())
Beispiel #13
0
    def test_print_obj_curl_command_ipv6(self):
        # Note: policy 3 has IPv6 addresses in its ring
        datafile3 = os.path.join(
            self.testdir,
            'sda', 'objects-3', '1', 'ea8',
            'db4449e025aca992307c7c804a67eea8', '1402017884.18202.data')
        utils.mkdirs(os.path.dirname(datafile3))
        with open(datafile3, 'wb') as fp:
            md = {'name': '/AUTH_admin/c/obj',
                  'Content-Type': 'application/octet-stream',
                  'ETag': 'd41d8cd98f00b204e9800998ecf8427e',
                  'Content-Length': 0}
            write_metadata(fp, md)

        object_ring = ring.Ring(self.testdir, ring_name='object-3')
        part, nodes = object_ring.get_nodes('AUTH_admin', 'c', 'obj')
        node = nodes[0]

        out = StringIO()
        hash_dir = os.path.dirname(datafile3)
        file_name = os.path.basename(datafile3)

        # Change working directory to object hash dir
        cwd = os.getcwd()
        try:
            os.chdir(hash_dir)
            with mock.patch('sys.stdout', out):
                print_obj(file_name, swift_dir=self.testdir)
        finally:
            os.chdir(cwd)

        exp_curl = (
            'curl -g -I -XHEAD '
            '"http://[{host}]:{port}'
            '/{device}/{part}/AUTH_admin/c/obj" ').format(
                host=node['ip'],
                port=node['port'],
                device=node['device'],
                part=part)
        self.assertIn(exp_curl, out.getvalue())
Beispiel #14
0
    def test_print_obj_curl_command_ipv6(self):
        # Note: policy 3 has IPv6 addresses in its ring
        datafile3 = os.path.join(
            self.testdir,
            'sda', 'objects-3', '1', 'ea8',
            'db4449e025aca992307c7c804a67eea8', '1402017884.18202.data')
        utils.mkdirs(os.path.dirname(datafile3))
        with open(datafile3, 'wb') as fp:
            md = {'name': '/AUTH_admin/c/obj',
                  'Content-Type': 'application/octet-stream',
                  'ETag': 'd41d8cd98f00b204e9800998ecf8427e',
                  'Content-Length': 0}
            write_metadata(fp, md)

        object_ring = ring.Ring(self.testdir, ring_name='object-3')
        part, nodes = object_ring.get_nodes('AUTH_admin', 'c', 'obj')
        node = nodes[0]

        out = StringIO()
        hash_dir = os.path.dirname(datafile3)
        file_name = os.path.basename(datafile3)

        # Change working directory to object hash dir
        cwd = os.getcwd()
        try:
            os.chdir(hash_dir)
            with mock.patch('sys.stdout', out):
                print_obj(file_name, swift_dir=self.testdir)
        finally:
            os.chdir(cwd)

        exp_curl = (
            'curl -g -I -XHEAD '
            '"http://[{host}]:{port}'
            '/{device}/{part}/AUTH_admin/c/obj" ').format(
                host=node['ip'],
                port=node['port'],
                device=node['device'],
                part=part)
        self.assertIn(exp_curl, out.getvalue())
Beispiel #15
0
 def test_print_obj(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir)
     self.assertTrue('/objects-1/' in out.getvalue())
Beispiel #16
0
 def test_missing_etag(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile)
     self.assertTrue('ETag: Not found in metadata' in out.getvalue())
Beispiel #17
0
 def test_valid_etag(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile)
     self.assertIn('ETag: d41d8cd98f00b204e9800998ecf8427e (valid)',
                   out.getvalue())
Beispiel #18
0
 def test_missing_etag(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile)
     self.assertTrue('ETag: Not found in metadata' in out.getvalue())
Beispiel #19
0
 def test_print_obj(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, swift_dir=self.testdir)
     self.assertTrue('/objects-1/' in out.getvalue())
Beispiel #20
0
 def test_print_obj_policy_name_mismatch(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, policy_name='two', swift_dir=self.testdir)
     ring_alert_msg = 'Warning: Ring does not match policy!'
     self.assertTrue(ring_alert_msg in out.getvalue())
Beispiel #21
0
 def test_print_obj_policy_name_mismatch(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, policy_name='two', swift_dir=self.testdir)
     ring_alert_msg = 'Warning: Ring does not match policy!'
     self.assertTrue(ring_alert_msg in out.getvalue())
Beispiel #22
0
 def test_unchecked_etag(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, check_etag=False)
     self.assertTrue('ETag: d41d8cd98f00b204e9800998ecf8427e (not checked)'
                     in out.getvalue())
Beispiel #23
0
 def test_unchecked_etag(self):
     out = StringIO()
     with mock.patch('sys.stdout', out):
         print_obj(self.datafile, check_etag=False)
     self.assertTrue('ETag: d41d8cd98f00b204e9800998ecf8427e (not checked)'
                     in out.getvalue())