예제 #1
0
 def testUploadArtifactsMissingType(self):
     """Tests that the type information is used for validation."""
     data = {
         'artifact_type_info': {
             'log': 'text/plain'
         },
         'tests': {
             'foo': {
                 'actual': 'PASS',
                 'expected': 'PASS',
                 'artifacts': {
                     'screenshot': 'foo.png',
                 }
             }
         }
     }
     with self.assertRaises(ValueError):
         UTRA.upload_artifacts(data, '/tmp', True)
예제 #2
0
    def testUploadArtifactsBasic(self, exists_patch, copy_patch, rmtree_patch,
                                 mkd_patch, digest_patch):
        """Upload a single artifact."""
        mkd_patch.return_value = 'foo_dir'
        exists_patch.return_value = False
        digest_patch.return_value = 'deadbeef'

        data = {
            'artifact_type_info': {
                'log': 'text/plain'
            },
            'tests': {
                'foo': {
                    'actual': 'PASS',
                    'expected': 'PASS',
                    'artifacts': {
                        'log': 'foo.txt',
                    }
                }
            }
        }
        self.assertEqual(
            upload_test_result_artifacts.upload_artifacts(
                data, '/tmp', True, 'test-bucket'), {
                    'artifact_type_info': {
                        'log': 'text/plain'
                    },
                    'tests': {
                        'foo': {
                            'actual': 'PASS',
                            'expected': 'PASS',
                            'artifacts': {
                                'log': 'deadbeef',
                            }
                        }
                    },
                    'artifact_permanent_location':
                    'gs://chromium-test-artifacts/sha1',
                })
        mkd_patch.assert_called_once_with(prefix='upload_test_artifacts')
        digest_patch.assert_called_once_with('/tmp/foo.txt')
        copy_patch.assert_called_once_with('/tmp/foo.txt', 'foo_dir/deadbeef')
        rmtree_patch.assert_called_once_with('foo_dir')
예제 #3
0
 def testUploadArtifactsNoUpload(self, copy_patch, rmtree_patch, mkd_patch,
                                 digest_patch):
     """Simple test; no artifacts, so data shouldn't change."""
     mkd_patch.return_value = 'foo_dir'
     data = {
         'artifact_type_info': {
             'log': 'text/plain'
         },
         'tests': {
             'foo': {
                 'actual': 'PASS',
                 'expected': 'PASS',
             }
         }
     }
     self.assertEqual(UTRA.upload_artifacts(data, '/tmp', True), data)
     mkd_patch.assert_called_once_with(prefix='upload_test_artifacts')
     digest_patch.assert_not_called()
     copy_patch.assert_not_called()
     rmtree_patch.assert_called_once_with('foo_dir')
예제 #4
0
 def _loadTest(self, json_data, upload):
     return UTRA.upload_artifacts(json_data, '/tmp', upload)
예제 #5
0
    def testUploadArtifactsComplex(self, exists_patch, copy_patch,
                                   rmtree_patch, mkd_patch, digest_patch):
        """Upload multiple artifacts."""
        mkd_patch.return_value = 'foo_dir'
        exists_patch.return_value = False
        digest_patch.side_effect = [
            'deadbeef1', 'deadbeef2', 'deadbeef3', 'deadbeef4'
        ]

        data = {
            'artifact_type_info': {
                'log': 'text/plain',
                'screenshot': 'image/png',
            },
            'tests': {
                'bar': {
                    'baz': {
                        'actual': 'PASS',
                        'expected': 'PASS',
                        'artifacts': {
                            'log': 'baz.log.txt',
                            'screenshot': 'baz.png',
                        }
                    }
                },
                'foo': {
                    'actual': 'PASS',
                    'expected': 'PASS',
                    'artifacts': {
                        'log': 'foo.log.txt',
                        'screenshot': 'foo.png',
                    }
                },
            }
        }
        self.assertEqual(
            UTRA.upload_artifacts(data, '/tmp', True), {
                'artifact_type_info': {
                    'log': 'text/plain',
                    'screenshot': 'image/png',
                },
                'tests': {
                    'bar': {
                        'baz': {
                            'actual': 'PASS',
                            'expected': 'PASS',
                            'artifacts': {
                                'log': 'deadbeef1',
                                'screenshot': 'deadbeef2',
                            }
                        }
                    },
                    'foo': {
                        'actual': 'PASS',
                        'expected': 'PASS',
                        'artifacts': {
                            'log': 'deadbeef3',
                            'screenshot': 'deadbeef4',
                        }
                    },
                },
                'artifact_permanent_location':
                'gs://chromium-test-artifacts/sha1',
            })
        mkd_patch.assert_called_once_with(prefix='upload_test_artifacts')
        digest_patch.assert_has_calls([
            mock.call('/tmp/baz.log.txt'),
            mock.call('/tmp/baz.png'),
            mock.call('/tmp/foo.log.txt'),
            mock.call('/tmp/foo.png')
        ])
        copy_patch.assert_has_calls([
            mock.call('/tmp/baz.log.txt', 'foo_dir/deadbeef1'),
            mock.call('/tmp/baz.png', 'foo_dir/deadbeef2'),
            mock.call('/tmp/foo.log.txt', 'foo_dir/deadbeef3'),
            mock.call('/tmp/foo.png', 'foo_dir/deadbeef4'),
        ])
        rmtree_patch.assert_called_once_with('foo_dir')
예제 #6
0
 def _loadTest(self, json_data, upload):
     return upload_test_result_artifacts.upload_artifacts(
         json_data, '/tmp', upload, 'test-bucket')